summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Control.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-07-28 16:34:15 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-07-28 16:34:15 +0200
commit26267c03445266233159b2f61bbc3a4d5864c01a (patch)
tree8b7536d8f41fea63adc180d56830a73aae1192ad /src/shared/cplusplus/Control.cpp
parenta9b521f80af025ac11f9735fc070606952894b60 (diff)
downloadqt-creator-26267c03445266233159b2f61bbc3a4d5864c01a.tar.gz
Improved ObjC parsing, and added semantic checks.
Diffstat (limited to 'src/shared/cplusplus/Control.cpp')
-rw-r--r--src/shared/cplusplus/Control.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp
index fe94d79d82..49f965f7da 100644
--- a/src/shared/cplusplus/Control.cpp
+++ b/src/shared/cplusplus/Control.cpp
@@ -121,6 +121,10 @@ public:
delete_array_entries(enums);
delete_array_entries(usingDeclarations);
delete_array_entries(classForwardDeclarations);
+ delete_array_entries(objcClasses);
+ delete_array_entries(objcProtocols);
+ delete_array_entries(objcForwardClassDeclarations);
+ delete_array_entries(objcForwardProtocolDeclarations);
}
NameId *findOrInsertNameId(Identifier *id)
@@ -327,6 +331,34 @@ public:
return c;
}
+ ObjCClass *newObjCClass(unsigned sourceLocation, Name *name)
+ {
+ ObjCClass *c = new ObjCClass(translationUnit, sourceLocation, name);
+ objcClasses.push_back(c);
+ return c;
+ }
+
+ ObjCForwardClassDeclaration *newObjCForwardClassDeclaration(unsigned sourceLocation, Name *name)
+ {
+ ObjCForwardClassDeclaration *fwd = new ObjCForwardClassDeclaration(translationUnit, sourceLocation, name);
+ objcForwardClassDeclarations.push_back(fwd);
+ return fwd;
+ }
+
+ ObjCProtocol *newObjCProtocol(unsigned sourceLocation, Name *name)
+ {
+ ObjCProtocol *p = new ObjCProtocol(translationUnit, sourceLocation, name);
+ objcProtocols.push_back(p);
+ return p;
+ }
+
+ ObjCForwardProtocolDeclaration *newObjCForwardProtocolDeclaration(unsigned sourceLocation, Name *name)
+ {
+ ObjCForwardProtocolDeclaration *fwd = new ObjCForwardProtocolDeclaration(translationUnit, sourceLocation, name);
+ objcForwardProtocolDeclarations.push_back(fwd);
+ return fwd;
+ }
+
Enum *newEnum(unsigned sourceLocation, Name *name)
{
Enum *e = new Enum(translationUnit,
@@ -482,6 +514,10 @@ public:
std::vector<Enum *> enums;
std::vector<UsingDeclaration *> usingDeclarations;
std::vector<ForwardClassDeclaration *> classForwardDeclarations;
+ std::vector<ObjCClass *> objcClasses;
+ std::vector<ObjCProtocol *> objcProtocols;
+ std::vector<ObjCForwardClassDeclaration *> objcForwardClassDeclarations;
+ std::vector<ObjCForwardProtocolDeclaration *> objcForwardProtocolDeclarations;
};
Control::Control()
@@ -638,5 +674,16 @@ ForwardClassDeclaration *Control::newForwardClassDeclaration(unsigned sourceLoca
Name *name)
{ return d->newForwardClassDeclaration(sourceLocation, name); }
+ObjCClass *Control::newObjCClass(unsigned sourceLocation, Name *name)
+{ return d->newObjCClass(sourceLocation, name); }
+
+ObjCForwardClassDeclaration *Control::newObjCForwardClassDeclaration(unsigned sourceLocation, Name *name)
+{ return d->newObjCForwardClassDeclaration(sourceLocation, name); }
+
+ObjCProtocol *Control::newObjCProtocol(unsigned sourceLocation, Name *name)
+{ return d->newObjCProtocol(sourceLocation, name); }
+
+ObjCForwardProtocolDeclaration *Control::newObjCForwardProtocolDeclaration(unsigned sourceLocation, Name *name)
+{ return d->newObjCForwardProtocolDeclaration(sourceLocation, name); }
CPLUSPLUS_END_NAMESPACE