Click or drag to resize

LGSPGraph Class

An implementation of the IGraph interface.
Inheritance Hierarchy
SystemObject
  de.unika.ipd.grGen.libGrBaseGraph
    de.unika.ipd.grGen.lgspLGSPGraph
      de.unika.ipd.grGen.lgspLGSPNamedGraph

Namespace:  de.unika.ipd.grGen.lgsp
Assembly:  lgspBackend (in lgspBackend.dll) Version: GrGen.NET 7.2
Syntax
C#
public class LGSPGraph : BaseGraph

The LGSPGraph type exposes the following members.

Constructors
  NameDescription
Public methodLGSPGraph(IGraphModel, IGlobalVariables)
Constructs an LGSPGraph object with the given model, the given global variables, and an automatically generated name.
Public methodLGSPGraph(LGSPGraph, String)
Copy constructor.
Public methodLGSPGraph(IGraphModel, IGlobalVariables, String)
Constructs an LGSPGraph object with the given model, the given global variables, and the given name.
Public methodLGSPGraph(LGSPGraph, String, IDictionaryIGraphElement, IGraphElement)
Copy constructor.
Top
Properties
  NameDescription
Public propertyChangesCounter
Returns a counter of the number of changes that occured since the graph was created. If it's different since last time you visited, the graph has changed (but it may be back again in the original state). Only graph structure changes are counted, attribute changes are not included.
(Overrides BaseGraphChangesCounter.)
Public propertyCustomCommandsAndDescriptions
The graph-backend dependent commands that are available, and a description of each command.
(Overrides BaseGraphCustomCommandsAndDescriptions.)
Public propertyEdges (Inherited from BaseGraph.)
Public propertyGlobalVariables
The global variables of the graph rewrite system; convenience access to save parameter passing.
(Overrides BaseGraphGlobalVariables.)
Public propertyGraphId (Overrides BaseGraphGraphId.)
Public propertyIndices
The indices associated with the graph.
(Overrides BaseGraphIndices.)
Public propertyModel
The model associated with the graph.
(Overrides BaseGraphModel.)
Public propertyName
A name associated with the graph.
(Overrides BaseGraphName.)
Public propertyNodes (Inherited from BaseGraph.)
Public propertyNumEdges (Inherited from BaseGraph.)
Public propertyNumNodes (Inherited from BaseGraph.)
Public propertyReuseOptimization
If true (the default case), elements deleted during a rewrite may be reused in the same rewrite. As a result new elements may not be discriminable anymore from already deleted elements using object equality, hash maps, etc. In cases where this is needed this optimization should be disabled.
(Overrides BaseGraphReuseOptimization.)
Public propertyUniquenessHandler
The uniqueness handler associated with the graph.
(Overrides BaseGraphUniquenessHandler.)
Top
Methods
  NameDescription
