Ignore:
Timestamp:
Oct 29, 2019, 4:01:24 PM (6 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
773db65, 9421f3d8
Parents:
7951100 (diff), 8364209 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/DeclReplacer.h

    r7951100 rb067d9b  
    2626        typedef std::map< DeclarationWithType *, DeclarationWithType * > DeclMap;
    2727        typedef std::map< TypeDecl *, TypeDecl * > TypeMap;
     28        typedef std::map< DeclarationWithType *, Expression * > ExprMap;
    2829
    29         void replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug = false );
    30         void replace( BaseSyntaxNode * node, const TypeMap & typeMap, bool debug = false );
    31         void replace( BaseSyntaxNode * node, const DeclMap & declMap, const TypeMap & typeMap, bool debug = false );
     30        size_t replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug = false );
     31        size_t replace( BaseSyntaxNode * node, const TypeMap & typeMap, bool debug = false );
     32        size_t replace( BaseSyntaxNode * node, const DeclMap & declMap, const TypeMap & typeMap, bool debug = false );
     33
     34        size_t replace( BaseSyntaxNode *& node, const ExprMap & exprMap, bool debug = false);
     35
     36        template<typename T>
     37        size_t replace( T *& node, const ExprMap & exprMap, bool debug = false ) {
     38                if ( ! node ) return 0ul;
     39                BaseSyntaxNode * arg = node;
     40                size_t replaced = replace( arg, exprMap, debug );
     41                node = dynamic_cast<T *>( arg );
     42                assertf( node, "DeclReplacer fundamentally changed the type of its argument." );
     43                return replaced;
     44        }
    3245}
    3346
Note: See TracChangeset for help on using the changeset viewer.