diff options
Diffstat (limited to 'qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java')
-rw-r--r-- | qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java index 9a050d5b638..0f5b83d3faf 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/index/QObject.java @@ -14,10 +14,12 @@ import java.util.Map; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.qt.core.index.IQEnum; +import org.eclipse.cdt.qt.core.index.IQMethod; import org.eclipse.cdt.qt.core.index.IQObject; import org.eclipse.cdt.qt.core.index.IQProperty; import org.eclipse.cdt.qt.internal.core.pdom.QtPDOMProperty; import org.eclipse.cdt.qt.internal.core.pdom.QtPDOMQEnum; +import org.eclipse.cdt.qt.internal.core.pdom.QtPDOMQMethod; import org.eclipse.cdt.qt.internal.core.pdom.QtPDOMQObject; import org.eclipse.core.runtime.CoreException; @@ -26,6 +28,9 @@ public class QObject implements IQObject { private final String name; private final QtPDOMQObject pdomQObject; private final List<IQObject> bases; + private final IQObject.IMembers<IQMethod> slots; + private final IQObject.IMembers<IQMethod> signals; + private final IQObject.IMembers<IQMethod> invokables; private final IQObject.IMembers<IQProperty> properties; private final List<IQEnum> enums; private final Map<String, String> classInfos; @@ -34,6 +39,9 @@ public class QObject implements IQObject { this.name = pdomQObject.getName(); this.pdomQObject = pdomQObject; + List<IQMethod> baseSlots = new ArrayList<IQMethod>(); + List<IQMethod> baseSignals = new ArrayList<IQMethod>(); + List<IQMethod> baseInvokables = new ArrayList<IQMethod>(); List<IQProperty> baseProps = new ArrayList<IQProperty>(); this.bases = new ArrayList<IQObject>(); @@ -45,13 +53,35 @@ public class QObject implements IQObject { this.classInfos = pdomQObject.getClassInfos(); + List<IQMethod> slots = new ArrayList<IQMethod>(); + List<IQMethod> signals = new ArrayList<IQMethod>(); + List<IQMethod> invokables = new ArrayList<IQMethod>(); + for(QtPDOMQMethod pdom : pdomQObject.getChildren(QtPDOMQMethod.class)) + switch(pdom.getKind()) { + case Slot: + slots.add(new QMethod(this, pdom)); + break; + case Signal: + signals.add(new QMethod(this, pdom)); + break; + case Invokable: + invokables.add(new QMethod(this, pdom)); + break; + case Unspecified: + break; + } + + this.slots = QObjectMembers.create(slots, baseSlots); + this.signals = QObjectMembers.create(signals, baseSignals); + this.invokables = QObjectMembers.create(invokables, baseInvokables); + this.enums = new ArrayList<IQEnum>(); - for(QtPDOMQEnum pdom : pdomQObject.getFields(QtPDOMQEnum.class)) + for(QtPDOMQEnum pdom : pdomQObject.getChildren(QtPDOMQEnum.class)) this.enums.add(new QEnum(pdom.getName(), pdom.isFlag(), pdom.getEnumerators())); List<IQProperty> props = new ArrayList<IQProperty>(); - for(QtPDOMProperty pdom : pdomQObject.getFields(QtPDOMProperty.class)) { - QProperty qProp = new QProperty(this, pdom.getTypeStr(), pdom.getName()); + for(QtPDOMProperty pdom : pdomQObject.getChildren(QtPDOMProperty.class)) { + QProperty qProp = new QProperty(this, pdom.getType(), pdom.getName()); for(QtPDOMProperty.Attribute attr : pdom.getAttributes()) qProp.setAttribute(attr.attr, attr.value); props.add(qProp); @@ -75,6 +105,21 @@ public class QObject implements IQObject { } @Override + public IMembers<IQMethod> getSlots() { + return slots; + } + + @Override + public IMembers<IQMethod> getSignals() { + return signals; + } + + @Override + public IMembers<IQMethod> getInvokables() { + return invokables; + } + + @Override public IQObject.IMembers<IQProperty> getProperties() { return properties; } |