Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java51
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;
}

Back to the top