summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Control.cpp')
-rw-r--r--src/shared/cplusplus/Control.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp
index e44d84a1ae..7f5fd273ca 100644
--- a/src/shared/cplusplus/Control.cpp
+++ b/src/shared/cplusplus/Control.cpp
@@ -51,7 +51,6 @@
// THE SOFTWARE.
#include "Control.h"
-#include "MemoryPool.h"
#include "Literals.h"
#include "LiteralTable.h"
#include "TranslationUnit.h"
@@ -125,6 +124,7 @@ public:
delete_array_entries(usingNamespaceDirectives);
delete_array_entries(enums);
delete_array_entries(usingDeclarations);
+ delete_array_entries(classForwardDeclarations);
}
NameId *findOrInsertNameId(Identifier *id)
@@ -323,6 +323,14 @@ public:
return u;
}
+ ForwardClassDeclaration *newForwardClassDeclaration(unsigned sourceLocation, Name *name)
+ {
+ ForwardClassDeclaration *c = new ForwardClassDeclaration(translationUnit,
+ sourceLocation, name);
+ classForwardDeclarations.push_back(c);
+ return c;
+ }
+
Enum *newEnum(unsigned sourceLocation, Name *name)
{
Enum *e = new Enum(translationUnit,
@@ -478,6 +486,7 @@ public:
std::vector<UsingNamespaceDirective *> usingNamespaceDirectives;
std::vector<Enum *> enums;
std::vector<UsingDeclaration *> usingDeclarations;
+ std::vector<ForwardClassDeclaration *> classForwardDeclarations;
};
Control::Control()
@@ -633,4 +642,9 @@ UsingNamespaceDirective *Control::newUsingNamespaceDirective(unsigned sourceLoca
UsingDeclaration *Control::newUsingDeclaration(unsigned sourceLocation, Name *name)
{ return d->newUsingDeclaration(sourceLocation, name); }
+ForwardClassDeclaration *Control::newForwardClassDeclaration(unsigned sourceLocation,
+ Name *name)
+{ return d->newForwardClassDeclaration(sourceLocation, name); }
+
+
CPLUSPLUS_END_NAMESPACE