Changes in src/SynTree/Initializer.cc [60089f4:84bb4d9]
- File:
-
- 1 edited
-
src/SynTree/Initializer.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Initializer.cc
r60089f4 r84bb4d9 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Tue Apr 26 1 2:50:47201612 // Last Modified On : Tue Apr 26 15:51:35 2016 13 13 // Update Count : 28 14 14 // … … 16 16 #include "Initializer.h" 17 17 #include "Expression.h" 18 #include "Statement.h" 18 19 #include "Common/utility.h" 19 20 20 Initializer::Initializer( ) {}21 Initializer::Initializer( bool maybeConstructed ) : maybeConstructed( maybeConstructed ) {} 21 22 22 23 Initializer::~Initializer() {} … … 31 32 void Initializer::print( std::ostream &os, int indent ) {} 32 33 33 SingleInit::SingleInit( Expression *v, std::list< Expression *> &_designators ) :value ( v ), designators( _designators ) {34 SingleInit::SingleInit( Expression *v, const std::list< Expression *> &_designators, bool maybeConstructed ) : Initializer( maybeConstructed ), value ( v ), designators( _designators ) { 34 35 } 35 36 36 SingleInit::SingleInit( const SingleInit &other ) : value ( other.value) {37 SingleInit::SingleInit( const SingleInit &other ) : Initializer(other), value ( maybeClone( other.value ) ) { 37 38 cloneAll(other.designators, designators ); 38 39 } … … 44 45 void SingleInit::print( std::ostream &os, int indent ) { 45 46 os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl; 46 os << std::string(indent+4, ' ' );47 47 value->print( os, indent+4 ); 48 48 … … 55 55 } 56 56 57 ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators)58 : initializers( _initializers ), designators( _designators ) {57 ListInit::ListInit( const std::list<Initializer*> &_initializers, const std::list<Expression *> &_designators, bool maybeConstructed ) 58 : Initializer( maybeConstructed), initializers( _initializers ), designators( _designators ) { 59 59 } 60 60 … … 80 80 (*i)->print( os, indent + 2 ); 81 81 } 82 83 84 ConstructorInit::ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init ) : Initializer( true ), ctor( ctor ), dtor( dtor ), init( init ) {} 85 ConstructorInit::~ConstructorInit() { 86 delete ctor; 87 delete init; 88 } 89 90 ConstructorInit *ConstructorInit::clone() const { 91 return new ConstructorInit( *this ); 92 } 93 94 void ConstructorInit::print( std::ostream &os, int indent ) { 95 os << std::endl << std::string(indent, ' ') << "Constructor initializer: " << std::endl; 96 if ( ctor ) { 97 os << std::string(indent+2, ' '); 98 os << "initially constructed with "; 99 ctor->print( os, indent+4 ); 100 } // if 101 102 if ( dtor ) { 103 os << std::string(indent+2, ' '); 104 os << "destructed with "; 105 dtor->print( os, indent+4 ); 106 } 107 108 if ( init ) { 109 os << std::string(indent+2, ' '); 110 os << "with fallback C-style initializer: "; 111 init->print( os, indent+4 ); 112 } 113 } 114 115 std::ostream & operator<<( std::ostream & out, Initializer * init ) { 116 init->print( out ); 117 return out; 118 } 119 82 120 // Local Variables: // 83 121 // tab-width: 4 //
Note:
See TracChangeset
for help on using the changeset viewer.