diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
commit | 26267c03445266233159b2f61bbc3a4d5864c01a (patch) | |
tree | 8b7536d8f41fea63adc180d56830a73aae1192ad /src/shared/cplusplus/Control.cpp | |
parent | a9b521f80af025ac11f9735fc070606952894b60 (diff) | |
download | qt-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.cpp | 47 |
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 |