Public methodAddEdge(IEdge) (Overrides BaseGraphAddEdge(IEdge).)
Public methodAddEdge(LGSPEdge)
Adds an existing LGSPEdge object to the graph. The edge must not be part of any graph, yet! Source and target of the edge must already be part of the graph.
Public methodAddEdge(EdgeType, LGSPNode, LGSPNode)
Adds a new edge to the graph.
Public methodAddEdge(EdgeType, INode, INode) (Overrides BaseGraphAddEdge(EdgeType, INode, INode).)
Public methodAddEdgeWithoutEvents
Adds an existing edge to this graph. The graph may not already contain the edge! The edge may not be connected to any other elements! Intended only for undo, clone, retyping and internal use!
Public methodAddLGSPNode
Creates a new LGSPNode according to the given type and adds it to the graph.
Public methodAddNode(INode) (Overrides BaseGraphAddNode(INode).)
Public methodAddNode(LGSPNode)
Adds an existing LGSPNode object to the graph. The node must not be part of any graph, yet! The node may not be connected to any other elements!
Public methodAddNode(NodeType) (Overrides BaseGraphAddNode(NodeType).)
Public methodAddNodeWithoutEvents
Adds an existing node to this graph. The graph may not already contain the node! The edge may not be connected to any other elements! Intended only for undo, clone, retyping and internal use!
Public methodAllocateFurtherIsomorphySpaceNestingLevelForParallelizedMatching
Public methodAllocateVisitedFlag
Allocates a visited flag on the graph elements.
(Overrides BaseGraphAllocateVisitedFlag.)
Public methodAnalyzeGraph
Analyzes the graph. The calculated data is used to generate good searchplans for the current graph.
Public methodCanonize
Returns a canonical representation of the graph as a string
(Overrides BaseGraphCanonize.)
Public methodChangedEdgeAttribute (Inherited from BaseGraph.)
Public methodChangedNodeAttribute (Inherited from BaseGraph.)
Public methodChangingEdgeAttribute (Inherited from BaseGraph.)
Public methodChangingNodeAttribute (Inherited from BaseGraph.)
Public methodChangingObjectAttribute (Inherited from BaseGraph.)
Public methodCheck (Overrides BaseGraphCheck.)
Public methodCheckEdgeAlreadyInTypeRinglist
Checks if the given edge is already available in its type ringlist
Public methodCheckEmptyFlags
Checks if the matching state flags in the graph are not set, as they should be in case no matching is undereway
Public methodCheckInOutRinglistsBroken
Checks whether the incoming or outgoing ringlists of the given node are broken. Use for debugging purposes.
Public methodCheckNodeAlreadyInTypeRinglist
Checks if the given node is already available in its type ringlist
Public methodCheckTypeRinglistBroken(LGSPEdge)
Checks whether the type ringlist starting at the given head edge is broken. Use for debugging purposes.
Public methodCheckTypeRinglistBroken(LGSPNode)
Checks whether the type ringlist starting at the given head node is broken. Use for debugging purposes.
Public methodCheckTypeRinglistsBroken
Checks whether the type ringlists are broken. Use for debugging purposes.
Public methodClear
Removes all nodes and edges (including any variables pointing to them) from the graph.
(Overrides BaseGraphClear.)
Public methodClearingGraph
Fires an OnClearingGraph event.
(Inherited from BaseGraph.)
Public methodClone(String)
Duplicates a graph. The new graph will use the same model as the other Open transaction data will not be cloned.
(Overrides BaseGraphClone(String).)
Public methodClone(String, IDictionaryIGraphElement, IGraphElement)
Duplicates a graph. The new graph will use the same model as the other. Open transaction data will not be cloned.
(Overrides BaseGraphClone(String, IDictionaryIGraphElement, IGraphElement).)
Public methodCloneAndAssignNames
Duplicates a graph, assigning names. The new graph will use the same model as the other Open transaction data will not be cloned.
(Overrides BaseGraphCloneAndAssignNames.)
Public methodCreateEmptyEquivalent
Creates an empty graph using the same model as the other.
(Overrides BaseGraphCreateEmptyEquivalent(String).)
Public methodCustom
Does graph-backend dependent stuff.
(Overrides BaseGraphCustom(Object).)
Public methodEdgeAdded
Fires an OnEdgeAdded event.
(Inherited from BaseGraph.)
Public methodEnsureSufficientIsomorphySpacesForParallelizedMatchingAreAvailable
Public methodFreeVisitedFlag
Frees a visited flag. This is a safe but O(n) operation, as it resets the visited flag in the graph.
(Overrides BaseGraphFreeVisitedFlag(Int32).)
Public methodFreeVisitedFlagNonReset
Frees a clean visited flag. This is an O(1) but potentially unsafe operation. Attention! A marked element stays marked, so a later allocation hands out a dirty visited flag! Use only if you can ensure that all elements of that flag are unmarked before calling.
(Overrides BaseGraphFreeVisitedFlagNonReset(Int32).)
Public methodGetAllocatedVisitedFlags
Returns the ids of the allocated visited flags.
(Overrides BaseGraphGetAllocatedVisitedFlags.)
Public methodGetCompatibleEdges
Enumerates all edges compatible to the given edge type.
(Overrides BaseGraphGetCompatibleEdges(EdgeType).)
Public methodGetCompatibleNodes
Enumerates all nodes compatible to the given node type.
(Overrides BaseGraphGetCompatibleNodes(NodeType).)
Public methodGetEdge
Gets the edge for the given id. Only available if the unique index was declared in the model.
(Overrides BaseGraphGetEdge(Int32).)
Public methodGetEdgeType
Returns the edge type with the given name.
(Inherited from BaseGraph.)
Public methodGetExactEdges
Enumerates all edges with the exact given edge type.
(Overrides BaseGraphGetExactEdges(EdgeType).)
Public methodGetExactNodes
Enumerates all nodes with the exact given node type.
(Overrides BaseGraphGetExactNodes(NodeType).)
Public methodGetGraphElement
Gets the graph element for the given unique id. Only available if the unique index was declared in the model.
(Overrides BaseGraphGetGraphElement(Int32).)
Protected methodStatic memberGetGraphName
Public methodGetIsomorph
Returns the graph from the set of graphs given that is isomorphic to this graph (including the attribute values), or null if no such graph exists If a graph changed only in attribute values since the last comparison, results will be wrong! (Do a fake node insert and removal to ensure the graph is recognized as having changed.) Don't call from a parallelized matcher!
(Overrides BaseGraphGetIsomorph(IDictionaryIGraph, SetValueType).)
Public methodGetNode
Gets the node for the given unique id. Only available if the unique index was declared in the model.
(Overrides BaseGraphGetNode(Int32).)
Public methodGetNodeType
Returns the node type with the given name.
(Inherited from BaseGraph.)
Public methodGetNumCompatibleEdges
Returns the number of edges compatible to the given edge type.
(Overrides BaseGraphGetNumCompatibleEdges(EdgeType).)
Public methodGetNumCompatibleNodes
Returns the number of nodes compatible to the given node type.
(Overrides BaseGraphGetNumCompatibleNodes(NodeType).)
Public methodGetNumExactEdges
Returns the number of edges with the exact given edge type.
(Overrides BaseGraphGetNumExactEdges(EdgeType).)
Public methodGetNumExactNodes
Returns the number of nodes with the exact given node type.
(Overrides BaseGraphGetNumExactNodes(NodeType).)
Public methodGetSameStructure
Returns the graph from the set of graphs given that is isomorphic to this graph (neglecting the attribute values, only structurally), or null if no such graph exists Don't call from a parallelized matcher!
(Overrides BaseGraphGetSameStructure(IDictionaryIGraph, SetValueType).)
Public methodHasSameStructure(IGraph)
Returns whether this graph is isomorph to that graph, neglecting the attribute values, only structurally The other graph we check for isomorphy against, neglecting attribute values

