Ignore:
Timestamp:
May 18, 2015, 11:20:23 AM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
51587aa
Parents:
a32b204
Message:

licencing: third groups of files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • translator/SynTree/Visitor.h

    ra32b204 r0dd3a2f  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// Visitor.h --
     8//
     9// Author           : Richard C. Bilson
     10// Created On       : Mon May 18 07:44:20 2015
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 11:15:55 2015
     13// Update Count     : 2
     14//
     15
    116#ifndef VISITOR_H
    217#define VISITOR_H
     
    621#include "CompilerError.h"
    722
    8 
    923class Visitor {
    1024  protected:
    11     Visitor();
    12     virtual ~Visitor();
     25        Visitor();
     26        virtual ~Visitor();
    1327  public:
    14     virtual void visit( ObjectDecl *objectDecl );
    15     virtual void visit( FunctionDecl *functionDecl );
    16     virtual void visit( StructDecl *aggregateDecl );
    17     virtual void visit( UnionDecl *aggregateDecl );
    18     virtual void visit( EnumDecl *aggregateDecl );
    19     virtual void visit( ContextDecl *aggregateDecl );
    20     virtual void visit( TypeDecl *typeDecl );
    21     virtual void visit( TypedefDecl *typeDecl );
     28        virtual void visit( ObjectDecl *objectDecl );
     29        virtual void visit( FunctionDecl *functionDecl );
     30        virtual void visit( StructDecl *aggregateDecl );
     31        virtual void visit( UnionDecl *aggregateDecl );
     32        virtual void visit( EnumDecl *aggregateDecl );
     33        virtual void visit( ContextDecl *aggregateDecl );
     34        virtual void visit( TypeDecl *typeDecl );
     35        virtual void visit( TypedefDecl *typeDecl );
    2236
    23     virtual void visit( CompoundStmt *compoundStmt );
    24     virtual void visit( ExprStmt *exprStmt );
    25     virtual void visit( IfStmt *ifStmt );
    26     virtual void visit( WhileStmt *whileStmt );
    27     virtual void visit( ForStmt *forStmt );
    28     virtual void visit( SwitchStmt *switchStmt );
    29     virtual void visit( ChooseStmt *switchStmt );
    30     virtual void visit( FallthruStmt *switchStmt );
    31     virtual void visit( CaseStmt *caseStmt );
    32     virtual void visit( BranchStmt *branchStmt );
    33     virtual void visit( ReturnStmt *returnStmt );
    34     virtual void visit( TryStmt *tryStmt );
    35     virtual void visit( CatchStmt *catchStmt );
    36     virtual void visit( FinallyStmt *finallyStmt );
    37     virtual void visit( NullStmt *nullStmt );
    38     virtual void visit( DeclStmt *declStmt );
     37        virtual void visit( CompoundStmt *compoundStmt );
     38        virtual void visit( ExprStmt *exprStmt );
     39        virtual void visit( IfStmt *ifStmt );
     40        virtual void visit( WhileStmt *whileStmt );
     41        virtual void visit( ForStmt *forStmt );
     42        virtual void visit( SwitchStmt *switchStmt );
     43        virtual void visit( ChooseStmt *switchStmt );
     44        virtual void visit( FallthruStmt *switchStmt );
     45        virtual void visit( CaseStmt *caseStmt );
     46        virtual void visit( BranchStmt *branchStmt );
     47        virtual void visit( ReturnStmt *returnStmt );
     48        virtual void visit( TryStmt *tryStmt );
     49        virtual void visit( CatchStmt *catchStmt );
     50        virtual void visit( FinallyStmt *finallyStmt );
     51        virtual void visit( NullStmt *nullStmt );
     52        virtual void visit( DeclStmt *declStmt );
    3953
    40     virtual void visit( ApplicationExpr *applicationExpr );
    41     virtual void visit( UntypedExpr *untypedExpr );
    42     virtual void visit( NameExpr *nameExpr );
    43     virtual void visit( CastExpr *castExpr );
    44     virtual void visit( AddressExpr *addressExpr );
    45     virtual void visit( LabelAddressExpr *labAddressExpr );
    46     virtual void visit( UntypedMemberExpr *memberExpr );
    47     virtual void visit( MemberExpr *memberExpr );
    48     virtual void visit( VariableExpr *variableExpr );
    49     virtual void visit( ConstantExpr *constantExpr );
    50     virtual void visit( SizeofExpr *sizeofExpr );
    51     virtual void visit( AttrExpr *attrExpr );
    52     virtual void visit( LogicalExpr *logicalExpr );
    53     virtual void visit( ConditionalExpr *conditionalExpr );
    54     virtual void visit( CommaExpr *commaExpr );
    55     virtual void visit( TupleExpr *tupleExpr );
    56     virtual void visit( SolvedTupleExpr *tupleExpr );
    57     virtual void visit( TypeExpr *typeExpr );
    58     virtual void visit( UntypedValofExpr *valofExpr );
     54        virtual void visit( ApplicationExpr *applicationExpr );
     55        virtual void visit( UntypedExpr *untypedExpr );
     56        virtual void visit( NameExpr *nameExpr );
     57        virtual void visit( CastExpr *castExpr );
     58        virtual void visit( AddressExpr *addressExpr );
     59        virtual void visit( LabelAddressExpr *labAddressExpr );
     60        virtual void visit( UntypedMemberExpr *memberExpr );
     61        virtual void visit( MemberExpr *memberExpr );
     62        virtual void visit( VariableExpr *variableExpr );
     63        virtual void visit( ConstantExpr *constantExpr );
     64        virtual void visit( SizeofExpr *sizeofExpr );
     65        virtual void visit( AttrExpr *attrExpr );
     66        virtual void visit( LogicalExpr *logicalExpr );
     67        virtual void visit( ConditionalExpr *conditionalExpr );
     68        virtual void visit( CommaExpr *commaExpr );
     69        virtual void visit( TupleExpr *tupleExpr );
     70        virtual void visit( SolvedTupleExpr *tupleExpr );
     71        virtual void visit( TypeExpr *typeExpr );
     72        virtual void visit( UntypedValofExpr *valofExpr );
    5973
    60     virtual void visit( VoidType *basicType );
    61     virtual void visit( BasicType *basicType );
    62     virtual void visit( PointerType *pointerType );
    63     virtual void visit( ArrayType *arrayType );
    64     virtual void visit( FunctionType *functionType );
    65     virtual void visit( StructInstType *aggregateUseType );
    66     virtual void visit( UnionInstType *aggregateUseType );
    67     virtual void visit( EnumInstType *aggregateUseType );
    68     virtual void visit( ContextInstType *aggregateUseType );
    69     virtual void visit( TypeInstType *aggregateUseType );
    70     virtual void visit( TupleType *tupleType );
    71     virtual void visit( TypeofType *typeofType );
    72     virtual void visit( AttrType *attrType );
     74        virtual void visit( VoidType *basicType );
     75        virtual void visit( BasicType *basicType );
     76        virtual void visit( PointerType *pointerType );
     77        virtual void visit( ArrayType *arrayType );
     78        virtual void visit( FunctionType *functionType );
     79        virtual void visit( StructInstType *aggregateUseType );
     80        virtual void visit( UnionInstType *aggregateUseType );
     81        virtual void visit( EnumInstType *aggregateUseType );
     82        virtual void visit( ContextInstType *aggregateUseType );
     83        virtual void visit( TypeInstType *aggregateUseType );
     84        virtual void visit( TupleType *tupleType );
     85        virtual void visit( TypeofType *typeofType );
     86        virtual void visit( AttrType *attrType );
    7387
    74     virtual void visit( SingleInit *singleInit );
    75     virtual void visit( ListInit *listInit );
     88        virtual void visit( SingleInit *singleInit );
     89        virtual void visit( ListInit *listInit );
    7690
    77     virtual void visit( Subrange *subrange );
     91        virtual void visit( Subrange *subrange );
    7892
    79     virtual void visit( Constant *constant );
     93        virtual void visit( Constant *constant );
    8094  private:
    81     virtual void visit( AggregateDecl *aggregateDecl );
    82     virtual void visit( NamedTypeDecl *typeDecl );
    83     virtual void visit( ReferenceToType *aggregateUseType );
     95        virtual void visit( AggregateDecl *aggregateDecl );
     96        virtual void visit( NamedTypeDecl *typeDecl );
     97        virtual void visit( ReferenceToType *aggregateUseType );
    8498};
    8599
    86100template< typename TreeType, typename VisitorType >
    87101inline void maybeAccept( TreeType *tree, VisitorType &visitor ) {
    88     if ( tree ) {
    89         tree->accept( visitor );
    90     }
     102        if ( tree ) {
     103                tree->accept( visitor );
     104        }
    91105}
    92106
    93107template< typename Container, typename VisitorType >
    94108inline void acceptAll( Container &container, VisitorType &visitor ) {
    95     SemanticError errors;
    96     for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
    97         try {
    98             if ( *i ) {
    99                 (*i)->accept( visitor );
    100             }
    101         } catch( SemanticError &e ) {
    102             errors.append( e );
     109        SemanticError errors;
     110        for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
     111                try {
     112                        if ( *i ) {
     113                                (*i)->accept( visitor );
     114                        }
     115                } catch( SemanticError &e ) {
     116                        errors.append( e );
     117                }
    103118        }
    104     }
    105     if ( ! errors.isEmpty() ) {
    106         throw errors;
    107     }
     119        if ( ! errors.isEmpty() ) {
     120                throw errors;
     121        }
    108122}
    109123
    110124template< typename Container, typename VisitorType >
    111125void acceptAllFold( Container &container, VisitorType &visitor, VisitorType &around ) {
    112     SemanticError errors;
    113     for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
    114         try {
    115             if ( *i ) {
    116                 VisitorType *v = new VisitorType;
    117                 (*i)->accept( *v );
     126        SemanticError errors;
     127        for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
     128                try {
     129                        if ( *i ) {
     130                                VisitorType *v = new VisitorType;
     131                                (*i)->accept( *v );
    118132
    119                 typename Container::iterator nxt = i; nxt++; // forward_iterator
    120                 if ( nxt == container.end() )
    121                     visitor += *v;
    122                 else
    123                     visitor += *v + around;
     133                                typename Container::iterator nxt = i; nxt++; // forward_iterator
     134                                if ( nxt == container.end() )
     135                                        visitor += *v;
     136                                else
     137                                        visitor += *v + around;
    124138
    125                 delete v;
    126             }
    127         } catch( SemanticError &e ) {
    128             errors.append( e );
    129         }
    130     }
    131     if ( ! errors.isEmpty() ) {
    132         throw errors;
    133     }
     139                                delete v;
     140                        } // if
     141                } catch( SemanticError &e ) {
     142                        errors.append( e );
     143                } // try
     144        } // for
     145        if ( ! errors.isEmpty() ) {
     146                throw errors;
     147        } // if
    134148}
    135149
    136150#endif // VISITOR_H
     151
     152// Local Variables: //
     153// tab-width: 4 //
     154// mode: c++ //
     155// compile-command: "make install" //
     156// End: //
Note: See TracChangeset for help on using the changeset viewer.