1// 2// Copyright (C) 2005 Stefan Seefeld 3// All rights reserved. 4// Licensed to the public under the terms of the GNU LGPL (>= 2), 5// see the file COPYING for details. 6// 7#ifndef Synopsis_PTree_NodesFwd_hh_ 8#define Synopsis_PTree_NodesFwd_hh_ 9 10#include <Synopsis/Token.hh> 11 12namespace Synopsis 13{ 14namespace PTree 15{ 16 17class Node; 18class Atom; 19class List; 20class Literal; 21class CommentedAtom; 22class DupAtom; 23class Identifier; 24class Keyword; 25template <Token::Type> class KeywordT; 26 27namespace Kwd 28{ 29typedef KeywordT<Token::AUTO> Auto; 30typedef KeywordT<Token::BOOLEAN> Bool; 31typedef KeywordT<Token::BREAK> Break; 32typedef KeywordT<Token::CASE> Case; 33typedef KeywordT<Token::CATCH> Catch; 34typedef KeywordT<Token::CHAR> Char; 35typedef KeywordT<Token::CLASS> Class; 36typedef KeywordT<Token::CONTINUE> Continue; 37typedef KeywordT<Token::CONST> Const; 38typedef KeywordT<Token::DEFAULT> Default; 39typedef KeywordT<Token::DELETE> Delete; 40typedef KeywordT<Token::DOUBLE> Double; 41typedef KeywordT<Token::DO> Do; 42typedef KeywordT<Token::ELSE> Else; 43typedef KeywordT<Token::ENUM> Enum; 44typedef KeywordT<Token::EXTERN> Extern; 45typedef KeywordT<Token::FLOAT> Float; 46typedef KeywordT<Token::FOR> For; 47typedef KeywordT<Token::FRIEND> Friend; 48typedef KeywordT<Token::GOTO> Goto; 49typedef KeywordT<Token::INLINE> Inline; 50typedef KeywordT<Token::IF> If; 51typedef KeywordT<Token::INT> Int; 52typedef KeywordT<Token::LONG> Long; 53typedef KeywordT<Token::MUTABLE> Mutable; 54typedef KeywordT<Token::NAMESPACE> Namespace; 55typedef KeywordT<Token::NEW> New; 56typedef KeywordT<Token::OPERATOR> Operator; 57typedef KeywordT<Token::PRIVATE> Private; 58typedef KeywordT<Token::PROTECTED> Protected; 59typedef KeywordT<Token::PUBLIC> Public; 60typedef KeywordT<Token::REGISTER> Register; 61typedef KeywordT<Token::RETURN> Return; 62typedef KeywordT<Token::SHORT> Short; 63typedef KeywordT<Token::SIGNED> Signed; 64typedef KeywordT<Token::STATIC> Static; 65typedef KeywordT<Token::STRUCT> Struct; 66typedef KeywordT<Token::SWITCH> Switch; 67typedef KeywordT<Token::TEMPLATE> Template; 68typedef KeywordT<Token::THIS> This; 69typedef KeywordT<Token::THROW> Throw; 70typedef KeywordT<Token::TRY> Try; 71typedef KeywordT<Token::TYPEDEF> Typedef; 72typedef KeywordT<Token::TYPENAME> Typename; 73typedef KeywordT<Token::TYPEOF> Typeof; 74typedef KeywordT<Token::UNION> Union; 75typedef KeywordT<Token::UNSIGNED> Unsigned; 76typedef KeywordT<Token::USING> Using; 77typedef KeywordT<Token::VIRTUAL> Virtual; 78typedef KeywordT<Token::VOID> Void; 79typedef KeywordT<Token::VOLATILE> Volatile; 80typedef KeywordT<Token::WCHAR> WChar; 81typedef KeywordT<Token::WHILE> While; 82} 83 84class Brace; 85class Block; 86class ClassBody; 87class Typedef; 88class TemplateDecl; 89class TemplateInstantiation; 90class ExternTemplate; 91class MetaclassDecl; 92class LinkageSpec; 93class NamespaceSpec; 94class NamespaceAlias; 95class UsingDirective; 96class Declaration; 97class FunctionDefinition; 98class ParameterDeclaration; 99class UsingDeclaration; 100class Declarator; 101class Name; 102class FstyleCastExpr; 103class ClassSpec; 104class EnumSpec; 105class TypeParameter; 106class AccessSpec; 107class AccessDecl; 108class UserAccessSpec; 109class IfStatement; 110class SwitchStatement; 111class WhileStatement; 112class DoStatement; 113class ForStatement; 114class TryStatement; 115class BreakStatement; 116class ContinueStatement; 117class ReturnStatement; 118class GotoStatement; 119class CaseStatement; 120class DefaultStatement; 121class LabelStatement; 122class ExprStatement; 123class Expression; 124class AssignExpr; 125class CondExpr; 126class InfixExpr; 127class PmExpr; 128class CastExpr; 129class UnaryExpr; 130class ThrowExpr; 131class SizeofExpr; 132class OffsetofExpr; 133class TypeidExpr; 134class TypeofExpr; 135class NewExpr; 136class DeleteExpr; 137class ArrayExpr; 138class FuncallExpr; 139class PostfixExpr; 140class DotMemberExpr; 141class ArrowMemberExpr; 142class ParenExpr; 143 144} 145} 146 147#endif