Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Declaration.h

    r68f9c43 rf6e3e34  
    4545        Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage );
    4646        Declaration( const Declaration &other );
     47        virtual ~Declaration();
    4748
    4849        const std::string &get_name() const { return name; }
     
    8687        DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
    8788        DeclarationWithType( const DeclarationWithType &other );
    88        
     89        virtual ~DeclarationWithType();
     90
    8991        std::string get_mangleName() const { return mangleName; }
    9092        DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
     
    124126                                const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    125127        ObjectDecl( const ObjectDecl &other );
     128        virtual ~ObjectDecl();
    126129
    127130        virtual Type * get_type() const override { return type; }
     
    153156                                  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    154157        FunctionDecl( const FunctionDecl &other );
     158        virtual ~FunctionDecl();
    155159
    156160        virtual Type * get_type() const override { return type; }
     
    180184        NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *type );
    181185        NamedTypeDecl( const NamedTypeDecl &other );
     186        virtual ~NamedTypeDecl();
    182187
    183188        Type *get_base() const { return base; }
     
    214219        TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init = nullptr );
    215220        TypeDecl( const TypeDecl &other );
     221        virtual ~TypeDecl();
    216222
    217223        Kind get_kind() const { return kind; }
     
    262268        AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );
    263269        AggregateDecl( const AggregateDecl &other );
    264        
     270        virtual ~AggregateDecl();
     271
    265272        std::list<Declaration*>& get_members() { return members; }
    266273        std::list<TypeDecl*>& get_parameters() { return parameters; }
     
    346353        AsmDecl( AsmStmt *stmt );
    347354        AsmDecl( const AsmDecl &other );
     355        virtual ~AsmDecl();
    348356
    349357        AsmStmt *get_stmt() { return stmt; }
     
    353361        virtual void accept( Visitor &v ) override { v.visit( this ); }
    354362        virtual AsmDecl *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
     363        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
     364        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
     365};
     366
     367class StaticAssertDecl : public Declaration {
     368public:
     369        Expression * condition;
     370        ConstantExpr * message;   // string literal
     371
     372        StaticAssertDecl( Expression * condition, ConstantExpr * message );
     373        StaticAssertDecl( const StaticAssertDecl & other );
     374        virtual ~StaticAssertDecl();
     375
     376        virtual StaticAssertDecl * clone() const override { return new StaticAssertDecl( *this ); }
     377        virtual void accept( Visitor &v ) override { v.visit( this ); }
     378        virtual StaticAssertDecl * acceptMutator( Mutator &m )  override { return m.mutate( this ); }
    355379        virtual void print( std::ostream &os, Indenter indent = {} ) const override;
    356380        virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
Note: See TracChangeset for help on using the changeset viewer.