diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp index a8f988e14a82ad103607e4e44fdc76c14ca8b950..4e6ea089b8c27bc3c1b6f5d3f8a9eead5d8cbd9c 100644 --- a/src/shared/cplusplus/Control.cpp +++ b/src/shared/cplusplus/Control.cpp @@ -70,19 +70,8 @@ template <typename _Map> static void delete_map_entries(const _Map &m) { delete_map_entries(m.begin(), m.end()); } -template <typename _Iterator> -static void delete_array_entries(_Iterator first, _Iterator last) -{ - for (; first != last; ++first) - delete *first; -} - template <typename _Array> static void delete_array_entries(const _Array &a) -{ delete_array_entries(a.begin(), a.end()); } - -template <typename _Tp> -static void delete_array_entries(const Array<_Tp> &a) { for (unsigned i = 0; i < a.size(); ++i) delete a.at(i); @@ -117,25 +106,7 @@ public: delete_array_entries(namedTypes); // symbols - delete_array_entries(declarations); - delete_array_entries(arguments); - delete_array_entries(functions); - delete_array_entries(baseClasses); - delete_array_entries(blocks); - delete_array_entries(classes); - delete_array_entries(namespaces); - delete_array_entries(usingNamespaceDirectives); - delete_array_entries(enums); - delete_array_entries(usingDeclarations); - delete_array_entries(classForwardDeclarations); - delete_array_entries(objcBaseClasses); - delete_array_entries(objcBaseProtocols); - delete_array_entries(objcClasses); - delete_array_entries(objcProtocols); - delete_array_entries(objcForwardClassDeclarations); - delete_array_entries(objcForwardProtocolDeclarations); - delete_array_entries(objcMethods); - delete_array_entries(objcPropertyDeclarations); + delete_array_entries(symbols); } NameId *findOrInsertNameId(Identifier *id) @@ -313,7 +284,7 @@ public: { Declaration *declaration = new Declaration(translationUnit, sourceLocation, name); - declarations.push_back(declaration); + symbols.push_back(declaration); return declaration; } @@ -321,7 +292,7 @@ public: { Argument *argument = new Argument(translationUnit, sourceLocation, name); - arguments.push_back(argument); + symbols.push_back(argument); return argument; } @@ -329,7 +300,7 @@ public: { Function *function = new Function(translationUnit, sourceLocation, name); - functions.push_back(function); + symbols.push_back(function); return function; } @@ -337,14 +308,14 @@ public: { BaseClass *baseClass = new BaseClass(translationUnit, sourceLocation, name); - baseClasses.push_back(baseClass); + symbols.push_back(baseClass); return baseClass; } Block *newBlock(unsigned sourceLocation) { Block *block = new Block(translationUnit, sourceLocation); - blocks.push_back(block); + symbols.push_back(block); return block; } @@ -352,7 +323,7 @@ public: { Class *klass = new Class(translationUnit, sourceLocation, name); - classes.push_back(klass); + symbols.push_back(klass); return klass; } @@ -360,7 +331,7 @@ public: { Namespace *ns = new Namespace(translationUnit, sourceLocation, name); - namespaces.push_back(ns); + symbols.push_back(ns); return ns; } @@ -368,7 +339,7 @@ public: { UsingNamespaceDirective *u = new UsingNamespaceDirective(translationUnit, sourceLocation, name); - usingNamespaceDirectives.push_back(u); + symbols.push_back(u); return u; } @@ -376,63 +347,63 @@ public: { ForwardClassDeclaration *c = new ForwardClassDeclaration(translationUnit, sourceLocation, name); - classForwardDeclarations.push_back(c); + symbols.push_back(c); return c; } ObjCBaseClass *newObjCBaseClass(unsigned sourceLocation, Name *name) { ObjCBaseClass *c = new ObjCBaseClass(translationUnit, sourceLocation, name); - objcBaseClasses.push_back(c); + symbols.push_back(c); return c; } ObjCBaseProtocol *newObjCBaseProtocol(unsigned sourceLocation, Name *name) { ObjCBaseProtocol *p = new ObjCBaseProtocol(translationUnit, sourceLocation, name); - objcBaseProtocols.push_back(p); + symbols.push_back(p); return p; } ObjCClass *newObjCClass(unsigned sourceLocation, Name *name) { ObjCClass *c = new ObjCClass(translationUnit, sourceLocation, name); - objcClasses.push_back(c); + symbols.push_back(c); return c; } ObjCForwardClassDeclaration *newObjCForwardClassDeclaration(unsigned sourceLocation, Name *name) { ObjCForwardClassDeclaration *fwd = new ObjCForwardClassDeclaration(translationUnit, sourceLocation, name); - objcForwardClassDeclarations.push_back(fwd); + symbols.push_back(fwd); return fwd; } ObjCProtocol *newObjCProtocol(unsigned sourceLocation, Name *name) { ObjCProtocol *p = new ObjCProtocol(translationUnit, sourceLocation, name); - objcProtocols.push_back(p); + symbols.push_back(p); return p; } ObjCForwardProtocolDeclaration *newObjCForwardProtocolDeclaration(unsigned sourceLocation, Name *name) { ObjCForwardProtocolDeclaration *fwd = new ObjCForwardProtocolDeclaration(translationUnit, sourceLocation, name); - objcForwardProtocolDeclarations.push_back(fwd); + symbols.push_back(fwd); return fwd; } ObjCMethod *newObjCMethod(unsigned sourceLocation, Name *name) { ObjCMethod *method = new ObjCMethod(translationUnit, sourceLocation, name); - objcMethods.push_back(method); + symbols.push_back(method); return method; } ObjCPropertyDeclaration *newObjCPropertyDeclaration(unsigned sourceLocation, Name *name) { ObjCPropertyDeclaration *decl = new ObjCPropertyDeclaration(translationUnit, sourceLocation, name); - objcPropertyDeclarations.push_back(decl); + symbols.push_back(decl); return decl; } @@ -440,7 +411,7 @@ public: { Enum *e = new Enum(translationUnit, sourceLocation, name); - enums.push_back(e); + symbols.push_back(e); return e; } @@ -448,7 +419,7 @@ public: { UsingDeclaration *u = new UsingDeclaration(translationUnit, sourceLocation, name); - usingDeclarations.push_back(u); + symbols.push_back(u); return u; } @@ -553,25 +524,7 @@ public: Array<NamedType *> namedTypes; // symbols - Array<Declaration *> declarations; - Array<Argument *> arguments; - Array<Function *> functions; - Array<BaseClass *> baseClasses; - Array<Block *> blocks; - Array<Class *> classes; - Array<Namespace *> namespaces; - Array<UsingNamespaceDirective *> usingNamespaceDirectives; - Array<Enum *> enums; - Array<UsingDeclaration *> usingDeclarations; - Array<ForwardClassDeclaration *> classForwardDeclarations; - Array<ObjCBaseClass *> objcBaseClasses; - Array<ObjCBaseProtocol *> objcBaseProtocols; - Array<ObjCClass *> objcClasses; - Array<ObjCProtocol *> objcProtocols; - Array<ObjCForwardClassDeclaration *> objcForwardClassDeclarations; - Array<ObjCForwardProtocolDeclaration *> objcForwardProtocolDeclarations; - Array<ObjCMethod *> objcMethods; - Array<ObjCPropertyDeclaration *> objcPropertyDeclarations; + Array<Symbol *> symbols; // ObjC context keywords: Identifier *objcGetterId;