diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp index 4e6ea089b8c27bc3c1b6f5d3f8a9eead5d8cbd9c..79eafaa0cff0d1a825847a8079e0899dbe7f6c18 100644 --- a/src/shared/cplusplus/Control.cpp +++ b/src/shared/cplusplus/Control.cpp @@ -66,16 +66,20 @@ static void delete_map_entries(_Iterator first, _Iterator last) delete first->second; } +template <typename _Iterator> +static void delete_array_entries(_Iterator first, _Iterator last) +{ + for (; first != last; ++first) + delete *first; +} + template <typename _Map> static void delete_map_entries(const _Map &m) { delete_map_entries(m.begin(), m.end()); } template <typename _Array> static void delete_array_entries(const _Array &a) -{ - for (unsigned i = 0; i < a.size(); ++i) - delete a.at(i); -} +{ delete_array_entries(a.begin(), a.end()); } class Control::Data { @@ -515,16 +519,16 @@ public: // types VoidType voidType; - Array<IntegerType *> integerTypes; - Array<FloatType *> floatTypes; - Array<PointerToMemberType *> pointerToMemberTypes; - Array<PointerType *> pointerTypes; - Array<ReferenceType *> referenceTypes; - Array<ArrayType *> arrayTypes; - Array<NamedType *> namedTypes; + std::vector<IntegerType *> integerTypes; + std::vector<FloatType *> floatTypes; + std::vector<PointerToMemberType *> pointerToMemberTypes; + std::vector<PointerType *> pointerTypes; + std::vector<ReferenceType *> referenceTypes; + std::vector<ArrayType *> arrayTypes; + std::vector<NamedType *> namedTypes; // symbols - Array<Symbol *> symbols; + std::vector<Symbol *> symbols; // ObjC context keywords: Identifier *objcGetterId;