BlockIt
|
Functions | |
def | buildSTL |
def | propagateTemplateDeps |
def | templateMRO |
def | realizeTemplates |
Variables | |
list | __all__ |
string | header |
def blockit::Fortran::funcs::buildSTL | ( | fileTable, | |
globalTable, | |||
destDir = None |
|||
) |
Build a Standard Template Library from all the templated modules within the fileTable. This is necessary because you can run into circular dependencies between files based on template instantiations. Therefore, you either need to create a separate file for each instantiation or you can put them within a single file and order them appropriately. The latter is the current method. fileTable : symbol table containing all the files globalTable: global symbol table breakOut: boolean on whether to create multiple files or a single STL file [False]
def blockit::Fortran::funcs::propagateTemplateDeps | ( | nonTempBlocks, | |
tempBlocks, | |||
IgnoreSymbols = ASet() |
|||
) |
Propagate template parameters from non-templated blocks that instantiate a templated type to the parent templated block, i.e. the block at the root of a nested sequence of blocks (e.g. a templated module will have all blocks under it templated). nonTempBlocks : symbol table of blocks that are not templated and have template dependencies tempBlocks : complete (all blocks expanded) symbol table of blocks that are templated IgnoreSymbols: a set of symbols that should not be propagated and instantiated.
def blockit::Fortran::funcs::realizeTemplates | ( | table, | |
cache, | |||
IgnoreSymbols = ASet() |
|||
) |
Find all the root templated blocks and loop through them: table : global symbol table lib : FortranLibrary CacheManager object Logic ----- 1. Resolve their objects (i.e. any wildcards and such). 2. Begin main loop and propagate these objects to their children and discover any new types that are created from the templates internally. 3. Propagate these new types to their corresponding template blocks objects sets. 4. Goto to 2 and repeat until no object sets of any template have changed in any of the templated types. Returns a new SymbolTable() with the instantiated templates.
def blockit::Fortran::funcs::templateMRO | ( | caller, | |
tmp, | |||
spec, | |||
sig = None |
|||
) |
00001 '''!............................................................................... 00002 !. 00003 !. This code was pre-parsed by PyF95++, a block parser and code generator. 00004 !. 00005 !................................................................................'''