Program Listing for File fixupInitializers.h#
↰ Return to documentation for file (src/frontend/SageIII/astPostProcessing/fixupInitializers.h)
// This AST postprocessing fixes some known way in which include files
// can be used to initialized variable declarations.
//
// For example:
// int array[] =
// #include<numbers.h>
// ;
//
// See Cxx_tests/test2020_46.C for an example.
//
#ifndef FIXUP_INITIALIZERS_H
#define FIXUP_INITIALIZERS_H
// DQ (8/25/2020):
// void fixupInitializersUsingIncludeFiles (SgNode* node);
void fixupInitializersUsingIncludeFiles (SgProject* node);
class FixupInitializersUsingIncludeFilesInheritedAttribute
{
public:
bool isInsideVariableDeclaration;
SgVariableDeclaration* variableDeclaration;
bool isInsideInitializer;
SgInitializedName* initializedName;
FixupInitializersUsingIncludeFilesInheritedAttribute();
FixupInitializersUsingIncludeFilesInheritedAttribute( const FixupInitializersUsingIncludeFilesInheritedAttribute & X );
};
class FixupInitializersUsingIncludeFilesSynthesizedAttribute
{
public:
FixupInitializersUsingIncludeFilesSynthesizedAttribute();
FixupInitializersUsingIncludeFilesSynthesizedAttribute( const FixupInitializersUsingIncludeFilesSynthesizedAttribute & X );
};
class FixupInitializersUsingIncludeFilesTraversal
: public SgTopDownBottomUpProcessing<FixupInitializersUsingIncludeFilesInheritedAttribute,FixupInitializersUsingIncludeFilesSynthesizedAttribute>
{
public:
FixupInitializersUsingIncludeFilesTraversal();
// refactored code.
void findAndRemoveMatchingInclude(SgStatement* statement, SgExpression* expression, PreprocessingInfo::RelativePositionType location_to_search);
// Required traversal function
FixupInitializersUsingIncludeFilesInheritedAttribute
evaluateInheritedAttribute ( SgNode* node, FixupInitializersUsingIncludeFilesInheritedAttribute inheritedAttribute );
// Required traversal function
FixupInitializersUsingIncludeFilesSynthesizedAttribute evaluateSynthesizedAttribute (
SgNode* astNode,
FixupInitializersUsingIncludeFilesInheritedAttribute inheritedAttribute,
SubTreeSynthesizedAttributes synthesizedAttributeList );
};
// endif for FIXUP_INITIALIZERS_H
#endif