Changes in src/SynTree/Initializer.cc [d3b7937:84bb4d9]
- File:
-
- 1 edited
-
src/SynTree/Initializer.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Initializer.cc
rd3b7937 r84bb4d9 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Initializer.cc -- 7 // Initializer.cc -- 8 8 // 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 12 14:05:25 201513 // Update Count : 1412 // Last Modified On : Tue Apr 26 15:51:35 2016 13 // Update Count : 28 14 14 // 15 15 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 } … … 54 55 } 55 56 56 ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators)57 : 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 ) { 58 59 } 59 60 … … 65 66 66 67 void ListInit::print( std::ostream &os, int indent ) { 67 os << std::endl << std::string(indent, ' ') << "Compound initializer: "; 68 os << std::endl << std::string(indent, ' ') << "Compound initializer: "; 68 69 if ( ! designators.empty() ) { 69 70 os << std::string(indent + 2, ' ' ) << "designated by: ["; 70 71 for ( std::list < Expression * >::iterator i = designators.begin(); 71 72 i != designators.end(); i++ ) { 72 ( *i )->print(os, indent + 4 ); 73 ( *i )->print(os, indent + 4 ); 73 74 } // for 74 75 75 76 os << std::string(indent + 2, ' ' ) << "]"; 76 77 } // if 77 78 78 for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ ) 79 for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ ) 79 80 (*i)->print( os, indent + 2 ); 80 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 81 120 // Local Variables: // 82 121 // tab-width: 4 //
Note:
See TracChangeset
for help on using the changeset viewer.