Program Listing for File fixupSourcePositionInformation.h

Program Listing for File fixupSourcePositionInformation.h#

Return to documentation for file (src/frontend/SageIII/astFixup/fixupSourcePositionInformation.h)

// DQ (11/1/2006):
#ifndef __fixupSourcePos
#define __fixupSourcePos



void fixupSourcePositionInformation ( SgNode* node );


class FixupSourcePositionInformationInheritedAttribute
   {
     public:
          FixupSourcePositionInformationInheritedAttribute();
   };

class FixupSourcePositionInformationSynthesizedAttribute
   {
     public:
          FixupSourcePositionInformationSynthesizedAttribute();
          FixupSourcePositionInformationSynthesizedAttribute( const FixupSourcePositionInformationSynthesizedAttribute & X );

          Sg_File_Info* startingPosition;
          Sg_File_Info* endingPosition;
          SgNode* associatedNode;
   };

// class FixupSourcePositionInformation : public AstSimpleProcessing
class FixupSourcePositionInformation
   : public SgTopDownBottomUpProcessing<FixupSourcePositionInformationInheritedAttribute,
                                        FixupSourcePositionInformationSynthesizedAttribute>
   {
     public:
       // void visit ( SgNode* node );
          FixupSourcePositionInformationInheritedAttribute
               evaluateInheritedAttribute ( SgNode* node,
                                            FixupSourcePositionInformationInheritedAttribute ia );

          FixupSourcePositionInformationSynthesizedAttribute
               evaluateSynthesizedAttribute ( SgNode* node,
                                            FixupSourcePositionInformationInheritedAttribute ia,
                                            SynthesizedAttributesList salist );
     private:
          void processChildSynthesizedAttributes ( FixupSourcePositionInformationSynthesizedAttribute & returnAttribute, SynthesizedAttributesList & l );
          void fixupCompilerGeneratedNodesToBeUniformlyMarked ( SgLocatedNode* locatedNode );
          void fixupSourcePositionUnavailableInFrontendToBeUniformlyMarked ( SgLocatedNode* locatedNode );
   };



class FixupSourcePositionConstructs : public ROSE_VisitTraversal
   {
     public:
     virtual ~FixupSourcePositionConstructs() {};
          void visit (SgNode* node);
   };

void fixupSourcePositionConstructs();

#endif