Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Declaration.h

    r07de76b re67991f  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:11:22 2019
    13 // Update Count     : 157
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Thr May  2 10:47:00 2019
     13// Update Count     : 135
    1414//
    1515
     
    2424#include "BaseSyntaxNode.h"      // for BaseSyntaxNode
    2525#include "Mutator.h"             // for Mutator
    26 #include "LinkageSpec.h"         // for Spec, Cforall
     26#include "Parser/LinkageSpec.h"  // for Spec, Cforall
     27#include "Parser/ParseNode.h"    // for DeclarationNode, DeclarationNode::Ag...
    2728#include "SynTree.h"             // for UniqueId
    2829#include "SynTree/Type.h"        // for Type, Type::StorageClasses, Type::Fu...
     
    4344        bool extension = false;
    4445
    45         Declaration( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
    46         Declaration( const Declaration & other );
     46        Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
     47        Declaration( const Declaration &other );
    4748        virtual ~Declaration();
    4849
    49         const std::string & get_name() const { return name; }
     50        const std::string &get_name() const { return name; }
    5051        void set_name( std::string newValue ) { name = newValue; }
    5152
     
    5859
    5960        bool get_extension() const { return extension; }
    60         Declaration * set_extension( bool exten ) { extension = exten; return this; }
     61        Declaration *set_extension( bool exten ) { extension = exten; return this; }
    6162
    6263        void fixUniqueId( void );
    63         virtual Declaration * clone() const override = 0;
     64        virtual Declaration *clone() const override = 0;
    6465        virtual void accept( Visitor & v ) override = 0;
    6566        virtual void accept( Visitor & v ) const override = 0;
    66         virtual Declaration * acceptMutator( Mutator & m ) override = 0;
    67         virtual void print( std::ostream & os, Indenter indent = {} ) const override = 0;
    68         virtual void printShort( std::ostream & os, Indenter indent = {} ) const = 0;
     67        virtual Declaration *acceptMutator( Mutator &m ) override = 0;
     68        virtual void print( std::ostream &os, Indenter indent = {} ) const override = 0;
     69        virtual void printShort( std::ostream &os, Indenter indent = {} ) const = 0;
    6970
    7071        UniqueId uniqueId;
     
    8081        int scopeLevel = 0;
    8182
    82         Expression * asmName;
     83        Expression *asmName;
    8384        std::list< Attribute * > attributes;
    8485        bool isDeleted = false;
    8586
    86         DeclarationWithType( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
    87         DeclarationWithType( const DeclarationWithType & other );
     87        DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
     88        DeclarationWithType( const DeclarationWithType &other );
    8889        virtual ~DeclarationWithType();
    8990
     
    9697        DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
    9798
    98         Expression * get_asmName() const { return asmName; }
    99         DeclarationWithType * set_asmName( Expression * newValue ) { asmName = newValue; return this; }
     99        Expression *get_asmName() const { return asmName; }
     100        DeclarationWithType * set_asmName( Expression *newValue ) { asmName = newValue; return this; }
    100101
    101102        std::list< Attribute * >& get_attributes() { return attributes; }
     
    105106        //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
    106107
    107         virtual DeclarationWithType * clone() const override = 0;
    108         virtual DeclarationWithType * acceptMutator( Mutator & m )  override = 0;
     108        virtual DeclarationWithType *clone() const override = 0;
     109        virtual DeclarationWithType *acceptMutator( Mutator &m )  override = 0;
    109110
    110111        virtual Type * get_type() const = 0;
     
    118119        typedef DeclarationWithType Parent;
    119120  public:
    120         Type * type;
    121         Initializer * init;
    122         Expression * bitfieldWidth;
    123 
    124         ObjectDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression * bitfieldWidth, Type * type, Initializer * init,
     121        Type *type;
     122        Initializer *init;
     123        Expression *bitfieldWidth;
     124
     125        ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
    125126                                const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    126         ObjectDecl( const ObjectDecl & other );
     127        ObjectDecl( const ObjectDecl &other );
    127128        virtual ~ObjectDecl();
    128129
    129130        virtual Type * get_type() const override { return type; }
    130         virtual void set_type(Type * newType) override { type = newType; }
    131 
    132         Initializer * get_init() const { return init; }
    133         void set_init( Initializer * newValue ) { init = newValue; }
    134 
    135         Expression * get_bitfieldWidth() const { return bitfieldWidth; }
    136         void set_bitfieldWidth( Expression * newValue ) { bitfieldWidth = newValue; }
     131        virtual void set_type(Type *newType) override { type = newType; }
     132
     133        Initializer *get_init() const { return init; }
     134        void set_init( Initializer *newValue ) { init = newValue; }
     135
     136        Expression *get_bitfieldWidth() const { return bitfieldWidth; }
     137        void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
    137138
    138139        static ObjectDecl * newObject( const std::string & name, Type * type, Initializer * init );
    139140
    140         virtual ObjectDecl * clone() const override { return new ObjectDecl( *this ); }
    141         virtual void accept( Visitor & v ) override { v.visit( this ); }
    142         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    143         virtual DeclarationWithType * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    144         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    145         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     141        virtual ObjectDecl *clone() const override { return new ObjectDecl( *this ); }
     142        virtual void accept( Visitor & v ) override { v.visit( this ); }
     143        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     144        virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     145        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     146        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    146147};
    147148
     
    149150        typedef DeclarationWithType Parent;
    150151  public:
    151         FunctionType * type;
    152         CompoundStmt * statements;
     152        FunctionType *type;
     153        CompoundStmt *statements;
    153154        std::list< Expression * > withExprs;
    154155
    155         FunctionDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType * type, CompoundStmt * statements,
     156        FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
    156157                                  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    157         FunctionDecl( const FunctionDecl & other );
     158        FunctionDecl( const FunctionDecl &other );
    158159        virtual ~FunctionDecl();
    159160
     
    162163
    163164        FunctionType * get_functionType() const { return type; }
    164         void set_functionType( FunctionType * newValue ) { type = newValue; }
    165         CompoundStmt * get_statements() const { return statements; }
    166         void set_statements( CompoundStmt * newValue ) { statements = newValue; }
     165        void set_functionType( FunctionType *newValue ) { type = newValue; }
     166        CompoundStmt *get_statements() const { return statements; }
     167        void set_statements( CompoundStmt *newValue ) { statements = newValue; }
    167168        bool has_body() const { return NULL != statements; }
    168169
    169170        static FunctionDecl * newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements );
    170171
    171         virtual FunctionDecl * clone() const override { return new FunctionDecl( *this ); }
    172         virtual void accept( Visitor & v ) override { v.visit( this ); }
    173         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    174         virtual DeclarationWithType * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    175         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    176         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     172        virtual FunctionDecl *clone() const override { return new FunctionDecl( *this ); }
     173        virtual void accept( Visitor & v ) override { v.visit( this ); }
     174        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     175        virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     176        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     177        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    177178};
    178179
     
    180181        typedef Declaration Parent;
    181182  public:
    182         Type * base;
    183         std::list< TypeDecl * > parameters;
    184         std::list< DeclarationWithType * > assertions;
    185 
    186         NamedTypeDecl( const std::string & name, Type::StorageClasses scs, Type * type );
    187         NamedTypeDecl( const NamedTypeDecl & other );
     183        Type *base;
     184        std::list< TypeDecl* > parameters;
     185        std::list< DeclarationWithType* > assertions;
     186
     187        NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *type );
     188        NamedTypeDecl( const NamedTypeDecl &other );
    188189        virtual ~NamedTypeDecl();
    189190
    190         Type * get_base() const { return base; }
    191         void set_base( Type * newValue ) { base = newValue; }
    192         std::list< TypeDecl* > & get_parameters() { return parameters; }
    193         std::list< DeclarationWithType * >& get_assertions() { return assertions; }
    194 
    195         virtual const char * typeString() const = 0;
    196 
    197         virtual NamedTypeDecl * clone() const override = 0;
    198         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    199         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     191        Type *get_base() const { return base; }
     192        void set_base( Type *newValue ) { base = newValue; }
     193        std::list< TypeDecl* >& get_parameters() { return parameters; }
     194        std::list< DeclarationWithType* >& get_assertions() { return assertions; }
     195
     196        virtual std::string typeString() const = 0;
     197
     198        virtual NamedTypeDecl *clone() const override = 0;
     199        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     200        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    200201};
    201202
     
    203204        typedef NamedTypeDecl Parent;
    204205  public:
    205         enum Kind { Dtype, Otype, Ftype, Ttype, NUMBER_OF_KINDS };
    206 
    207         Kind kind;
     206        enum Kind { Dtype, Ftype, Ttype, NUMBER_OF_KINDS };
     207
     208        Type * init;
    208209        bool sized;
    209         Type * init;
    210210
    211211        /// Data extracted from a type decl
    212212        struct Data {
    213                 Kind kind;
     213                TypeDecl::Kind kind;
    214214                bool isComplete;
    215215
    216                 Data() : kind( NUMBER_OF_KINDS ), isComplete( false ) {}
    217                 Data( const TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {}
     216                Data() : kind( (TypeDecl::Kind)-1 ), isComplete( false ) {}
     217                Data( TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {}
    218218                Data( Kind kind, bool isComplete ) : kind( kind ), isComplete( isComplete ) {}
    219                 Data( const Data & d1, const Data & d2 )
    220                         : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {}
    221 
    222                 bool operator==( const Data & other ) const { return kind == other.kind && isComplete == other.isComplete; }
    223                 bool operator!=( const Data & other ) const { return !(*this == other);}
     219                Data( const Data& d1, const Data& d2 )
     220                : kind( d1.kind ), isComplete ( d1.isComplete || d2.isComplete ) {}
     221
     222                bool operator==(const Data & other) const { return kind == other.kind && isComplete == other.isComplete; }
     223                bool operator!=(const Data & other) const { return !(*this == other);}
    224224        };
    225225
    226         TypeDecl( const std::string & name, Type::StorageClasses scs, Type * type, Kind kind, bool sized, Type * init = nullptr );
    227         TypeDecl( const TypeDecl & other );
     226        TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init = nullptr );
     227        TypeDecl( const TypeDecl &other );
    228228        virtual ~TypeDecl();
    229229
     
    237237        TypeDecl * set_sized( bool newValue ) { sized = newValue; return this; }
    238238
    239         virtual const char * typeString() const override;
    240         virtual const char * genTypeString() const;
    241 
    242         virtual TypeDecl * clone() const override { return new TypeDecl( *this ); }
    243         virtual void accept( Visitor & v ) override { v.visit( this ); }
    244         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    245         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    246         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
     239        virtual std::string typeString() const override;
     240        virtual std::string genTypeString() const;
     241
     242        virtual TypeDecl *clone() const override { return new TypeDecl( *this ); }
     243        virtual void accept( Visitor & v ) override { v.visit( this ); }
     244        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     245        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     246        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     247
     248        Kind kind;
    247249};
    248250
     
    250252        typedef NamedTypeDecl Parent;
    251253  public:
    252         TypedefDecl( const std::string & name, CodeLocation location, Type::StorageClasses scs, Type * type, LinkageSpec::Spec spec = LinkageSpec::Cforall )
     254        TypedefDecl( const std::string &name, CodeLocation location, Type::StorageClasses scs, Type *type, LinkageSpec::Spec spec = LinkageSpec::Cforall )
    253255                : Parent( name, scs, type ) { set_linkage( spec ); this->location = location; }
    254256
    255         TypedefDecl( const TypedefDecl & other ) : Parent( other ) {}
    256 
    257         virtual const char * typeString() const override;
    258 
    259         virtual TypedefDecl * clone() const override { return new TypedefDecl( *this ); }
    260         virtual void accept( Visitor & v ) override { v.visit( this ); }
    261         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    262         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     257        TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
     258
     259        virtual std::string typeString() const override;
     260
     261        virtual TypedefDecl *clone() const override { return new TypedefDecl( *this ); }
     262        virtual void accept( Visitor & v ) override { v.visit( this ); }
     263        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     264        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    263265  private:
    264266};
     
    267269        typedef Declaration Parent;
    268270  public:
    269         enum Aggregate { Struct, Union, Enum, Exception, Trait, Generator, Coroutine, Monitor, Thread, NoAggregate };
    270         static const char * aggrString( Aggregate aggr );
    271 
    272271        std::list<Declaration*> members;
    273272        std::list<TypeDecl*> parameters;
     
    276275        AggregateDecl * parent = nullptr;
    277276
    278         AggregateDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
    279         AggregateDecl( const AggregateDecl & other );
     277        AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
     278        AggregateDecl( const AggregateDecl &other );
    280279        virtual ~AggregateDecl();
    281280
     
    289288        AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
    290289
    291         virtual void print( std::ostream & os, Indenter indent = {} ) const override final;
    292         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     290        virtual void print( std::ostream &os, Indenter indent = {} ) const override final;
     291        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    293292  protected:
    294         virtual const char * typeString() const = 0;
     293        virtual std::string typeString() const = 0;
    295294};
    296295
     
    298297        typedef AggregateDecl Parent;
    299298  public:
    300         StructDecl( const std::string & name, Aggregate kind = Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}
    301         StructDecl( const StructDecl & other ) : Parent( other ), kind( other.kind ) {}
    302 
    303         bool is_coroutine() { return kind == Coroutine; }
    304         bool is_monitor() { return kind == Monitor; }
    305         bool is_thread() { return kind == Thread; }
    306 
    307         virtual StructDecl * clone() const override { return new StructDecl( *this ); }
    308         virtual void accept( Visitor & v ) override { v.visit( this ); }
    309         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    310         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    311         Aggregate kind;
    312   private:
    313         virtual const char * typeString() const override;
     299        StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}
     300        StructDecl( const StructDecl &other ) : Parent( other ), kind( other.kind ) {}
     301
     302        bool is_coroutine() { return kind == DeclarationNode::Coroutine; }
     303        bool is_monitor() { return kind == DeclarationNode::Monitor; }
     304        bool is_thread() { return kind == DeclarationNode::Thread; }
     305
     306        virtual StructDecl *clone() const override { return new StructDecl( *this ); }
     307        virtual void accept( Visitor & v ) override { v.visit( this ); }
     308        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     309        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     310        DeclarationNode::Aggregate kind;
     311  private:
     312        virtual std::string typeString() const override;
    314313};
    315314
     
    317316        typedef AggregateDecl Parent;
    318317  public:
    319         UnionDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
    320         UnionDecl( const UnionDecl & other ) : Parent( other ) {}
    321 
    322         virtual UnionDecl * clone() const override { return new UnionDecl( *this ); }
    323         virtual void accept( Visitor & v ) override { v.visit( this ); }
    324         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    325         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    326   private:
    327         virtual const char * typeString() const override;
     318        UnionDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
     319        UnionDecl( const UnionDecl &other ) : Parent( other ) {}
     320
     321        virtual UnionDecl *clone() const override { return new UnionDecl( *this ); }
     322        virtual void accept( Visitor & v ) override { v.visit( this ); }
     323        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     324        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     325  private:
     326        virtual std::string typeString() const override;
    328327};
    329328
     
    331330        typedef AggregateDecl Parent;
    332331  public:
    333         EnumDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
    334         EnumDecl( const EnumDecl & other ) : Parent( other ) {}
     332        EnumDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}
     333        EnumDecl( const EnumDecl &other ) : Parent( other ) {}
    335334
    336335        bool valueOf( Declaration * enumerator, long long int & value );
    337336
    338         virtual EnumDecl * clone() const override { return new EnumDecl( *this ); }
    339         virtual void accept( Visitor & v ) override { v.visit( this ); }
    340         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    341         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
     337        virtual EnumDecl *clone() const override { return new EnumDecl( *this ); }
     338        virtual void accept( Visitor & v ) override { v.visit( this ); }
     339        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     340        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    342341  private:
    343342        std::unordered_map< std::string, long long int > enumValues;
    344         virtual const char * typeString() const override;
     343        virtual std::string typeString() const override;
    345344};
    346345
     
    348347        typedef AggregateDecl Parent;
    349348  public:
    350         TraitDecl( const std::string & name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {
     349        TraitDecl( const std::string &name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {
    351350                assertf( attributes.empty(), "attribute unsupported for traits" );
    352351        }
    353         TraitDecl( const TraitDecl & other ) : Parent( other ) {}
    354 
    355         virtual TraitDecl * clone() const override { return new TraitDecl( *this ); }
    356         virtual void accept( Visitor & v ) override { v.visit( this ); }
    357         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    358         virtual Declaration * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    359   private:
    360         virtual const char * typeString() const override;
     352        TraitDecl( const TraitDecl &other ) : Parent( other ) {}
     353
     354        virtual TraitDecl *clone() const override { return new TraitDecl( *this ); }
     355        virtual void accept( Visitor & v ) override { v.visit( this ); }
     356        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     357        virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     358  private:
     359        virtual std::string typeString() const override;
    361360};
    362361
     
    380379class AsmDecl : public Declaration {
    381380  public:
    382         AsmStmt * stmt;
    383 
    384         AsmDecl( AsmStmt * stmt );
    385         AsmDecl( const AsmDecl & other );
     381        AsmStmt *stmt;
     382
     383        AsmDecl( AsmStmt *stmt );
     384        AsmDecl( const AsmDecl &other );
    386385        virtual ~AsmDecl();
    387386
    388         AsmStmt * get_stmt() { return stmt; }
    389         void set_stmt( AsmStmt * newValue ) { stmt = newValue; }
    390 
    391         virtual AsmDecl * clone() const override { return new AsmDecl( *this ); }
    392         virtual void accept( Visitor & v ) override { v.visit( this ); }
    393         virtual void accept( Visitor & v ) const override { v.visit( this ); }
    394         virtual AsmDecl * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    395         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    396         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     387        AsmStmt *get_stmt() { return stmt; }
     388        void set_stmt( AsmStmt *newValue ) { stmt = newValue; }
     389
     390        virtual AsmDecl *clone() const override { return new AsmDecl( *this ); }
     391        virtual void accept( Visitor & v ) override { v.visit( this ); }
     392        virtual void accept( Visitor & v ) const override { v.visit( this ); }
     393        virtual AsmDecl *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     394        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     395        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    397396};
    398397
     
    409408        virtual void accept( Visitor & v ) override { v.visit( this ); }
    410409        virtual void accept( Visitor & v ) const override { v.visit( this ); }
    411         virtual StaticAssertDecl * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
    412         virtual void print( std::ostream & os, Indenter indent = {} ) const override;
    413         virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
     410        virtual StaticAssertDecl * acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     411        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     412        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
    414413};
    415414
Note: See TracChangeset for help on using the changeset viewer.