Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Decl.hpp

    r312029a re67991f  
    99// Author           : Aaron B. Moss
    1010// Created On       : Thu May 9 10:00:00 2019
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Dec 11 08:20:20 2019
    13 // Update Count     : 16
     11// Last Modified By : Aaron B. Moss
     12// Last Modified On : Thu May 9 10:00:00 2019
     13// Update Count     : 1
    1414//
    1515
     
    154154
    155155        /// Produces a name for the kind of alias
    156         virtual const char * typeString() const = 0;
     156        virtual std::string typeString() const = 0;
    157157
    158158private:
     
    190190          init( i ) {}
    191191
    192         const char * typeString() const override;
     192        std::string typeString() const override;
    193193        /// Produces a name for generated code
    194         const char * genTypeString() const;
     194        std::string genTypeString() const;
    195195
    196196        /// convenience accessor to match Type::isComplete()
     
    212212        : NamedTypeDecl( loc, name, storage, b, spec ) {}
    213213
    214         const char * typeString() const override { return "typedef"; }
     214        std::string typeString() const override { return "typedef"; }
    215215
    216216        const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
     
    223223class AggregateDecl : public Decl {
    224224public:
    225         enum Aggregate { Struct, Union, Enum, Exception, Trait, Generator, Coroutine, Monitor, Thread, NoAggregate };
    226         static const char * aggrString( Aggregate aggr );
    227 
    228225        std::vector<ptr<Decl>> members;
    229226        std::vector<ptr<TypeDecl>> params;
     
    240237
    241238        /// Produces a name for the kind of aggregate
    242         virtual const char * typeString() const = 0;
     239        virtual std::string typeString() const = 0;
    243240
    244241private:
     
    250247class StructDecl final : public AggregateDecl {
    251248public:
    252         Aggregate kind;
     249        DeclarationNode::Aggregate kind;
    253250
    254251        StructDecl( const CodeLocation& loc, const std::string& name,
    255                 Aggregate kind = Struct,
     252                DeclarationNode::Aggregate kind = DeclarationNode::Struct,
    256253                std::vector<ptr<Attribute>>&& attrs = {}, Linkage::Spec linkage = Linkage::Cforall )
    257254        : AggregateDecl( loc, name, std::move(attrs), linkage ), kind( kind ) {}
    258255
    259         bool is_coroutine() { return kind == Coroutine; }
    260         bool is_monitor() { return kind == Monitor; }
    261         bool is_thread() { return kind == Thread; }
    262 
    263         const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
    264 
    265         const char * typeString() const override { return aggrString( kind ); }
     256        bool is_coroutine() { return kind == DeclarationNode::Coroutine; }
     257        bool is_monitor() { return kind == DeclarationNode::Monitor; }
     258        bool is_thread() { return kind == DeclarationNode::Thread; }
     259
     260        const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
     261
     262        std::string typeString() const override { return "struct"; }
    266263
    267264private:
     
    279276        const Decl * accept( Visitor& v ) const override { return v.visit( this ); }
    280277
    281         const char * typeString() const override { return aggrString( Union ); }
     278        std::string typeString() const override { return "union"; }
    282279
    283280private:
     
    298295        const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
    299296
    300         const char * typeString() const override { return aggrString( Enum ); }
     297        std::string typeString() const override { return "enum"; }
    301298
    302299private:
     
    317314        const Decl * accept( Visitor & v ) const override { return v.visit( this ); }
    318315
    319         const char * typeString() const override { return "trait"; }
     316        std::string typeString() const override { return "trait"; }
    320317
    321318private:
Note: See TracChangeset for help on using the changeset viewer.