Changeset c3f551b


Ignore:
Timestamp:
Nov 30, 2017, 6:06:46 PM (6 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
0a6aad4
Parents:
ef3d798
git-author:
Rob Schluntz <rschlunt@…> (11/30/17 17:40:16)
git-committer:
Rob Schluntz <rschlunt@…> (11/30/17 18:06:46)
Message:

Convert InitFlattener? to PassVisitor?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/InitTweak/InitTweak.cc

    ref3d798 rc3f551b  
    6767                };
    6868
    69                 class InitFlattener : public Visitor {
    70                         public:
    71                         virtual void visit( SingleInit * singleInit );
    72                         virtual void visit( ListInit * listInit );
     69                struct InitFlattener : public WithShortCircuiting {
     70                        void previsit( SingleInit * singleInit ) {
     71                                visit_children = false;
     72                                argList.push_back( singleInit->value->clone() );
     73                        }
    7374                        std::list< Expression * > argList;
    7475                };
    7576
    76                 void InitFlattener::visit( SingleInit * singleInit ) {
    77                         argList.push_back( singleInit->get_value()->clone() );
    78                 }
    79 
    80                 void InitFlattener::visit( ListInit * listInit ) {
    81                         // flatten nested list inits
    82                         std::list<Initializer*>::iterator it = listInit->begin();
    83                         for ( ; it != listInit->end(); ++it ) {
    84                                 (*it)->accept( *this );
    85                         }
    86                 }
    8777        }
    8878
    8979        std::list< Expression * > makeInitList( Initializer * init ) {
    90                 InitFlattener flattener;
     80                PassVisitor<InitFlattener> flattener;
    9181                maybeAccept( init, flattener );
    92                 return flattener.argList;
     82                return flattener.pass.argList;
    9383        }
    9484
Note: See TracChangeset for help on using the changeset viewer.