Changeset 1b7b604
- Timestamp:
- Feb 14, 2023, 9:19:11 PM (22 months ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- 531c3d5
- Parents:
- 07e3652
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Type.h
r07e3652 r1b7b604 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 : Wed Jul 14 15:40:00 202113 // Update Count : 17 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 13 17:13:52 2023 13 // Update Count : 173 14 14 // 15 15 … … 189 189 virtual TypeSubstitution genericSubstitution() const; 190 190 191 virtual Type * clone() const = 0;191 virtual Type * clone() const = 0; 192 192 virtual void accept( Visitor & v ) = 0; 193 193 virtual void accept( Visitor & v ) const = 0; 194 virtual Type * acceptMutator( Mutator & m ) = 0;194 virtual Type * acceptMutator( Mutator & m ) = 0; 195 195 virtual void print( std::ostream & os, Indenter indent = {} ) const; 196 196 }; … … 207 207 virtual bool isComplete() const override { return false; } 208 208 209 virtual VoidType * clone() const override { return new VoidType( *this ); }210 virtual void accept( Visitor & v ) override { v.visit( this ); } 211 virtual void accept( Visitor & v ) const override { v.visit( this ); } 212 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }209 virtual VoidType * clone() const override { return new VoidType( *this ); } 210 virtual void accept( Visitor & v ) override { v.visit( this ); } 211 virtual void accept( Visitor & v ) const override { v.visit( this ); } 212 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 213 213 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 214 214 }; … … 259 259 // GENERATED END 260 260 261 static const char * typeNames[];// string names for basic types, MUST MATCH with Kind261 static const char * typeNames[]; // string names for basic types, MUST MATCH with Kind 262 262 263 263 BasicType( const Type::Qualifiers & tq, Kind bt, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 266 266 void set_kind( Kind newValue ) { kind = newValue; } 267 267 268 virtual BasicType * clone() const override { return new BasicType( *this ); }269 virtual void accept( Visitor & v ) override { v.visit( this ); } 270 virtual void accept( Visitor & v ) const override { v.visit( this ); } 271 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }268 virtual BasicType * clone() const override { return new BasicType( *this ); } 269 virtual void accept( Visitor & v ) override { v.visit( this ); } 270 virtual void accept( Visitor & v ) const override { v.visit( this ); } 271 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 272 272 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 273 273 bool isInteger() const; … … 279 279 280 280 // In C99, pointer types can be qualified in many ways e.g., int f( int a[ static 3 ] ) 281 Expression * dimension;281 Expression * dimension; 282 282 bool isVarLen; 283 283 bool isStatic; 284 284 285 PointerType( const Type::Qualifiers & tq, Type * base, const std::list< Attribute * > & attributes = std::list< Attribute * >() );286 PointerType( const Type::Qualifiers & tq, Type * base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() );285 PointerType( const Type::Qualifiers & tq, Type * base, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 286 PointerType( const Type::Qualifiers & tq, Type * base, Expression * dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 287 287 PointerType( const PointerType& ); 288 288 virtual ~PointerType(); 289 289 290 Type * get_base() { return base; }291 void set_base( Type * newValue ) { base = newValue; }292 Expression * get_dimension() { return dimension; }293 void set_dimension( Expression * newValue ) { dimension = newValue; }290 Type * get_base() { return base; } 291 void set_base( Type * newValue ) { base = newValue; } 292 Expression * get_dimension() { return dimension; } 293 void set_dimension( Expression * newValue ) { dimension = newValue; } 294 294 bool get_isVarLen() { return isVarLen; } 295 295 void set_isVarLen( bool newValue ) { isVarLen = newValue; } … … 301 301 virtual bool isComplete() const override { return ! isVarLen; } 302 302 303 virtual PointerType * clone() const override { return new PointerType( *this ); }304 virtual void accept( Visitor & v ) override { v.visit( this ); } 305 virtual void accept( Visitor & v ) const override { v.visit( this ); } 306 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }303 virtual PointerType * clone() const override { return new PointerType( * this ); } 304 virtual void accept( Visitor & v ) override { v.visit( this ); } 305 virtual void accept( Visitor & v ) const override { v.visit( this ); } 306 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 307 307 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 308 308 }; … … 310 310 class ArrayType : public Type { 311 311 public: 312 Type * base;313 Expression * dimension;312 Type * base; 313 Expression * dimension; 314 314 bool isVarLen; 315 315 bool isStatic; 316 316 317 ArrayType( const Type::Qualifiers & tq, Type * base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() );317 ArrayType( const Type::Qualifiers & tq, Type * base, Expression * dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 318 318 ArrayType( const ArrayType& ); 319 319 virtual ~ArrayType(); 320 320 321 Type * get_base() { return base; }322 void set_base( Type * newValue ) { base = newValue; }323 Expression * get_dimension() { return dimension; }324 void set_dimension( Expression * newValue ) { dimension = newValue; }321 Type * get_base() { return base; } 322 void set_base( Type * newValue ) { base = newValue; } 323 Expression * get_dimension() { return dimension; } 324 void set_dimension( Expression * newValue ) { dimension = newValue; } 325 325 bool get_isVarLen() { return isVarLen; } 326 326 void set_isVarLen( bool newValue ) { isVarLen = newValue; } … … 333 333 virtual bool isComplete() const override { return dimension || isVarLen; } 334 334 335 virtual ArrayType * clone() const override { return new ArrayType( *this ); }336 virtual void accept( Visitor & v ) override { v.visit( this ); } 337 virtual void accept( Visitor & v ) const override { v.visit( this ); } 338 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }335 virtual ArrayType * clone() const override { return new ArrayType( *this ); } 336 virtual void accept( Visitor & v ) override { v.visit( this ); } 337 virtual void accept( Visitor & v ) const override { v.visit( this ); } 338 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 339 339 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 340 340 }; … … 348 348 virtual ~QualifiedType(); 349 349 350 virtual QualifiedType * clone() const override { return new QualifiedType( *this ); }351 virtual void accept( Visitor & v ) override { v.visit( this ); } 352 virtual void accept( Visitor & v ) const override { v.visit( this ); } 353 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }350 virtual QualifiedType * clone() const override { return new QualifiedType( *this ); } 351 virtual void accept( Visitor & v ) override { v.visit( this ); } 352 virtual void accept( Visitor & v ) const override { v.visit( this ); } 353 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 354 354 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 355 355 }; … … 357 357 class ReferenceType : public Type { 358 358 public: 359 Type * base;360 361 ReferenceType( const Type::Qualifiers & tq, Type * base, const std::list< Attribute * > & attributes = std::list< Attribute * >() );359 Type * base; 360 361 ReferenceType( const Type::Qualifiers & tq, Type * base, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 362 362 ReferenceType( const ReferenceType & ); 363 363 virtual ~ReferenceType(); 364 364 365 Type * get_base() { return base; }366 void set_base( Type * newValue ) { base = newValue; }365 Type * get_base() { return base; } 366 void set_base( Type * newValue ) { base = newValue; } 367 367 368 368 virtual int referenceDepth() const override; … … 375 375 virtual TypeSubstitution genericSubstitution() const override; 376 376 377 virtual ReferenceType * clone() const override { return new ReferenceType( *this ); }378 virtual void accept( Visitor & v ) override { v.visit( this ); } 379 virtual void accept( Visitor & v ) const override { v.visit( this ); } 380 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }377 virtual ReferenceType * clone() const override { return new ReferenceType( *this ); } 378 virtual void accept( Visitor & v ) override { v.visit( this ); } 379 virtual void accept( Visitor & v ) const override { v.visit( this ); } 380 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 381 381 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 382 382 }; … … 405 405 bool isUnprototyped() const { return isVarArgs && parameters.size() == 0; } 406 406 407 virtual FunctionType * clone() const override { return new FunctionType( *this ); }408 virtual void accept( Visitor & v ) override { v.visit( this ); } 409 virtual void accept( Visitor & v ) const override { v.visit( this ); } 410 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }407 virtual FunctionType * clone() const override { return new FunctionType( *this ); } 408 virtual void accept( Visitor & v ) override { v.visit( this ); } 409 virtual void accept( Visitor & v ) const override { v.visit( this ); } 410 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 411 411 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 412 412 }; … … 414 414 class ReferenceToType : public Type { 415 415 public: 416 std::list< Expression * > parameters;416 std::list< Expression * > parameters; 417 417 std::string name; 418 418 bool hoistType; … … 428 428 void set_hoistType( bool newValue ) { hoistType = newValue; } 429 429 430 virtual ReferenceToType * clone() const override = 0;430 virtual ReferenceToType * clone() const override = 0; 431 431 virtual void accept( Visitor & v ) override = 0; 432 virtual Type * acceptMutator( Mutator & m ) override = 0;432 virtual Type * acceptMutator( Mutator & m ) override = 0; 433 433 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 434 434 … … 443 443 // this decl is not "owned" by the struct inst; it is merely a pointer to elsewhere in the tree, 444 444 // where the structure used in this type is actually defined 445 StructDecl * baseStruct;445 StructDecl * baseStruct; 446 446 447 447 StructInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ), baseStruct( 0 ) {} … … 449 449 StructInstType( const StructInstType & other ) : Parent( other ), baseStruct( other.baseStruct ) {} 450 450 451 StructDecl * get_baseStruct() const { return baseStruct; }452 void set_baseStruct( StructDecl * newValue ) { baseStruct = newValue; }451 StructDecl * get_baseStruct() const { return baseStruct; } 452 void set_baseStruct( StructDecl * newValue ) { baseStruct = newValue; } 453 453 454 454 /// Accesses generic parameters of base struct (NULL if none such) … … 466 466 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const override; 467 467 468 virtual StructInstType * clone() const override { return new StructInstType( *this ); }469 virtual void accept( Visitor & v ) override { v.visit( this ); } 470 virtual void accept( Visitor & v ) const override { v.visit( this ); } 471 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }468 virtual StructInstType * clone() const override { return new StructInstType( *this ); } 469 virtual void accept( Visitor & v ) override { v.visit( this ); } 470 virtual void accept( Visitor & v ) const override { v.visit( this ); } 471 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 472 472 473 473 virtual void print( std::ostream & os, Indenter indent = {} ) const override; … … 481 481 // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree, 482 482 // where the union used in this type is actually defined 483 UnionDecl * baseUnion;483 UnionDecl * baseUnion; 484 484 485 485 UnionInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ), baseUnion( 0 ) {} … … 487 487 UnionInstType( const UnionInstType & other ) : Parent( other ), baseUnion( other.baseUnion ) {} 488 488 489 UnionDecl * get_baseUnion() const { return baseUnion; }489 UnionDecl * get_baseUnion() const { return baseUnion; } 490 490 void set_baseUnion( UnionDecl * newValue ) { baseUnion = newValue; } 491 491 … … 504 504 void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const override; 505 505 506 virtual UnionInstType * clone() const override { return new UnionInstType( *this ); }507 virtual void accept( Visitor & v ) override { v.visit( this ); } 508 virtual void accept( Visitor & v ) const override { v.visit( this ); } 509 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }506 virtual UnionInstType * clone() const override { return new UnionInstType( *this ); } 507 virtual void accept( Visitor & v ) override { v.visit( this ); } 508 virtual void accept( Visitor & v ) const override { v.visit( this ); } 509 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 510 510 511 511 virtual void print( std::ostream & os, Indenter indent = {} ) const override; … … 519 519 // this decl is not "owned" by the enum inst; it is merely a pointer to elsewhere in the tree, 520 520 // where the enum used in this type is actually defined 521 EnumDecl * baseEnum = nullptr;521 EnumDecl * baseEnum = nullptr; 522 522 523 523 EnumInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ) {} … … 525 525 EnumInstType( const EnumInstType & other ) : Parent( other ), baseEnum( other.baseEnum ) {} 526 526 527 EnumDecl * get_baseEnum() const { return baseEnum; }528 void set_baseEnum( EnumDecl * newValue ) { baseEnum = newValue; }527 EnumDecl * get_baseEnum() const { return baseEnum; } 528 void set_baseEnum( EnumDecl * newValue ) { baseEnum = newValue; } 529 529 530 530 virtual bool isComplete() const override; … … 532 532 virtual AggregateDecl * getAggr() const override; 533 533 534 virtual EnumInstType * clone() const override { return new EnumInstType( *this ); }535 virtual void accept( Visitor & v ) override { v.visit( this ); } 536 virtual void accept( Visitor & v ) const override { v.visit( this ); } 537 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }534 virtual EnumInstType * clone() const override { return new EnumInstType( *this ); } 535 virtual void accept( Visitor & v ) override { v.visit( this ); } 536 virtual void accept( Visitor & v ) const override { v.visit( this ); } 537 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 538 538 539 539 virtual void print( std::ostream & os, Indenter indent = {} ) const override; … … 556 556 virtual bool isComplete() const override; 557 557 558 virtual TraitInstType * clone() const override { return new TraitInstType( *this ); }559 virtual void accept( Visitor & v ) override { v.visit( this ); } 560 virtual void accept( Visitor & v ) const override { v.visit( this ); } 561 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }558 virtual TraitInstType * clone() const override { return new TraitInstType( *this ); } 559 virtual void accept( Visitor & v ) override { v.visit( this ); } 560 virtual void accept( Visitor & v ) const override { v.visit( this ); } 561 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 562 562 private: 563 563 virtual std::string typeString() const override; … … 569 569 // this decl is not "owned" by the type inst; it is merely a pointer to elsewhere in the tree, 570 570 // where the type used here is actually defined 571 TypeDecl * baseType;571 TypeDecl * baseType; 572 572 bool isFtype; 573 573 574 TypeInstType( const Type::Qualifiers & tq, const std::string & name, TypeDecl * baseType, const std::list< Attribute * > & attributes = std::list< Attribute * >() );574 TypeInstType( const Type::Qualifiers & tq, const std::string & name, TypeDecl * baseType, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 575 575 TypeInstType( const Type::Qualifiers & tq, const std::string & name, bool isFtype, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 576 576 TypeInstType( const TypeInstType & other ); 577 577 ~TypeInstType(); 578 578 579 TypeDecl * get_baseType() const { return baseType; }580 void set_baseType( TypeDecl * newValue );579 TypeDecl * get_baseType() const { return baseType; } 580 void set_baseType( TypeDecl * newValue ); 581 581 bool get_isFtype() const { return isFtype; } 582 582 void set_isFtype( bool newValue ) { isFtype = newValue; } … … 584 584 virtual bool isComplete() const override; 585 585 586 virtual TypeInstType * clone() const override { return new TypeInstType( *this ); }587 virtual void accept( Visitor & v ) override { v.visit( this ); } 588 virtual void accept( Visitor & v ) const override { v.visit( this ); } 589 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }586 virtual TypeInstType * clone() const override { return new TypeInstType( *this ); } 587 virtual void accept( Visitor & v ) override { v.visit( this ); } 588 virtual void accept( Visitor & v ) const override { v.visit( this ); } 589 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 590 590 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 591 591 private: … … 622 622 // virtual bool isComplete() const override { return true; } // xxx - not sure if this is right, might need to recursively check complete-ness 623 623 624 virtual TupleType * clone() const override { return new TupleType( *this ); }625 virtual void accept( Visitor & v ) override { v.visit( this ); } 626 virtual void accept( Visitor & v ) const override { v.visit( this ); } 627 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }624 virtual TupleType * clone() const override { return new TupleType( *this ); } 625 virtual void accept( Visitor & v ) override { v.visit( this ); } 626 virtual void accept( Visitor & v ) const override { v.visit( this ); } 627 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 628 628 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 629 629 }; … … 631 631 class TypeofType : public Type { 632 632 public: 633 Expression * expr; ///< expression to take the type of633 Expression * expr; ///< expression to take the type of 634 634 bool is_basetypeof; ///< true iff is basetypeof type 635 635 636 TypeofType( const Type::Qualifiers & tq, Expression * expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() );637 TypeofType( const Type::Qualifiers & tq, Expression * expr, bool is_basetypeof,636 TypeofType( const Type::Qualifiers & tq, Expression * expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 637 TypeofType( const Type::Qualifiers & tq, Expression * expr, bool is_basetypeof, 638 638 const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 639 639 TypeofType( const TypeofType& ); 640 640 virtual ~TypeofType(); 641 641 642 Expression * get_expr() const { return expr; }643 void set_expr( Expression * newValue ) { expr = newValue; }642 Expression * get_expr() const { return expr; } 643 void set_expr( Expression * newValue ) { expr = newValue; } 644 644 645 645 virtual bool isComplete() const override { assert( false ); return false; } 646 646 647 virtual TypeofType * clone() const override { return new TypeofType( *this ); }648 virtual void accept( Visitor & v ) override { v.visit( this ); } 649 virtual void accept( Visitor & v ) const override { v.visit( this ); } 650 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }647 virtual TypeofType * clone() const override { return new TypeofType( *this ); } 648 virtual void accept( Visitor & v ) override { v.visit( this ); } 649 virtual void accept( Visitor & v ) const override { v.visit( this ); } 650 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 651 651 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 652 652 }; … … 654 654 class VTableType : public Type { 655 655 public: 656 Type * base;657 658 VTableType( const Type::Qualifiers & tq, Type * base,656 Type * base; 657 658 VTableType( const Type::Qualifiers & tq, Type * base, 659 659 const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 660 660 VTableType( const VTableType & ); 661 661 virtual ~VTableType(); 662 662 663 Type * get_base() { return base; }664 void set_base( Type * newValue ) { base = newValue; }665 666 virtual VTableType * clone() const override { return new VTableType( *this ); }667 virtual void accept( Visitor & v ) override { v.visit( this ); } 668 virtual void accept( Visitor & v ) const override { v.visit( this ); } 669 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }663 Type * get_base() { return base; } 664 void set_base( Type * newValue ) { base = newValue; } 665 666 virtual VTableType * clone() const override { return new VTableType( *this ); } 667 virtual void accept( Visitor & v ) override { v.visit( this ); } 668 virtual void accept( Visitor & v ) const override { v.visit( this ); } 669 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 670 670 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 671 671 }; … … 674 674 public: 675 675 std::string name; 676 Expression * expr;677 Type * type;676 Expression * expr; 677 Type * type; 678 678 bool isType; 679 679 680 AttrType( const Type::Qualifiers & tq, const std::string & name, Expression * expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() );681 AttrType( const Type::Qualifiers & tq, const std::string & name, Type * type, const std::list< Attribute * > & attributes = std::list< Attribute * >() );680 AttrType( const Type::Qualifiers & tq, const std::string & name, Expression * expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 681 AttrType( const Type::Qualifiers & tq, const std::string & name, Type * type, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 682 682 AttrType( const AttrType& ); 683 683 virtual ~AttrType(); … … 685 685 const std::string & get_name() const { return name; } 686 686 void set_name( const std::string & newValue ) { name = newValue; } 687 Expression * get_expr() const { return expr; }688 void set_expr( Expression * newValue ) { expr = newValue; }689 Type * get_type() const { return type; }690 void set_type( Type * newValue ) { type = newValue; }687 Expression * get_expr() const { return expr; } 688 void set_expr( Expression * newValue ) { expr = newValue; } 689 Type * get_type() const { return type; } 690 void set_type( Type * newValue ) { type = newValue; } 691 691 bool get_isType() const { return isType; } 692 692 void set_isType( bool newValue ) { isType = newValue; } … … 694 694 virtual bool isComplete() const override { assert( false ); } // xxx - not sure what to do here 695 695 696 virtual AttrType * clone() const override { return new AttrType( *this ); }697 virtual void accept( Visitor & v ) override { v.visit( this ); } 698 virtual void accept( Visitor & v ) const override { v.visit( this ); } 699 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }696 virtual AttrType * clone() const override { return new AttrType( *this ); } 697 virtual void accept( Visitor & v ) override { v.visit( this ); } 698 virtual void accept( Visitor & v ) const override { v.visit( this ); } 699 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 700 700 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 701 701 }; … … 709 709 virtual bool isComplete() const override{ return true; } // xxx - is this right? 710 710 711 virtual VarArgsType * clone() const override { return new VarArgsType( *this ); }712 virtual void accept( Visitor & v ) override { v.visit( this ); } 713 virtual void accept( Visitor & v ) const override { v.visit( this ); } 714 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }711 virtual VarArgsType * clone() const override { return new VarArgsType( *this ); } 712 virtual void accept( Visitor & v ) override { v.visit( this ); } 713 virtual void accept( Visitor & v ) const override { v.visit( this ); } 714 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 715 715 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 716 716 }; … … 722 722 ZeroType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 723 723 724 virtual ZeroType * clone() const override { return new ZeroType( *this ); }725 virtual void accept( Visitor & v ) override { v.visit( this ); } 726 virtual void accept( Visitor & v ) const override { v.visit( this ); } 727 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }724 virtual ZeroType * clone() const override { return new ZeroType( *this ); } 725 virtual void accept( Visitor & v ) override { v.visit( this ); } 726 virtual void accept( Visitor & v ) const override { v.visit( this ); } 727 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 728 728 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 729 729 }; … … 735 735 OneType( Type::Qualifiers tq, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 736 736 737 virtual OneType * clone() const override { return new OneType( *this ); }738 virtual void accept( Visitor & v ) override { v.visit( this ); } 739 virtual void accept( Visitor & v ) const override { v.visit( this ); } 740 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }737 virtual OneType * clone() const override { return new OneType( *this ); } 738 virtual void accept( Visitor & v ) override { v.visit( this ); } 739 virtual void accept( Visitor & v ) const override { v.visit( this ); } 740 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 741 741 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 742 742 }; … … 746 746 GlobalScopeType(); 747 747 748 virtual GlobalScopeType * clone() const override { return new GlobalScopeType( *this ); }749 virtual void accept( Visitor & v ) override { v.visit( this ); } 750 virtual void accept( Visitor & v ) const override { v.visit( this ); } 751 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); }748 virtual GlobalScopeType * clone() const override { return new GlobalScopeType( *this ); } 749 virtual void accept( Visitor & v ) override { v.visit( this ); } 750 virtual void accept( Visitor & v ) const override { v.visit( this ); } 751 virtual Type * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 752 752 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 753 753 };
Note: See TracChangeset
for help on using the changeset viewer.