Changes in src/AST/Decl.hpp [312029a:e67991f]
- File:
-
- 1 edited
-
src/AST/Decl.hpp (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Decl.hpp
r312029a re67991f 9 9 // Author : Aaron B. Moss 10 10 // Created On : Thu May 9 10:00:00 2019 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Dec 11 08:20:20 201913 // Update Count : 1 611 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Thu May 9 10:00:00 2019 13 // Update Count : 1 14 14 // 15 15 … … 154 154 155 155 /// Produces a name for the kind of alias 156 virtual const char *typeString() const = 0;156 virtual std::string typeString() const = 0; 157 157 158 158 private: … … 190 190 init( i ) {} 191 191 192 const char *typeString() const override;192 std::string typeString() const override; 193 193 /// Produces a name for generated code 194 const char *genTypeString() const;194 std::string genTypeString() const; 195 195 196 196 /// convenience accessor to match Type::isComplete() … … 212 212 : NamedTypeDecl( loc, name, storage, b, spec ) {} 213 213 214 const char *typeString() const override { return "typedef"; }214 std::string typeString() const override { return "typedef"; } 215 215 216 216 const Decl * accept( Visitor & v ) const override { return v.visit( this ); } … … 223 223 class AggregateDecl : public Decl { 224 224 public: 225 enum Aggregate { Struct, Union, Enum, Exception, Trait, Generator, Coroutine, Monitor, Thread, NoAggregate };226 static const char * aggrString( Aggregate aggr );227 228 225 std::vector<ptr<Decl>> members; 229 226 std::vector<ptr<TypeDecl>> params; … … 240 237 241 238 /// Produces a name for the kind of aggregate 242 virtual const char *typeString() const = 0;239 virtual std::string typeString() const = 0; 243 240 244 241 private: … … 250 247 class StructDecl final : public AggregateDecl { 251 248 public: 252 Aggregate kind;249 DeclarationNode::Aggregate kind; 253 250 254 251 StructDecl( const CodeLocation& loc, const std::string& name, 255 Aggregate kind =Struct,252 DeclarationNode::Aggregate kind = DeclarationNode::Struct, 256 253 std::vector<ptr<Attribute>>&& attrs = {}, Linkage::Spec linkage = Linkage::Cforall ) 257 254 : AggregateDecl( loc, name, std::move(attrs), linkage ), kind( kind ) {} 258 255 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"; } 266 263 267 264 private: … … 279 276 const Decl * accept( Visitor& v ) const override { return v.visit( this ); } 280 277 281 const char * typeString() const override { return aggrString( Union ); }278 std::string typeString() const override { return "union"; } 282 279 283 280 private: … … 298 295 const Decl * accept( Visitor & v ) const override { return v.visit( this ); } 299 296 300 const char * typeString() const override { return aggrString( Enum ); }297 std::string typeString() const override { return "enum"; } 301 298 302 299 private: … … 317 314 const Decl * accept( Visitor & v ) const override { return v.visit( this ); } 318 315 319 const char *typeString() const override { return "trait"; }316 std::string typeString() const override { return "trait"; } 320 317 321 318 private:
Note:
See TracChangeset
for help on using the changeset viewer.