[Lemon-commits] [lemon_svn] alpar: r258 - hugo/trunk/src/work/alpar

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:38:23 CET 2006


Author: alpar
Date: Sat Mar 13 23:40:36 2004
New Revision: 258

Modified:
   hugo/trunk/src/work/alpar/emptygraph.h

Log:
More comments, bug fixes, and copy constructors


Modified: hugo/trunk/src/work/alpar/emptygraph.h
==============================================================================
--- hugo/trunk/src/work/alpar/emptygraph.h	(original)
+++ hugo/trunk/src/work/alpar/emptygraph.h	Sat Mar 13 23:40:36 2004
@@ -7,7 +7,7 @@
 /// The namespace of HugoLib
 namespace hugo {
 
-  // @defgroup empty_graph The EmptyGraph class
+  // @defgroup empty_graph The GraphSkeleton class
   // @{
 
   /// An empty graph class.
@@ -25,21 +25,36 @@
   /// feature, the documentation of a real graph imlementation
   /// like @ref ListGraph or
   /// @ref SmartGraph will just refer to this structure.
-  class EmptyGraph
+  class GraphSkeleton
   {
   public:
     
     /// The base type of the node iterators.
+
+    /// This \c Node is the base type of each node iterators,
+    /// thus each kind of node iterator will convert to this.
     class Node {
     public:
       /// @warning The default constructor sets the iterator
       /// to an undefined value.
       Node() {}   //FIXME
-      /// Initialize the iterator to be invalid
+      /// Invalid constructor \& conversion.
+
+      /// This constructor initializes the iterator to be invalid.
+      /// \sa Invalid for more details.
+
       Node(Invalid) {}
-      //Node(const Node &) {} 
-      bool operator==(Node n) const { return true; } //FIXME
-      bool operator!=(Node n) const { return true; } //FIXME
+      //Node(const Node &) {}
+
+      /// Two iterators are equal if and only if they point to the
+      /// same object or both are invalid.
+      bool operator==(Node n) const { return true; }
+
+      /// \sa \ref operator==(Node n)
+      ///
+      bool operator!=(Node n) const { return true; }
+
+      bool operator<(Node n) const { return true; }
     };
     
     /// This iterator goes through each node.
@@ -48,11 +63,16 @@
       /// @warning The default constructor sets the iterator
       /// to an undefined value.
       NodeIt() {} //FIXME
+      /// Invalid constructor \& conversion.
+
       /// Initialize the iterator to be invalid
+      /// \sa Invalid for more details.
       NodeIt(Invalid) {}
       /// Sets the iterator to the first node of \c G.
-      NodeIt(const EmptyGraph &G) {}
-      NodeIt(const NodeIt &) {} //FIXME
+      NodeIt(const GraphSkeleton &G) {}
+      /// @warning The default constructor sets the iterator
+      /// to an undefined value.
+      NodeIt(const NodeIt &) {}
     };
     
     
@@ -64,9 +84,11 @@
       Edge() {}   //FIXME
       /// Initialize the iterator to be invalid
       Edge(Invalid) {}
-      //Edge(const Edge &) {} 
-      bool operator==(Edge n) const { return true; } //FIXME
-      bool operator!=(Edge n) const { return true; } //FIXME    
+      /// Two iterators are equal if and only if they point to the
+      /// same object or both are invalid.
+      bool operator==(Edge n) const { return true; }
+      bool operator!=(Edge n) const { return true; }
+      bool operator<(Edge n) const { return true; }
     };
     
     /// This iterator goes trought the outgoing edges of a certain graph.
@@ -84,7 +106,7 @@
       /// node
       ///@param n the node
       ///@param G the graph
-      OutEdgeIt(const EmptyGraph & G, Node n) {}
+      OutEdgeIt(const GraphSkeleton & G, Node n) {}
     };
 
     class InEdgeIt : public Edge {
@@ -94,7 +116,7 @@
       InEdgeIt() {}
       /// Initialize the iterator to be invalid
       InEdgeIt(Invalid) {}
-      InEdgeIt(const EmptyGraph &, Node) {}    
+      InEdgeIt(const GraphSkeleton &, Node) {}    
     };
     //  class SymEdgeIt : public Edge {};
     class EdgeIt : public Edge {
@@ -104,7 +126,7 @@
       EdgeIt() {}
       /// Initialize the iterator to be invalid
       EdgeIt(Invalid) {}
-      EdgeIt(const EmptyGraph &) {}
+      EdgeIt(const GraphSkeleton &) {}
     };
 
     /// First node of the graph.
