Changes in src/SynTree/Initializer.cc [d3b7937:7a69460]
- File:
-
- 1 edited
-
src/SynTree/Initializer.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Initializer.cc
rd3b7937 r7a69460 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 : Mon Apr 11 17:36:10 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: "; 96 if ( ctor ) { 97 os << " initially constructed with "; 98 ctor->print( os, indent+2 ); 99 } // if 100 101 if ( dtor ) { 102 os << " destructed with "; 103 dtor->print( os, indent+2 ); 104 } 105 106 if ( init ) { 107 os << " with fallback C-style initializer: "; 108 init->print( os, indent+2 ); 109 } 110 } 111 112 std::ostream & operator<<( std::ostream & out, Initializer * init ) { 113 init->print( out ); 114 return out; 115 } 116 81 117 // Local Variables: // 82 118 // tab-width: 4 //
Note:
See TracChangeset
for help on using the changeset viewer.