Return Value

Type: 
true if that is isomorph (regarding structure) to this, false otherwise
(Overrides BaseGraphHasSameStructure(IGraph).)
Public methodHasSameStructure(IDictionaryIGraph, SetValueType)
Returns whether this graph is isomorph to any of the set of graphs given, neglecting the attribute values, only structurally Don't call from a parallelized matcher!
(Overrides BaseGraphHasSameStructure(IDictionaryIGraph, SetValueType).)
Public methodIsInternallyVisited(IGraphElement)
Returns whether the given graph element has been internally visited. (Used for computing reachability.)
(Overrides BaseGraphIsInternallyVisited(IGraphElement).)
Public methodIsInternallyVisited(IGraphElement, Int32)
Returns whether the given graph element has been internally visited. (Used for computing reachability when employed from a parallelized matcher executed by the thread pool.)
(Overrides BaseGraphIsInternallyVisited(IGraphElement, Int32).)
Public methodIsIsomorph(IGraph)
Returns whether this graph is isomorph to that graph (including the attribute values) If a graph changed only in attribute values since the last comparison, results will be wrong! (Do a fake node insert and removal to ensure the graph is recognized as having changed.)
(Overrides BaseGraphIsIsomorph(IGraph).)
Public methodIsIsomorph(IDictionaryIGraph, SetValueType)
Returns whether this graph is isomorph to any of the set of graphs given (including the attribute values) If a graph changed only in attribute values since the last comparison, results will be wrong! (Do a fake node insert and removal to ensure the graph is recognized as having changed.) Don't call from a parallelized matcher!
(Overrides BaseGraphIsIsomorph(IDictionaryIGraph, SetValueType).)
Public methodIsVisited
Returns whether the given graph element has been visited.
(Overrides BaseGraphIsVisited(IGraphElement, Int32).)
Public methodMerge(INode, INode, String)
Merges the source node into the target node, i.e. all edges incident to the source node are redirected to the target node, then the source node is deleted.
(Overrides BaseGraphMerge(INode, INode, String).)
Public methodMerge(LGSPNode, LGSPNode, String)
Merges the source node into the target node, i.e. all edges incident to the source node are redirected to the target node, then the source node is deleted.
Public methodMoveHeadAfter(LGSPEdge)
Moves the type list head of the given edge after the given edge. Part of the "list trick".
Public methodMoveHeadAfter(LGSPNode)
Moves the type list head of the given node after the given node. Part of the "list trick".
Public methodNodeAdded
Fires an OnNodeAdded event.
(Inherited from BaseGraph.)
Public methodObjectCreated
Fires an OnObjectCreated event.
(Inherited from BaseGraph.)
Public methodReallocateVisitedFlag
Called by the transaction manager on flags it reserved from getting handed out again during valloc, when the transaction is rolled back, and the vfree is undone by a realloc.
Public methodRedirectingEdge
Fires an OnRedirectingEdge event.
(Inherited from BaseGraph.)
Public methodRedirectSource(IEdge, INode, String)
Changes the source node of the edge from the old source to the given new source.
(Overrides BaseGraphRedirectSource(IEdge, INode, String).)
Public methodRedirectSource(LGSPEdge, LGSPNode, String)
Changes the source node of the edge from the old source to the given new source.
Public methodRedirectSourceAndTarget(IEdge, INode, INode, String, String)
Changes the source of the edge from the old source to the given new source, and changes the target node of the edge from the old target to the given new target.
(Overrides BaseGraphRedirectSourceAndTarget(IEdge, INode, INode, String, String).)
Public methodRedirectSourceAndTarget(LGSPEdge, LGSPNode, LGSPNode, String, String)
Changes the source of the edge from the old source to the given new source, and changes the target node of the edge from the old target to the given new target.
Public methodRedirectTarget(IEdge, INode, String)
Changes the target node of the edge from the old target to the given new target.
(Overrides BaseGraphRedirectTarget(IEdge, INode, String).)
Public methodRedirectTarget(LGSPEdge, LGSPNode, String)
Changes the target node of the edge from the old target to the given new target.
Public methodRemove(IEdge)
Removes the given edge from the graph.
(Overrides BaseGraphRemove(IEdge).)
Public methodRemove(INode)
Removes the given node from the graph.
(Overrides BaseGraphRemove(INode).)
Public methodRemoveEdges
Removes all edges from the given node.
(Overrides BaseGraphRemoveEdges(INode).)
Public methodRemovingEdge
Fires an OnRemovingEdge event.
(Inherited from BaseGraph.)
Public methodRemovingEdges
Fires an OnRemovingEdges event.
(Inherited from BaseGraph.)
Public methodRemovingNode
Fires an OnRemovingNode event.
(Inherited from BaseGraph.)
Public methodReplaceEdge
Replaces a given edge by another one. Source and target node are transferred to the new edge, but the new edge must already have source and target set to these nodes. The new edge is added to the graph, the old edge is removed. A SettingEdgeType event is generated before. The attributes are not touched. This function is used for retyping.
Public methodReplaceNode
Replaces a given node by another one. All incident edges and variables are transferred to the new node. The attributes are not touched. This function is used for retyping.
Public methodReserveVisitedFlag
Called by the transaction manager just when it gets notified about a vfree. The visited flag freed must be reserved until the transaction finished, cause otherwise it might be impossible for the transaction manager to roll the vfree back with a valloc; that may happen if the flag is handed out again in a succeeding valloc, during a transaction pause.
Public methodResetVisitedFlag
Resets the visited flag with the given ID on all graph elements, if necessary.
(Overrides BaseGraphResetVisitedFlag(Int32).)
Public methodRetype(IEdge, EdgeType) (Overrides BaseGraphRetype(IEdge, EdgeType).)
Public methodRetype(INode, NodeType) (Overrides BaseGraphRetype(INode, NodeType).)
Public methodRetype(LGSPEdge, EdgeType)
Retypes an edge by replacing it by a new edge of the given type. Source and target node as well as all attributes from common super classes are kept.
Public methodRetype(LGSPNode, NodeType)
Retypes a node by creating a new node of the given type. All incident edges as well as all attributes from common super classes are kept.
Public methodRetypingEdge
Fires an OnRetypingEdge event.
(Inherited from BaseGraph.)
Public methodRetypingNode
Fires an OnRetypingNode event.
(Inherited from BaseGraph.)
Public methodSetInternallyVisited(IGraphElement, Boolean)
Sets the internal-use visited flag of the given graph element. (Used for computing reachability.)
(Overrides BaseGraphSetInternallyVisited(IGraphElement, Boolean).)
Public methodSetInternallyVisited(IGraphElement, Boolean, Int32)
Sets the internal-use visited flag of the given graph element. (Used for computing reachability when employed from a parallelized matcher executed by the thread pool.)
(Overrides BaseGraphSetInternallyVisited(IGraphElement, Boolean, Int32).)
Public methodSettingAddedEdgeNames (Inherited from BaseGraph.)
Public methodSettingAddedNodeNames (Inherited from BaseGraph.)
Public methodSettingVisited
Fires an OnSettingVisited event.
(Inherited from BaseGraph.)
Public methodSetVisited
Sets the visited flag of the given graph element.
(Overrides BaseGraphSetVisited(IGraphElement, Int32, Boolean).)
Public methodToString (Overrides ObjectToString.)
Public methodUnreserveVisitedFlag
Called by the transaction manager on flags it reserved from getting handed out again during valloc, when the transaction finished and it is safe to return those flags again on valloc.
Public methodValidate (Inherited from BaseGraph.)
Public methodVisitedAlloc
Fires an OnVisitedAlloc event.
(Inherited from BaseGraph.)
Public methodVisitedFree
Fires an OnVisitedFree event.
(Inherited from BaseGraph.)
Top
Events
  NameDescription
Public eventOnChangedEdgeAttribute (Inherited from BaseGraph.)
Public eventOnChangedNodeAttribute (Inherited from BaseGraph.)
Public eventOnChangingEdgeAttribute (Inherited from BaseGraph.)
Public eventOnChangingNodeAttribute (Inherited from BaseGraph.)
Public eventOnChangingObjectAttribute (Inherited from BaseGraph.)
Public eventOnClearingGraph (Inherited from BaseGraph.)
Public eventOnEdgeAdded (Inherited from BaseGraph.)
Public eventOnNodeAdded (Inherited from BaseGraph.)
Public eventOnObjectCreated (Inherited from BaseGraph.)
Public eventOnRedirectingEdge (Inherited from BaseGraph.)
Public eventOnRemovingEdge (Inherited from BaseGraph.)
Public eventOnRemovingEdges (Inherited from BaseGraph.)
Public eventOnRemovingNode (Inherited from BaseGraph.)
Public eventOnRetypingEdge (Inherited from BaseGraph.)
Public eventOnRetypingNode (Inherited from BaseGraph.)
Public eventOnSettingAddedEdgeNames (Inherited from BaseGraph.)
Public eventOnSettingAddedNodeNames (Inherited from BaseGraph.)
Public eventOnSettingVisited (Inherited from BaseGraph.)
Public eventOnVisitedAlloc (Inherited from BaseGraph.)
Public eventOnVisitedFree (Inherited from BaseGraph.)
Top
Fields
  NameDescription
