# HG changeset patch # User deba # Date 1107773384 0 # Node ID 56b07afdbf8dcf18736c090b9485e35979227cd4 # Parent 9fd485470fee2c667907fc3a5febc6a160d47d05 Documentation diff -r 9fd485470fee -r 56b07afdbf8d src/lemon/alteration_notifier.h --- a/src/lemon/alteration_notifier.h Mon Feb 07 10:48:14 2005 +0000 +++ b/src/lemon/alteration_notifier.h Mon Feb 07 10:49:44 2005 +0000 @@ -321,11 +321,17 @@ public: - EdgeNotifier& getNotifier(Edge = INVALID) const { + /// \brief Gives back the edge alteration notifier. + /// + /// Gives back the edge alteration notifier. + EdgeNotifier& getNotifier(Edge) const { return edge_notifier; } - NodeNotifier& getNotifier(Node = INVALID) const { + /// \brief Gives back the node alteration notifier. + /// + /// Gives back the node alteration notifier. + NodeNotifier& getNotifier(Node) const { return node_notifier; } diff -r 9fd485470fee -r 56b07afdbf8d src/lemon/concept/graph_component.h --- a/src/lemon/concept/graph_component.h Mon Feb 07 10:48:14 2005 +0000 +++ b/src/lemon/concept/graph_component.h Mon Feb 07 10:49:44 2005 +0000 @@ -25,6 +25,8 @@ #include #include +#include + namespace lemon { namespace concept { @@ -571,9 +573,11 @@ /// Copy constructor. /// GraphIncIterator(GraphIncIterator const&) {} - /// Sets the iterator to the first edge incoming into or outgoing from the node. + /// Sets the iterator to the first edge incoming into or outgoing + /// from the node. - /// Sets the iterator to the first edge incoming into or outgoing from the node. + /// Sets the iterator to the first edge incoming into or outgoing + /// from the node. /// explicit GraphIncIterator(const Graph&, const typename Graph::Node&) {} /// Invalid constructor \& conversion. @@ -671,13 +675,46 @@ void constraints() { checkConcept< BaseGraphComponent, _Graph>(); - checkConcept, typename _Graph::EdgeIt >(); - checkConcept, typename _Graph::NodeIt >(); + checkConcept, + typename _Graph::EdgeIt >(); + checkConcept, + typename _Graph::NodeIt >(); checkConcept, typename _Graph::InEdgeIt >(); checkConcept, typename _Graph::OutEdgeIt >(); } }; + /// An empty alteration notifier base graph class. + + /// This class provides beside the core graph features + /// alteration notifier interface for the graph structure. + /// This is an observer-notifier pattern. More Obsevers can + /// be registered into the notifier and whenever an alteration + /// occured in the graph all the observers will notified about it. + class AlterableGraphComponent : virtual public BaseGraphComponent { + public: + + /// The edge observer registry. + typedef AlterationNotifier EdgeNotifier; + /// The node observer registry. + typedef AlterationNotifier NodeNotifier; + + /// \brief Gives back the edge alteration notifier. + /// + /// Gives back the edge alteration notifier. + EdgeNotifier getNotifier(Edge) const { + return EdgeNotifier(); + } + + /// \brief Gives back the node alteration notifier. + /// + /// Gives back the node alteration notifier. + NodeNotifier getNotifier(Node) const { + return NodeNotifier(); + } + + }; + /// Class describing the concept of graph maps @@ -689,10 +726,22 @@ protected: GraphMap() {} public: + /// \brief Construct a new map. + /// + /// Construct a new map for the graph. explicit GraphMap(const Graph&) {} + /// \brief Construct a new map with default value. + /// + /// Construct a new map for the graph and initalise the values. GraphMap(const Graph&, const _Value&) {} + /// \brief Copy constructor. + /// + /// Copy Constructor. GraphMap(const GraphMap&) {} + /// \brief Assign operator. + /// + /// Assign operator. GraphMap& operator=(const GraphMap&) { return *this;} template @@ -740,11 +789,23 @@ private: NodeMap(); public: - // \todo call the right parent class constructor + /// \brief Construct a new map. + /// + /// Construct a new map for the graph. + /// \todo call the right parent class constructor explicit NodeMap(const Graph&) {} + /// \brief Construct a new map with default value. + /// + /// Construct a new map for the graph and initalise the values. NodeMap(const Graph&, const _Value&) {} + /// \brief Copy constructor. + /// + /// Copy Constructor. NodeMap(const NodeMap&) {} + /// \brief Assign operator. + /// + /// Assign operator. NodeMap& operator=(const NodeMap&) { return *this;} }; @@ -758,11 +819,23 @@ private: EdgeMap(); public: - // \todo call the right parent class constructor + /// \brief Construct a new map. + /// + /// Construct a new map for the graph. + /// \todo call the right parent class constructor explicit EdgeMap(const Graph&) {} + /// \brief Construct a new map with default value. + /// + /// Construct a new map for the graph and initalise the values. EdgeMap(const Graph&, const _Value&) {} + /// \brief Copy constructor. + /// + /// Copy Constructor. EdgeMap(const EdgeMap&) {} + /// \brief Assign operator. + /// + /// Assign operator. EdgeMap& operator=(const EdgeMap&) { return *this;} }; @@ -780,24 +853,30 @@ checkConcept(); { // int map test typedef typename _Graph::template NodeMap IntNodeMap; - checkConcept, IntNodeMap >(); + checkConcept, + IntNodeMap >(); } { // bool map test typedef typename _Graph::template NodeMap BoolNodeMap; - checkConcept, BoolNodeMap >(); + checkConcept, + BoolNodeMap >(); } { // Type map test typedef typename _Graph::template NodeMap TypeNodeMap; - checkConcept, TypeNodeMap >(); + checkConcept, + TypeNodeMap >(); } { // int map test typedef typename _Graph::template EdgeMap IntEdgeMap; - checkConcept, IntEdgeMap >(); + checkConcept, + IntEdgeMap >(); } { // bool map test typedef typename _Graph::template EdgeMap BoolEdgeMap; - checkConcept, BoolEdgeMap >(); + checkConcept, + BoolEdgeMap >(); } { // Type map test typedef typename _Graph::template EdgeMap TypeEdgeMap; - checkConcept, TypeEdgeMap >(); + checkConcept, + TypeEdgeMap >(); } } @@ -805,7 +884,13 @@ }; }; - + /// \brief An empty extendable extended graph class. + /// + /// This class provides beside the core graph features + /// item addition interface for the graph structure. + /// The difference between this class and the + /// \c BaseExtendableGraphComponent is that it should + /// notify the item alteration observers. class ExtendableGraphComponent : virtual public BaseGraphComponent { public: @@ -814,10 +899,16 @@ typedef BaseGraphComponent::Node Node; typedef BaseGraphComponent::Edge Edge; + /// \brief Add a node to the graph. + /// + /// Add a node to the graph and notify the observers. Node addNode() { return INVALID; } + /// \brief Add an edge to the graph. + /// + /// Add an edge to the graph and notify the observers. Edge addEdge(const Node& from, const Node& to) { return INVALID; } @@ -834,6 +925,14 @@ _Graph& graph; }; }; + + /// \brief An empty erasable extended graph class. + /// + /// This class provides beside the core graph features + /// item erase interface for the graph structure. + /// The difference between this class and the + /// \c BaseErasableGraphComponent is that it should + /// notify the item alteration observers. class ErasableGraphComponent : virtual public BaseGraphComponent { public: @@ -842,7 +941,14 @@ typedef BaseGraphComponent::Node Node; typedef BaseGraphComponent::Edge Edge; + /// \brief Erase the Node and notify the node alteration observers. + /// + /// Erase the Node and notify the node alteration observers. void erase(const Node&) {} + + /// \brief Erase the Edge and notify the edge alteration observers. + /// + /// Erase the Edge and notify the edge alteration observers. void erase(const Edge&) {} template