-
Notifications
You must be signed in to change notification settings - Fork 26
Node query processing steps
Of particular interest are cases where a LHSinferred node name is provided in a nodes argument to a step where it might be parsed and evaluated in a vars2... environment. Either LHSinferred names must be ensured safe or that processing path must be prevented.
Notes include which other major methods, or modelDef or modelDef$maps data or methods, are used.
- Uses
expandNodeNames(...returnType = 'ids')|modelDef$maps$isEndNode_byGID.
- Uses
modelDef$nodeName2GraphIDs
- Uses
modelDef$nodeName2GraphIDs
-
Uses
expandNodeNames|getDeclnfo -
Circuitous:
expandNodeNamesgoes to graphIDs and back to names.getDeclInfogoes togetDeclIDwhich goes back to graphIDs in order to declIDs
-
Uses
expandNodeNames|getDistribution -
This and several others are circuitous (back and forth between graphIDs and names multiple times)
- Uses
expandNodeNames|getDistribution,getParamExpr
- Uses
expandNodeNames|getNodeType
- Uses
expandNodeNames|getDeclnfo
- Uses
expandNodeNames|getDistribution
- Uses
modelDef$nodeName2GraphIDs|modelDef$graphIDs2indexedNodeInfo
-
Previous: Uses
isDataFromGraphID(modelDef$maps$graphIDs)twice (note this is on allgraphIDs) -
Previous: Uses
expandNodeNames(modelDef$maps$graphID_2_nodeName[validValues],...) -
New (fixIssue340): filters out
LHSinferredtypes from the begining. Uses newexpandNodeNamesFromGraphIDsto avoid ID -> name -> ID -> name where the middle "name -> ID" could break from a LHSinferred node.
-
Uses
modelDef$nodeName2GraphIDs|modelDef$maps$elementNames[graphID],modelDef$maps$graphID_2_nodeName[graphID] -
Will not get vertexIDs, so will not return vertex names, hence will not return LHSinferred names.
- Uses
expandNodeNames(..., returnType = 'ids')|expandNodeNames(not a typo)
- Uses
getNodeNames()|eval(parse(...), envir = isDataEnv)
-
Uses
modelDef$nodeName2GraphIDs|isDataFromGraphID -
This is safe because no vertexIDs (hence no LHSinferred nodes) are passed to
isDataFromGraphID
- Uses
modelDef$maps$graphID_2_nodeName|eval(parse(...), envir = isDataEnv), so cannot accept a vertex name such as a split LHSinferred name.
-
Uses
modelDef$maps$graphID_2_nodeName -
Should be safe.
-
No longer used anywhere, so could be deprecated.
-
Uses
modelDef$nodeName2GraphIDs|modelDef$maps$nimbleGraph$getDependencyPathCountOneNode -
Should be safe because latter function dives into C++
getDependencyPathCountOneNode, which should handle any index. -
Used only from
conjugacyRelationshipsClass::checkConjugacy
- Uses
modelDef$nodeName2GraphIDs|modelDef$maps$elementID_2_vertexID|modelDef$maps$nimbleGraph$getDependencies|modelDef$maps$types,isDataFromGraphID,modelDef$nodeName2GraphIDs(modelDef$maps$graphID_2_nodeName[depIDs],modelDef$maps$elementNames,modelDef$maps$nodeNames
nodeName2GraphIDs returns either graphIDs (nodeFunctions and RHSonly) (if nodeFunctionID == TRUE) or elementIDs.
-
Calls
parseEval...steps so cannot take LHSinferred names as input. -
Uses
maps$vars2GraphID_functions_and_RHSonlyormaps$vars2ID_elements, so returns either graphIDs or elementIDs (not vertexIDs)