Changes in src/SynTree/Declaration.h [e67991f:3ed994e]
- File:
-
- 1 edited
-
src/SynTree/Declaration.h (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Declaration.h
re67991f r3ed994e 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Thr May 2 10:47:00 201913 // Update Count : 13 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Sep 3 19:24:06 2017 13 // Update Count : 131 14 14 // 15 15 … … 19 19 #include <iosfwd> // for ostream 20 20 #include <list> // for list 21 #include <unordered_map> // for unordered_map22 21 #include <string> // for string, operator+, allocator, to_string 23 22 … … 63 62 void fixUniqueId( void ); 64 63 virtual Declaration *clone() const override = 0; 65 virtual void accept( Visitor & v ) override = 0; 66 virtual void accept( Visitor & v ) const override = 0; 64 virtual void accept( Visitor &v ) override = 0; 67 65 virtual Declaration *acceptMutator( Mutator &m ) override = 0; 68 66 virtual void print( std::ostream &os, Indenter indent = {} ) const override = 0; 69 67 virtual void printShort( std::ostream &os, Indenter indent = {} ) const = 0; 70 68 69 static void dumpIds( std::ostream &os ); 70 static Declaration *declFromId( UniqueId id ); 71 72 private: 73 Type::StorageClasses storageClasses; 71 74 UniqueId uniqueId; 72 Type::StorageClasses storageClasses;73 private:74 75 }; 75 76 … … 140 141 141 142 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 ); } 143 virtual void accept( Visitor &v ) override { v.visit( this ); } 144 144 virtual DeclarationWithType *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 145 145 virtual void print( std::ostream &os, Indenter indent = {} ) const override; … … 166 166 CompoundStmt *get_statements() const { return statements; } 167 167 void set_statements( CompoundStmt *newValue ) { statements = newValue; } 168 bool has_body() const { return NULL != statements; }169 168 170 169 static FunctionDecl * newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements ); 171 170 172 171 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 ); } 172 virtual void accept( Visitor &v ) override { v.visit( this ); } 175 173 virtual DeclarationWithType *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 176 174 virtual void print( std::ostream &os, Indenter indent = {} ) const override; … … 204 202 typedef NamedTypeDecl Parent; 205 203 public: 206 enum Kind { Dtype, Ftype, Ttype , NUMBER_OF_KINDS};204 enum Kind { Dtype, Ftype, Ttype }; 207 205 208 206 Type * init; … … 213 211 TypeDecl::Kind kind; 214 212 bool isComplete; 215 216 213 Data() : kind( (TypeDecl::Kind)-1 ), isComplete( false ) {} 217 214 Data( TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {} 218 215 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 216 bool operator==(const Data & other) const { return kind == other.kind && isComplete == other.isComplete; } 223 217 bool operator!=(const Data & other) const { return !(*this == other);} … … 241 235 242 236 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 237 virtual void accept( Visitor &v ) override { v.visit( this ); } 238 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 239 virtual void print( std::ostream &os, Indenter indent = {} ) const override; 240 241 private: 248 242 Kind kind; 249 243 }; … … 260 254 261 255 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 ); } 256 virtual void accept( Visitor &v ) override { v.visit( this ); } 264 257 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 265 258 private: … … 273 266 bool body; 274 267 std::list< Attribute * > attributes; 275 AggregateDecl * parent = nullptr;276 268 277 269 AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ); … … 288 280 AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; } 289 281 290 virtual void print( std::ostream &os, Indenter indent = {} ) const override final;282 virtual void print( std::ostream &os, Indenter indent = {} ) const override; 291 283 virtual void printShort( std::ostream &os, Indenter indent = {} ) const override; 292 284 protected: … … 305 297 306 298 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 ); } 299 virtual void accept( Visitor &v ) override { v.visit( this ); } 300 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 301 private: 310 302 DeclarationNode::Aggregate kind; 311 private:312 303 virtual std::string typeString() const override; 313 304 }; … … 320 311 321 312 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 ); } 313 virtual void accept( Visitor &v ) override { v.visit( this ); } 324 314 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 325 315 private: … … 336 326 337 327 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 ); } 341 private: 342 std::unordered_map< std::string, long long int > enumValues; 328 virtual void accept( Visitor &v ) override { v.visit( this ); } 329 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 330 private: 331 std::map< std::string, long long int > enumValues; 343 332 virtual std::string typeString() const override; 344 333 }; … … 353 342 354 343 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; 360 }; 361 362 class WithStmt : public Declaration { 363 public: 364 std::list< Expression * > exprs; 365 Statement * stmt; 366 367 WithStmt( const std::list< Expression * > & exprs, Statement * stmt ); 368 WithStmt( const WithStmt & other ); 369 virtual ~WithStmt(); 370 371 virtual WithStmt * clone() const override { return new WithStmt( *this ); } 372 virtual void accept( Visitor & v ) override { v.visit( this ); } 373 virtual void accept( Visitor & v ) const override { v.visit( this ); } 374 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 375 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 376 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override { print(os, indent); } 344 virtual void accept( Visitor &v ) override { v.visit( this ); } 345 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 346 private: 347 virtual std::string typeString() const override; 377 348 }; 378 349 … … 389 360 390 361 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 ); } 362 virtual void accept( Visitor &v ) override { v.visit( this ); } 393 363 virtual AsmDecl *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 394 364 virtual void print( std::ostream &os, Indenter indent = {} ) const override; … … 406 376 407 377 virtual StaticAssertDecl * clone() const override { return new StaticAssertDecl( *this ); } 408 virtual void accept( Visitor & v ) override { v.visit( this ); } 409 virtual void accept( Visitor & v ) const override { v.visit( this ); } 378 virtual void accept( Visitor &v ) override { v.visit( this ); } 410 379 virtual StaticAssertDecl * acceptMutator( Mutator &m ) override { return m.mutate( this ); } 411 380 virtual void print( std::ostream &os, Indenter indent = {} ) const override;
Note:
See TracChangeset
for help on using the changeset viewer.