Program Listing for File markTemplateInstantiationsForOutput.h#
↰ Return to documentation for file (src/frontend/SageIII/astPostProcessing/markTemplateInstantiationsForOutput.h)
#ifndef MARK_TEMPLATE_INSTANTIATION_FOR_OUTPUT_H
#define MARK_TEMPLATE_INSTANTIATION_FOR_OUTPUT_H
// DQ (5/27/2005):
void markTemplateInstantiationsForOutput( SgNode* node );
class MarkTemplateInstantiationsForOutputSupportInheritedAttribute
{
public:
bool insideDeclarationToOutput;
MarkTemplateInstantiationsForOutputSupportInheritedAttribute();
};
class MarkTemplateInstantiationsForOutputSupportSynthesizedAttribute
{
public:
MarkTemplateInstantiationsForOutputSupportSynthesizedAttribute();
};
// DQ (6/21/2005): This class controls the output of template declarations in the generated code (by the unparser).
class MarkTemplateInstantiationsForOutputSupport
: public SgTopDownBottomUpProcessing<MarkTemplateInstantiationsForOutputSupportInheritedAttribute,
MarkTemplateInstantiationsForOutputSupportSynthesizedAttribute>
{
public:
SgSourceFile* currentFile;
// List of declarations referenced in source code or functions and member
// functions marked as to be output in source code. These are the list
// of required definitions.
std::list<SgDeclarationStatement*> listOfTemplateDeclarationsToOutput;
MarkTemplateInstantiationsForOutputSupport(SgSourceFile* file);
// Required traversal function
// void visit (SgNode* node);
MarkTemplateInstantiationsForOutputSupportInheritedAttribute
evaluateInheritedAttribute ( SgNode* node, MarkTemplateInstantiationsForOutputSupportInheritedAttribute inheritedAttribute );
MarkTemplateInstantiationsForOutputSupportSynthesizedAttribute
evaluateSynthesizedAttribute ( SgNode* node,
MarkTemplateInstantiationsForOutputSupportInheritedAttribute inheritedAttribute,
SubTreeSynthesizedAttributes synthesizedAttributeList );
private:
// Abstract details of saveing defining and non-defining declarations
void saveDeclaration ( SgDeclarationStatement* declaration );
};
// DQ (8/27/2005):
class MarkTemplateInstantiationsForOutput
{
public:
// static void BuildTemplateDeclarationLists ( SgFile* file );
static std::set<SgDeclarationStatement*> BuildSetOfRequiredTemplateDeclarations ( SgNode* node, SgSourceFile* file );
static void ProcessClassTemplateDeclarations ( std::set<SgDeclarationStatement*> setOfRequiredDeclarations, SgSourceFile* file );
static void ProcessFunctionTemplateDeclarations ( std::set<SgDeclarationStatement*> setOfRequiredDeclarations, SgSourceFile* file );
static void ProcessMemberFunctionTemplateDeclarations ( std::set<SgDeclarationStatement*> setOfRequiredDeclarations, SgSourceFile* file );
};
// endif for MARK_TEMPLATE_INSTANTIATION_FOR_OUTPUT_H
#endif