Representation of the pattern to search for,
containing nested alternative, iterated, negative, and independentpatterns,
plus references to the rules of the used subpatterns.
Accessible via IPatternGraph as meta information to the user about the matching action.
Skeleton data structure for the matcher generation pipeline which stores intermediate results here,
which saves us from representing the nesting structure again and again in the pipeline's data structures
Declaration Syntax
C# 
public class PatternGraph : IPatternGraph
Members
All Members  Constructors  Methods  Properties  Fields  
Icon  Member  Description 

PatternGraph(PatternGraph, PatternGraphEmbedding, PatternGraph, String, Dictionary<(Of <<'(PatternNode, PatternNode>)>>), Dictionary<(Of <<'(PatternEdge, PatternEdge>)>>), Dictionary<(Of <<'(PatternVariable, PatternVariable>)>>)) 
Instantiates a new PatternGraph object as a copy from an original pattern graph, used for inlining.
We create the inlined elements as clones from the original stuff so a maybe already done inlining pass inside a subpattern does not influence us when we inline that subpattern.
 
PatternGraph(String, String, String, String, Boolean, Boolean, array<PatternNode>[]()[][], array<PatternEdge>[]()[][], array<PatternVariable>[]()[][], array<PatternGraphEmbedding>[]()[][], array<Alternative>[]()[][], array<Iterated>[]()[][], array<PatternGraph>[]()[][], array<PatternGraph>[]()[][], array<PatternCondition>[]()[][], array<PatternYielding>[]()[][], array<Boolean,2>[,](,)[,][,], array<Boolean,2>[,](,)[,][,], array<Boolean,2>[,](,)[,][,], array<Boolean,2>[,](,)[,][,], array<Boolean>[]()[][], array<Boolean>[]()[][]) 
Constructs a PatternGraph object.
 
AdaptToMaybeNull(Int32)  
alternatives 
An array of alternatives, each alternative contains in its cases the subpatterns to choose out of.
 
Alternatives 
An array of alternatives, each alternative contains in its cases the subpatterns to choose out of.
 
alternativesPlusInlined 
An array of all alternatives plus the alternatives inlined into this pattern.
 
availabilityOfMaybeNullElements 
For each schedule the availability of the maybe null presets  true if is available, false if not
Empty dictionary if there are no maybe null action preset elements
 
branchingFactor 
Larger than 1 if and only if this rule is to be parallelized, giving the branching factor to apply
 
Conditions 
The conditions used in this pattern graph or it's nested graphs
 
ConditionsPlusInlined 
An array of all conditions plus the conditions inlined into this pattern.
 
correspondingEdges 
Normally null. In case this is a pattern created from a graph,
an array of all edges which created the pattern edges in edges, coupled by position.
 
correspondingNodes 
Normally null. In case this is a pattern created from a graph,
an array of all nodes which created the pattern nodes in nodes, coupled by position.
 
DumpInlined(SourceBuilder)  
DumpOriginal(SourceBuilder)  
edges 
An array of all pattern edges.
 
Edges 
An array of all pattern edges.
 
edgesPlusInlined 
An array of all pattern edges plus the edges inlined into this pattern.
 
edgeToSourceNode 
Contains the source node of the pattern edges in this graph if specified.
 
edgeToSourceNodePlusInlined 
Contains the source node of the pattern edges in this graph if specified.
Plus the additional information from inlined stuff.
 
edgeToTargetNode 
Contains the target node of the pattern edges in this graph if specified.
 
edgeToTargetNodePlusInlined 
Contains the target node of the pattern edges in this graph if specified.
Plus the additional information from inlined stuff.
 
embeddedGraphs 
An array with subpattern embeddings, i.e. subpatterns and the way they are connected to the pattern
 
EmbeddedGraphs 
An array with subpattern embeddings, i.e. subpatterns and the way they are connected to the pattern
 
embeddedGraphsPlusInlined 
An array of all embedded graphs plus the embedded graphs inlined into this pattern.
 
embeddingGraph 
The pattern graph which contains this pattern graph, null if this is a toplevelgraph
 
EmbeddingGraph 
The pattern graph which contains this pattern graph, null if this is a toplevelgraph
 
Explain(SourceBuilder, IGraphModel)  
ExplainNested(SourceBuilder, IGraphModel)  
GetSource(IPatternEdge) 
Returns the source pattern node of the given edge, null if edge dangles to the left
 
GetSource(PatternEdge) 
Returns the source pattern node of the given edge, null if edge dangles to the left.
 
GetSourcePlusInlined(PatternEdge) 
Returns the source pattern node of the given edge, null if edge dangles to the left.
Taking inlined stuff into account.
 
GetTarget(IPatternEdge) 
Returns the target pattern node of the given edge, null if edge dangles to the right
 
GetTarget(PatternEdge) 
Returns the target pattern node of the given edge, null if edge dangles to the right.
 
GetTargetPlusInlined(PatternEdge) 
Returns the target pattern node of the given edge, null if edge dangles to the right.
Taking inlined stuff into account.
 
homomorphicEdges 
A twodimensional array describing which pattern edge may be matched nonisomorphic to which pattern edge.
Including the additional information from inlined stuff.
 
HomomorphicEdges 
A twodimensional array describing which pattern edge may be matched nonisomorphic to which pattern edge.
 
homomorphicEdgesGlobal 
A twodimensional array describing which pattern edge may be matched nonisomorphic to which pattern edge globally,
i.e. the edges are contained in different, but locally nested patterns (alternative cases, iterateds).
Including the additional information from inlined stuff.
 
HomomorphicEdgesGlobal 
A twodimensional array describing which pattern edge may be matched nonisomorphic to which pattern edge globally,
i.e. the edges are contained in different, but locally nested patterns (alternative cases, iterateds).
 
homomorphicNodes 
A twodimensional array describing which pattern node may be matched nonisomorphic to which pattern node.
Including the additional information from inlined stuff.
 
HomomorphicNodes 
A twodimensional array describing which pattern node may be matched nonisomorphic to which pattern node.
 
homomorphicNodesGlobal 
A twodimensional array describing which pattern node may be matched nonisomorphic to which pattern node globally,
i.e. the nodes are contained in different, but locally nested patterns (alternative cases, iterateds).
Including the additional information from inlined stuff.
 
HomomorphicNodesGlobal 
A twodimensional array describing which pattern node may be matched nonisomorphic to which pattern node globally,
i.e. the nodes are contained in different, but locally nested patterns (alternative cases, iterateds).
 
independentPatternGraphs 
An array of independent pattern graphs which must get matched in addition to the main pattern
(PACs  Positive Application Conditions).
 
IndependentPatternGraphs 
An array of independent pattern graphs which must get matched in addition to the main pattern
(PACs  Positive Application Conditions).
 
independentPatternGraphsPlusInlined 
An array of all independent pattern graphs plus the pattern graphs inlined into this pattern.
 
isDefEntityExisting 
Tells whether a def entity (node, edge, variable) is existing in this pattern graph
 
isDefEntityExistingPlusInlined 
Tells whether a def entity (node, edge, variable) is existing in this pattern graph after inlining
 
isIterationBreaking 
If this pattern graph is a negative or independent nested inside an iterated,
it breaks the iterated instead of only the current iterated case (if true).
 
isNonLocalDefEntityExisting 
Tells whether a non local def entity (node, edge, variable) is existing in this pattern graph
 
isNonLocalDefEntityExistingPlusInlined 
Tells whether a non local def entity (node, edge, variable) is existing in this pattern graph after inlining
 
isPatternGraphOnPathFromEnclosingPatternpath 
Tells whether the pattern graph is on a path from some
enclosing negative/independent with patternpath modifier.
Needed for patternpath processing setup (to check patternpath matches stack).
 
isPatternpathLocked 
Tells whether the elements from the parent patterns (but not sibling patterns)
should be isomorphy locked, i.e. not again matchable, even in negatives/independents,
which are normally hom to all. This allows to match paths without a specified end,
eagerly, i.e. as long as a successor exists, even in case of a cycles in the graph.
 
IsRefEntityExisting()()()()  
iterateds 
An array of iterateds, each iterated is matched as often as possible within the specified bounds.
 
Iterateds 
An array of iterateds, each iterated is matched as often as possible within the specified bounds.
 
iteratedsPlusInlined 
An array of all iterateds plus the iterateds inlined into this pattern.
 
maxIsoSpace 
Gives the maximum isoSpace number of the pattern reached by negative/independent nesting,
clipped by LGSPElemFlags.MAX_ISO_SPACE which is the critical point of interest,
this might happen by heavy nesting or by a subpattern call path with
direct or indirect recursion on it including a negative/independent which gets passed.
 
maybeNullElementNames 
Names of the elements which may be null
The following members are ordered along it/generated along this order.
 
name 
The name of the pattern graph
 
Name 
The name of the pattern graph
 
neededEdges 
The edges from the enclosing graph(s) used in this graph or one of it's subgraphs.
Includes inlined elements after inlining.
Set of names, with dummy bool due to lacking set class in c#
 
neededNodes 
The nodes from the enclosing graph(s) used in this graph or one of it's subgraphs.
Includes inlined elements after inlining.
Set of names, with dummy bool due to lacking set class in c#
 
neededVariables 
The variables from the enclosing graph(s) used in this graph or one of it's subgraphs.
Includes inlined elements after inlining.
Map of names to types.
 
negativePatternGraphs 
An array of negative pattern graphs which make the search fail if they get matched
(NACs  Negative Application Conditions).
 
NegativePatternGraphs 
An array of negative pattern graphs which make the search fail if they get matched
(NACs  Negative Application Conditions).
 
negativePatternGraphsPlusInlined 
An array of all negative pattern graphs plus the negative pattern graphs inlined into this pattern.
 
nestedIndependents 
The independents nested within this pattern graph,
but only independents not nested within negatives.
Set of pattern graphs, with dummy null pattern graph due to lacking set class in c#.
Contains first the nested independents before inlinig, afterwards the ones after inlining.
 
nodes 
An array of all pattern nodes.
 
Nodes 
An array of all pattern nodes.
 
nodesPlusInlined 
An array of all pattern nodes plus the nodes inlined into this pattern.
 
originalPatternGraph 
Links to the original pattern graph in case this pattern graph was inlined, otherwise null;
the embeddingGraph of the original pattern graph references the original containing pattern
 
originalSubpatternEmbedding 
Links to the original subpattern embedding which was inlined in case this (negative or independent) pattern graph was inlined, otherwise null.
 
Package 
null if this is a global pattern graph, otherwise the package the pattern graph is contained in.
 
PackagePrefixedName 
The name of the pattern graph in case of a global type,
the name of the pattern graph is prefixed by the name of the package otherwise (package "::" name).
 
parallelizedSchedule 
Notnull in case of parallelization. Contains then exactly 2 entries.
A parallelized matcher consists of a head (first, distributing and collecting work) and a body (following, doing real work).
A pattern with maybe null action presets is not parallelized.
The head and body schedules include negatives and independents, they are derived from
schedulesIncludingNegativesAndIndependents by splitting at the first candidatebinding loop.
 
parallelizedYieldings 
The yielding assignments used in this pattern graph or it's nested graphs, after parallelization
Notnull in case of parallelization.
 
PatchUsersOfCopiedElements(String, Dictionary<(Of <<'(PatternNode, PatternNode>)>>), Dictionary<(Of <<'(PatternEdge, PatternEdge>)>>), Dictionary<(Of <<'(PatternVariable, PatternVariable>)>>))  
pathPrefix 
Prefix for name from nesting path
 
patternGraphsOnPathToEnclosedPatternpath 
The names of the pattern graphs which are on a path to some
enclosed negative/independent with patternpath modifier.
Needed for patternpath processing setup (to write to patternpath matches stack).
 
PrepareInline()()()() 
Copies all the elements in the pattern graph to the XXXPlusInlined attributes.
This duplicates the pattern, the duplicate is used for the computing and emitting the real code,
whereas the original version is retained as interface to the user (and used in generating the match building).
When subpatterns/embedded graphs get inlined, only the duplicate is changed.
 
RevertMaybeNullAdaption(Int32)  
schedules 
The schedules for this pattern graph without any nested pattern graphs.
Normally one, but each maybe null action preset causes doubling of schedules.
 
schedulesIncludingNegativesAndIndependents 
The schedules for this pattern graph including negatives and independents.
Normally one, but each maybe null action preset causes doubling of schedules.
 
totallyHomomorphicEdges 
An array telling which pattern edge is to be matched nonisomorphic(/independent) against any other edge.
Including the additional information from inlined stuff.
 
TotallyHomomorphicEdges 
A onedimensional array telling which pattern edge is to be matched nonisomorphic against any other edge.
 
totallyHomomorphicNodes 
An array telling which pattern node is to be matched nonisomorphic(/independent) against any other node.
Including the additional information from inlined stuff.
 
TotallyHomomorphicNodes 
A onedimensional array telling which pattern node is to be matched nonisomorphic against any other node.
 
usedSubpatterns 
The subpatterns used by this pattern (directly as well as indirectly),
only filled/valid if this is a top level pattern graph of a rule or subpattern.
Set of matching patterns, with dummy null matching pattern due to lacking set class in c#
Contains first the used subpatterns before inlinnig, afterwards the ones after inlining.
 
variables 
An array of all pattern variables.
 
Variables 
An array of all pattern variables.
 
variablesPlusInlined 
An array of all pattern variables plus the variables inlined into this pattern.
 
WasInlinedHere(PatternGraphEmbedding)  
Yieldings 
The yielding assignments used in this pattern graph or it's nested graphs
 
YieldingsPlusInlined 
An array of all yielding assignments plus the yielding assignments inlined into this pattern.

Inheritance Hierarchy
Object  
PatternGraph 