Added support to C++ symbols rewriting.

This should simplify full C++ template instantiations.

Reviewed-by: Christian Kamm
This commit is contained in:
Roberto Raggi
2011-03-28 13:21:37 +02:00
parent 670d241288
commit 9608af7ad2
13 changed files with 930 additions and 3 deletions

View File

@@ -28,6 +28,7 @@
#include "SymbolVisitor.h"
#include "NameVisitor.h"
#include "Scope.h"
#include "Templates.h"
#include <cassert>
using namespace CPlusPlus;
@@ -102,6 +103,24 @@ Symbol::Symbol(TranslationUnit *translationUnit, unsigned sourceLocation, const
setName(name);
}
Symbol::Symbol(Clone *clone, Subst *subst, Symbol *original)
: _name(clone->name(original->_name, subst)),
_scope(0),
_next(0),
_fileId(clone->control()->stringLiteral(original->fileName(), original->fileNameLength())),
_sourceLocation(original->_sourceLocation),
_hashCode(original->_hashCode),
_storage(original->_storage),
_visibility(original->_visibility),
_index(0),
_line(original->_line),
_column(original->_column),
_isGenerated(original->_isGenerated),
_isDeprecated(original->_isDeprecated),
_isUnavailable(original->_isUnavailable)
{
}
Symbol::~Symbol()
{ }