|
struct | hasConnect |
| Check that a method exists to insert arcs. More...
|
|
struct | hasConnect< T, type_sink_t< decltype(std::declval< T >().connect(static_cast< typename ArcTraits::FromType * >(nullptr), static_cast< typename ArcTraits::ToType * >(nullptr), static_cast< typename ArcTraits::FromType * >(nullptr), static_cast< typename ArcTraits::ToType * >(nullptr)))> > |
|
struct | hasContains |
| Check that a method exists to test existence of an arc. More...
|
|
struct | hasContains< T, type_sink_t< decltype(std::declval< T >().contains(static_cast< const typename ArcTraits::FromType * >(nullptr), static_cast< const typename ArcTraits::ToType * >(nullptr)))> > |
|
struct | hasDisconnect |
| Check that a method exists to remove arcs. More...
|
|
struct | hasDisconnect< T, type_sink_t< decltype(std::declval< T >().disconnect(static_cast< typename ArcTraits::FromType * >(nullptr), static_cast< typename ArcTraits::ToType * >(nullptr)))> > |
|
struct | hasImmutableMark |
| Check whether the traits object has been marked immutable. More...
|
|
struct | hasImmutableMark< T, type_sink_t< typename T::Immutable > > |
|
struct | hasInDegree |
| Check that a method exists to compute the in-degree of an arc. More...
|
|
struct | hasInDegree< T, type_sink_t< decltype(std::declval< T >().inDegree(static_cast< const typename ArcTraits::ToType * >(nullptr)))> > |
|
struct | hasInNodeVisitor |
| Check that a method exists to visit all nodes with incoming arcs. More...
|
|
struct | hasInNodeVisitor< T, type_sink_t< decltype(std::declval< T >().visitAllIncomingNodes(nullptr, std::function< smtk::common::Visited(typename T::ToType const *)>()))> > |
|
struct | hasInVisitor |
| Check that a method exists to visit in-nodes given a "to" node. More...
|
|
struct | hasInVisitor< T, type_sink_t< decltype(std::declval< T >().inVisitor(nullptr, std::function< smtk::common::Visited(typename T::FromType const *)>()))> > |
|
struct | hasOnlyForwardIndex |
| Check whether the arc has bidirectional indexing (the default) or has been marked as having only a forward index. More...
|
|
struct | hasOnlyForwardIndex< T, type_sink_t< typename T::ForwardIndexOnly > > |
|
struct | hasOutDegree |
| Check that a method exists to compute the out-degree of an arc. More...
|
|
struct | hasOutDegree< T, type_sink_t< decltype(std::declval< T >().outDegree(static_cast< const typename ArcTraits::FromType * >(nullptr)))> > |
|
struct | hasOutNodeVisitor |
| Check that a method exists to visit all nodes with outgoing arcs. More...
|
|
struct | hasOutNodeVisitor< T, type_sink_t< decltype(std::declval< T >().visitAllOutgoingNodes(nullptr, std::function< smtk::common::Visited(typename T::FromType const *)>()))> > |
|
struct | hasOutVisitor |
| Check that a method exists to visit out-nodes given a "from" node. More...
|
|
struct | hasOutVisitor< T, type_sink_t< decltype(std::declval< T >().outVisitor(nullptr, std::function< smtk::common::Visited(typename T::ToType const *)>()))> > |
|
struct | hasSemantics |
|
struct | hasSemantics< T, type_sink_t< decltype(T::semantics)> > |
|
class | isAutoUndirected |
| Check whether the traits object is undirected and has identical to/from types. More...
|
|
class | isExplicit |
| False when an arc class provides implementations of required methods; true otherwise. More...
|
|
class | isImplicit |
| True when an arc class provides implementations of required methods; false otherwise. More...
|
|
class | isMutable |
| Check whether the arc traits object (1) is implicit and has methods to insert and remove arcs; or (2) is explicit and has not been marked immutable. More...
|
|
class | isOnlyForwardIndexed |
| Check whether the arc traits object allows traversal only in the foward direction. More...
|
|
class | isOrdered |
| True when the order in which arcs are stored is significant. More...
|
|
template<typename ArcTraits>
class smtk::graph::ArcProperties< ArcTraits >
Checks that can be performed on arc trait-types.
Note that the properties defined in this class are named like so:
- direct checks on the ArcTraits template parameter are named
hasXXX
.
- results that specify behavior of the resulting arc implementation are named
isXXX
. (i.e., "If the traits have this, then the arc is that.")
template<typename ArcTraits >
Check whether the traits object provides ownership semantics and return them.
Ownership semantics indicate whether one arc endpoint should keep the other endpoint from being removed from the resource unless both are removed. If an ArcTraits type provides no semantics, then this returns OwnershipSemantics::None.
For example, an arc connecting a Group node to its Member nodes might be marked ToNodeOwnsFromNode, indicating that the Group node (i.e., ArcTraits::FromType) should not be removed without also removing all of its Member nodes (ArcTraits::ToType). However, any Member node could be removed without a problem (assuming no other owning arcs exist).
Similarly, if the arc was marked with FromNodeOwnsToNode, then Member nodes could not be deleted unless the Group node was also deleted; but the Group node could be deleted even when it has arcs to Member nodes.