Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ParseNode.h

    r5721a6d r630a82a  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  1 13:32:32 2016
    13 // Update Count     : 184
     12// Last Modified On : Fri Apr  8 16:27:20 2016
     13// Update Count     : 205
    1414//
    1515
     
    329329        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    330330        enum Modifier  { Signed, Unsigned, Short, Long };
    331         enum Aggregate { Struct, Union, Context };
     331        enum Aggregate { Struct, Union, Trait };
    332332        enum TypeClass { Type, Dtype, Ftype };
     333        enum BuiltinType { Valist };
    333334
    334335        static const char *storageName[]; 
     
    338339        static const char *aggregateName[];
    339340        static const char *typeClassName[];
     341        static const char *builtinTypeName[];
    340342
    341343        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
     
    352354        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    353355        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    354         static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
    355         static DeclarationNode *newContextUse( std::string *name, ExpressionNode *params );
     356        static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     357        static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params );
    356358        static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams );
    357359        static DeclarationNode *newPointer( DeclarationNode *qualifiers );
     
    363365        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
    364366        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
     367        static DeclarationNode *newBuiltinType( BuiltinType );
    365368
    366369        DeclarationNode *addQualifiers( DeclarationNode *);
     
    401404        LinkageSpec::Type get_linkage() const { return linkage; }
    402405        DeclarationNode *extractAggregate() const;
     406        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
    403407
    404408        DeclarationNode();
     
    413417        std::list< std::string > attributes;
    414418        ExpressionNode *bitfieldWidth;
     419        ExpressionNode *enumeratorValue;
    415420        InitializerNode *initializer;
    416421        bool hasEllipsis;
     
    530535        bool aggregate;
    531536        ExpressionNode *designator; // may be list
     537        InitializerNode *kids;
     538};
     539
     540class CompoundLiteralNode : public ExpressionNode {
     541  public:
     542        CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
     543        CompoundLiteralNode( const CompoundLiteralNode &type );
     544        ~CompoundLiteralNode();
     545
     546        virtual CompoundLiteralNode *clone() const;
     547
     548        DeclarationNode *get_type() const { return type; }
     549        CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
     550
     551        InitializerNode *get_initializer() const { return kids; }
     552        CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
     553
     554        void print( std::ostream &, int indent = 0 ) const;
     555        void printOneLine( std::ostream &, int indent = 0 ) const;
     556
     557        virtual Expression *build() const;
     558  private:
     559        DeclarationNode *type;
    532560        InitializerNode *kids;
    533561};
Note: See TracChangeset for help on using the changeset viewer.