@@ -156,61 +178,106 @@
     bool valid(const Edge) const { return true;}
 
     ///Gives back the \e id of a node.
+
+    ///\warning Not all graph structure provide this feature.
+    ///
     int id(const Node) const { return 0;}
     ///Gives back the \e id of an edge.
+
+    ///\warning Not all graph structure provide this feature.
+    ///
     int id(const Edge) const { return 0;}
 
     //void setInvalid(Node &) const {};
     //void setInvalid(Edge &) const {};
   
+    ///Add a new node to the graph.
+
+    /// \return the new node.
     Node addNode() { return INVALID;}
+    ///Add a new edge to the graph.
+
+    ///Add a new edge to the graph with tail node \c tail
+    ///and head node \c head.
+    ///\return the new edge.
     Edge addEdge(Node tail, Node head) { return INVALID;}
     
+    /// Deletes a node.
+    
+    ///\warning Not all graph structure provide this feature.
+    ///
     void erase(Node n) {}
+    /// Deletes an edge.
+
+    ///\warning Not all graph structure provide this feature.
+    ///
     void erase(Edge e) {}
 
+    /// Reset the graph.
+
+    /// This function deletes all edges and nodes of the graph.
+    /// It also frees the memory allocated to store them.
     void clear() {}
 
     int nodeNum() const { return 0;}
     int edgeNum() const { return 0;}
 
-    EmptyGraph() {}
-    EmptyGraph(const EmptyGraph &G) {}
+    GraphSkeleton() {}
+    GraphSkeleton(const GraphSkeleton &G) {}
   
   
 
-    ///Read/write map from the nodes to type \c T.
+    ///Read/write map of the nodes to type \c T.
+
+    /// \todo We may need copy constructor
+    /// \todo We may need conversion from other nodetype
+    /// \todo We may need operator=
+
     template<class T> class NodeMap
     {
     public:
       typedef T ValueType;
       typedef Node KeyType;
 
-      NodeMap(const EmptyGraph &G) {}
-      NodeMap(const EmptyGraph &G, T t) {}
+      NodeMap(const GraphSkeleton &G) {}
+      NodeMap(const GraphSkeleton &G, T t) {}
+
+      template<typename TT> NodeMap(const NodeMap<TT> &m) {}
 
+      /// Sets the value of a node.
+
+      /// Sets the value associated with node \c i to the value \c t.
+      ///
       void set(Node i, T t) {}
-      T get(Node i) const {return *(T*)NULL;}  //FIXME: Is it necessary
-      T &operator[](Node i) {return *(T*)NULL;}
-      const T &operator[](Node i) const {return *(T*)NULL;}
+      /// Gets the value of a node.
+      T get(Node i) const {return *(T*)0;}  //FIXME: Is it necessary
+      T &operator[](Node i) {return *(T*)0;}
+      const T &operator[](Node i) const {return *(T*)0;}
+
+      /// Updates the map if the graph has been changed
 
+      /// \todo Do we need this?
+      ///
       void update() {}
       void update(T a) {}   //FIXME: Is it necessary
     };
 
-    ///Read/write map from the edges to type \c T.
+    ///Read/write map of the edges to type \c T.
+
+    ///Read/write map of the edges to type \c T.
+    ///It behaves exactly the same way as \ref NodeMap.
     template<class T> class EdgeMap
     {
     public:
       typedef T ValueType;
       typedef Edge KeyType;
 
-      EdgeMap(const EmptyGraph &G) {}
-      EdgeMap(const EmptyGraph &G, T t) {}
+      EdgeMap(const GraphSkeleton &G) {}
+      EdgeMap(const GraphSkeleton &G, T t) {}
     
       void set(Edge i, T t) {}
-      T get(Edge i) const {return *(T*)NULL;}
-      T &operator[](Edge i) {return *(T*)NULL;}
+      T get(Edge i) const {return *(T*)0;}
+      T &operator[](Edge i) {return *(T*)0;}
     
       void update() {}
       void update(T a) {}   //FIXME: Is it necessary
@@ -223,7 +290,7 @@
 
 
 
-// class EmptyBipGraph : public EmptyGraph
+// class EmptyBipGraph : public Graph Skeleton
 // {
 //   class ANode {};
 //   class BNode {};



More information about the Lemon-commits mailing list