Enum ScyllaGraphProperties
Bitpacked flags that describe the structural capabilities and constraints of a IScyllaGraph instance. Graph implementations expose their properties through the Properties property, allowing algorithm code and application code to perform feature detection at runtime without casting to a concrete type.
Namespace: Scylla.Core.Structures
Assembly: ScyllaCore.dll
Syntax
[Flags]
public enum ScyllaGraphProperties : uint
Remarks
Reading properties: use standard bitwise tests on the value returned by Properties:
<pre><code class="lang-csharp">bool isDirected = (graph.Properties & ScyllaGraphProperties.Directed) != 0;
bool isMutable = (graph.Properties & ScyllaGraphProperties.Mutable) != 0;
Algorithm compatibility: algorithms in ScyllaGraphAlgorithms verify relevant flags before executing. For example, Dijkstra requires that edge weights be non-negative; the caller is responsible for providing a graph whose Weighted property is consistent with the weight values stored in its edges.
Combining flags: properties are independent and can be combined freely.
For example, a directed weighted mutable graph sets
Directed | Weighted | Mutable. The None value (zero) implies
an undirected, unweighted, immutable graph that disallows self-loops and parallel edges.
Fields
| Name | Description |
|---|---|
| AllowsParallelEdges | The graph permits multiple edges (parallel edges) between the same ordered pair of
nodes. When absent, attempting to add a duplicate edge returns |
| AllowsSelfLoops | The graph permits self-loop edges - edges whose FromID
equals ToID. When absent, attempting to add such an edge
via TryAddEdge(int, int, float) will return |
| Directed | Edges are directed: each edge has a distinct source (FromID) and target (ToID), and traversal is only permitted in the stored direction. When this flag is absent, edges are undirected and the graph implementation exposes each edge from both endpoints. Directed graphs model one-way connections such as one-way roads, narrative dialogue flow, or dependency graphs. |
| Mutable | The graph supports structural mutation - adding and removing nodes and edges at runtime via IScyllaMutableGraph. When absent, the graph is read-only after construction (e.g., a pre-built CSR graph loaded from a data file). Check this flag before casting to IScyllaMutableGraph to avoid an InvalidCastException. |
| None | No properties set. Represents an undirected, unweighted, immutable graph that disallows self-loops and parallel edges. This is the minimum viable graph configuration; combine with other flags to describe richer graph types. |
| Weighted | Edges carry meaningful Weight values. When this flag
is absent, all edges have an implicit weight of |