C++11: Add alignof() expression.

Change-Id: Id3fb30b9a16ea724bab0d5b05e8cbddb0064e6eb
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Christian Kamm
2012-09-17 13:47:18 +02:00
committed by hjk
parent 1aed32d866
commit ecd54059d3
14 changed files with 149 additions and 0 deletions

View File

@@ -125,6 +125,7 @@ public:
virtual AST *clone(MemoryPool *pool) const = 0;
virtual AccessDeclarationAST *asAccessDeclaration() { return 0; }
virtual AlignofExpressionAST *asAlignofExpression() { return 0; }
virtual ArrayAccessAST *asArrayAccess() { return 0; }
virtual ArrayDeclaratorAST *asArrayDeclarator() { return 0; }
virtual ArrayInitializerAST *asArrayInitializer() { return 0; }
@@ -3026,6 +3027,34 @@ protected:
virtual bool match0(AST *, ASTMatcher *);
};
class CPLUSPLUS_EXPORT AlignofExpressionAST: public ExpressionAST
{
public:
unsigned alignof_token;
unsigned lparen_token;
TypeIdAST *typeId;
unsigned rparen_token;
public:
AlignofExpressionAST()
: alignof_token(0)
, lparen_token(0)
, typeId(0)
, rparen_token(0)
{}
virtual AlignofExpressionAST *asAlignofExpression() { return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual AlignofExpressionAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
virtual bool match0(AST *, ASTMatcher *);
};
class CPLUSPLUS_EXPORT PointerLiteralAST: public ExpressionAST
{
public: