Envision
A visual programming IDE for object-oriented languages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
CppImport::AllMetaDefinitions Class Reference

provides the interface to generate all sorts of MetaDefinitions during macro import. More...

Public Member Functions

 AllMetaDefinitions (OOModel::Project *root, ClangHelpers &clangHelper, const MacroDefinitions &macroDefinitions, MacroExpansions &macroExpansions)
 
void createMetaDef (QList< Model::Node * > nodes, MacroExpansion *expansion, NodeToCloneMap &mapping, QList< MacroArgumentInfo > &arguments)
 
void handleXMacros ()
 

Private Member Functions

void applyPartialBeginSpecializationTransformation (MacroExpansion *hExpansion, MacroExpansion *cppExpansion)
 
MacroExpansionbasePartialBegin (MacroExpansion *partialBeginExpansion)
 
OOModel::MetaDefinitioncreateXMacroMetaDef (MacroExpansion *hExpansion, MacroExpansion *cppExpansion)
 
void handlePartialBeginSpecialization (OOModel::MetaDefinition *metaDef, MacroExpansion *expansion, MacroExpansion *beginChild)
 
MacroExpansionmatchingXMacroExpansion (Model::Node *node)
 
void mergeClasses (OOModel::Class *merged, OOModel::Class *mergee)
 
OOModel::DeclarationmetaDefinitionParent (const clang::MacroDirective *md)
 
MacroExpansionpartialBeginChild (MacroExpansion *expansion)
 
OOModel::MetaDefinitionxMacroMetaDefinition (const clang::MacroDirective *md)
 

Private Attributes

ClangHelpersclang_
 
const MacroDefinitionsmacroDefinitions_
 
MacroExpansionsmacroExpansions_
 
OOModel::Projectroot_ {}
 
QHash< QString, Model::List * > specializations_
 
QSet< OOModel::MetaCallExpression * > specialized_
 
StandardMetaDefinitions standardMetaDefinitions_
 
QHash< QString, OOModel::MetaDefinition * > xMacrometaDefinitions_
 

Detailed Description

provides the interface to generate all sorts of MetaDefinitions during macro import.

processes special macro types (partial begin macro specialization, x-Macro). complete syntactic macros are processed in the child component StandardMetaDefinitions. creates and stores x-Macro MetaDefinitions.

Constructor & Destructor Documentation

◆ AllMetaDefinitions()

CppImport::AllMetaDefinitions::AllMetaDefinitions ( OOModel::Project root,
ClangHelpers clangHelper,
const MacroDefinitions macroDefinitions,
MacroExpansions macroExpansions 
)

Member Function Documentation

◆ applyPartialBeginSpecializationTransformation()

void CppImport::AllMetaDefinitions::applyPartialBeginSpecializationTransformation ( MacroExpansion hExpansion,
MacroExpansion cppExpansion 
)
private

◆ basePartialBegin()

MacroExpansion * CppImport::AllMetaDefinitions::basePartialBegin ( MacroExpansion partialBeginExpansion)
private

◆ createMetaDef()

void CppImport::AllMetaDefinitions::createMetaDef ( QList< Model::Node * >  nodes,
MacroExpansion expansion,
NodeToCloneMap mapping,
QList< MacroArgumentInfo > &  arguments 
)

◆ createXMacroMetaDef()

OOModel::MetaDefinition * CppImport::AllMetaDefinitions::createXMacroMetaDef ( MacroExpansion hExpansion,
MacroExpansion cppExpansion 
)
private

◆ handlePartialBeginSpecialization()

void CppImport::AllMetaDefinitions::handlePartialBeginSpecialization ( OOModel::MetaDefinition metaDef,
MacroExpansion expansion,
MacroExpansion beginChild 
)
private

◆ handleXMacros()

void CppImport::AllMetaDefinitions::handleXMacros ( )

◆ matchingXMacroExpansion()

MacroExpansion * CppImport::AllMetaDefinitions::matchingXMacroExpansion ( Model::Node node)
private

◆ mergeClasses()

void CppImport::AllMetaDefinitions::mergeClasses ( OOModel::Class merged,
OOModel::Class mergee 
)
private

◆ metaDefinitionParent()

OOModel::Declaration * CppImport::AllMetaDefinitions::metaDefinitionParent ( const clang::MacroDirective *  md)
private

◆ partialBeginChild()

MacroExpansion * CppImport::AllMetaDefinitions::partialBeginChild ( MacroExpansion expansion)
private

◆ xMacroMetaDefinition()

OOModel::MetaDefinition * CppImport::AllMetaDefinitions::xMacroMetaDefinition ( const clang::MacroDirective *  md)
private

Member Data Documentation

◆ clang_

ClangHelpers& CppImport::AllMetaDefinitions::clang_
private

◆ macroDefinitions_

const MacroDefinitions& CppImport::AllMetaDefinitions::macroDefinitions_
private

◆ macroExpansions_

MacroExpansions& CppImport::AllMetaDefinitions::macroExpansions_
private

◆ root_

OOModel::Project* CppImport::AllMetaDefinitions::root_ {}
private

◆ specializations_

QHash<QString, Model::List*> CppImport::AllMetaDefinitions::specializations_
private

◆ specialized_

QSet<OOModel::MetaCallExpression*> CppImport::AllMetaDefinitions::specialized_
private

◆ standardMetaDefinitions_

StandardMetaDefinitions CppImport::AllMetaDefinitions::standardMetaDefinitions_
private

◆ xMacrometaDefinitions_

QHash<QString, OOModel::MetaDefinition*> CppImport::AllMetaDefinitions::xMacrometaDefinitions_
private