Public fieldchangesCounterAtLastAnalyze
Public fieldchangesCounterAtLastCanonize
Protected fieldcustomCommandsToDescriptions
Public fieldedgesByTypeCounts
The number of edges for each edge type indexed by the type ID.
Public fieldedgesByTypeHeads
An array containing one head of a doubly-linked ring-list for each edge type indexed by the type ID.
Public fieldflagsPerThreadPerElement
a list which stores for each parallel matcher thread, per graph element the flags with the matching state each flag encodes a bounded amount of the is-matched-bits for the lowest isomorphy spaces, the flag is a reduced version of the flags bitvector available in each graph element in case of single threaded matching (the unique id of the graph elements is used as index into the flags array)
Public fieldgraphMatchingLock
Public fieldinIsoSpaceMatchedElements
a list with the isomorphy spaces, each contains in a dictionary the elements matched locally used in case the is-matched-bits in the graph elements are not sufficient (during non-parallel matching)
Public fieldinIsoSpaceMatchedElementsGlobal
a list with the isomorphy spaces, each contains in a dictionary the elements matched globally used in case the is-matched-bits in the graph elements are not sufficient (during non-parallel matching)
Public fieldmatchingState
Normally null, contains some data which allows for efficient graph comparison, in case this is a constant graph which was used for isomorphy checking
Protected fieldmodel
Public fieldnameOfSingleElementAdded
Public fieldnodesByTypeCounts
The number of nodes for each node type indexed by the type ID.
Public fieldnodesByTypeHeads
An array containing one head of a doubly-linked ring-list for each node type indexed by the type ID.
Public fieldperThreadInIsoSpaceMatchedElements
a list which stores for each matcher thread the isomorphy spaces, each contains in a dictionary the elements matched locally used in case the is-matched-bits in the per-thread flags array are not sufficient, employed during parallelized matching the outermost list is read concurrently, so its dimension/content must be fixed before matching begins
Public fieldperThreadInIsoSpaceMatchedElementsGlobal
a list which stores for each matcher thread the isomorphy spaces, each contains in a dictionary the elements matched globally used in case the is-matched-bits in the per-thread flags array are not sufficient, employed during parallelized matching the outermost list is read concurrently, so its dimension/content must be fixed before matching begins
Public fieldStatic memberpoolSize
Public fieldstatistics
Stores the statistics about the last analyze pass of the graph
Protected fieldStatic membertmpOldToNewMap
Top
See Also