SMTK  @SMTK_VERSION@
Simulation Modeling Tool Kit
Classes | Static Public Member Functions | List of all members
smtk::graph::ArcProperties< ArcTraits > Class Template Reference

Checks that can be performed on arc trait-types. More...

#include <ArcProperties.h>

Classes

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...
 

Static Public Member Functions

static constexpr OwnershipSemantics ownershipSemantics ()
 Check whether the traits object provides ownership semantics and return them. More...
 

Detailed Description

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:

Member Function Documentation

◆ ownershipSemantics()

template<typename ArcTraits >
static constexpr OwnershipSemantics smtk::graph::ArcProperties< ArcTraits >::ownershipSemantics ( )
inlinestaticconstexpr

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.


The documentation for this class was generated from the following file: