[Lemon-commits] [lemon_svn] alpar: r2841 - in hugo/trunk: doc lemon lemon/concept
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 21:50:44 CET 2006
Author: alpar
Date: Tue Jul 11 18:09:49 2006
New Revision: 2841
Modified:
hugo/trunk/doc/Doxyfile.in
hugo/trunk/lemon/concept/graph.h
hugo/trunk/lemon/list_graph.h
hugo/trunk/lemon/smart_graph.h
Log:
- Disable the copy constructor and operator= of {List|Smart}[U]Graph.
- Improve graph doc
- Also put private members into the doc (if they are documented)
Modified: hugo/trunk/doc/Doxyfile.in
==============================================================================
--- hugo/trunk/doc/Doxyfile.in (original)
+++ hugo/trunk/doc/Doxyfile.in Tue Jul 11 18:09:49 2006
@@ -224,12 +224,12 @@
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
-EXTRACT_PRIVATE = NO
+EXTRACT_PRIVATE = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
-EXTRACT_STATIC = NO
+EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
@@ -581,7 +581,7 @@
# will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this.
-VERBATIM_HEADERS = YES
+VERBATIM_HEADERS = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
Modified: hugo/trunk/lemon/concept/graph.h
==============================================================================
--- hugo/trunk/lemon/concept/graph.h (original)
+++ hugo/trunk/lemon/concept/graph.h Tue Jul 11 18:09:49 2006
@@ -53,14 +53,11 @@
/// Defalult constructor.
///
Graph() { }
+ /// Class for identifying a node of the graph
- /// The base type of node iterators,
- /// or in other words, the trivial node iterator.
-
- /// This is the base type of each node iterator,
- /// thus each kind of node iterator converts to this.
- /// More precisely each kind of node iterator should be inherited
- /// from the trivial node iterator.
+ /// This class identifies a node of the graph. It also serves
+ /// as a base class of the node iterators,
+ /// thus they will convert to this type.
class Node {
public:
/// Default constructor
@@ -149,10 +146,11 @@
};
- /// The base type of the edge iterators.
+ /// Class for identifying an edge of the graph
- /// The base type of the edge iterators.
- ///
+ /// This class identifies an edge of the graph. It also serves
+ /// as a base class of the edge iterators,
+ /// thus they will convert to this type.
class Edge {
public:
/// Default constructor
@@ -384,8 +382,6 @@
///
/// ReadWrite map of the nodes to type \c T.
/// \sa Reference
- /// \warning Making maps that can handle bool type (NodeMap<bool>)
- /// needs some extra attention!
template<class T>
class NodeMap : public ReadWriteMap< Node, T > {
public:
@@ -409,8 +405,6 @@
///
/// Reference map of the edges to type \c T.
/// \sa Reference
- /// \warning Making maps that can handle bool type (EdgeMap<bool>)
- /// needs some extra attention!
template<class T>
class EdgeMap : public ReadWriteMap<Edge,T> {
public:
Modified: hugo/trunk/lemon/list_graph.h
==============================================================================
--- hugo/trunk/lemon/list_graph.h (original)
+++ hugo/trunk/lemon/list_graph.h Tue Jul 11 18:09:49 2006
@@ -325,10 +325,28 @@
///\sa concept::Graph.
class ListGraph : public ExtendedListGraphBase {
+ private:
+ ///ListGraph is \e not copy constructible. Use GraphCopy() instead.
+
+ ///ListGraph is \e not copy constructible. Use GraphCopy() instead.
+ ///
+ ListGraph(const ListGraph &) :ExtendedListGraphBase() {};
+ ///\brief Assignment of ListGraph to another is \e not allowed.
+ ///Use GraphCopy() instead.
+
+ ///Assignment of ListGraph to another is \e not allowed.
+ ///Use GraphCopy() instead.
+ void operator=(const ListGraph &) {}
public:
typedef ExtendedListGraphBase Parent;
+ /// Constructor
+
+ /// Constructor.
+ ///
+ ListGraph() {}
+
///Add a new node to the graph.
/// \return the new node.
@@ -736,7 +754,25 @@
///haven't been implemented yet.
///
class ListUGraph : public ExtendedListUGraphBase {
+ private:
+ ///ListUGraph is \e not copy constructible. Use UGraphCopy() instead.
+
+ ///ListUGraph is \e not copy constructible. Use UGraphCopy() instead.
+ ///
+ ListUGraph(const ListUGraph &) :ExtendedListUGraphBase() {};
+ ///\brief Assignment of ListUGraph to another is \e not allowed.
+ ///Use UGraphCopy() instead.
+
+ ///Assignment of ListUGraph to another is \e not allowed.
+ ///Use UGraphCopy() instead.
+ void operator=(const ListUGraph &) {}
public:
+ /// Constructor
+
+ /// Constructor.
+ ///
+ ListUGraph() {}
+
typedef ExtendedListUGraphBase Parent;
/// \brief Add a new node to the graph.
///
@@ -1131,7 +1167,11 @@
edges[edge.id].next_out = first_free_edge;
first_free_edge = edge.id;
}
-
+
+ ///\e
+
+ ///\bug Undocumented
+ ///\bug Doesn't destruct the maps.
void clear() {
aNodes.clear();
bNodes.clear();
Modified: hugo/trunk/lemon/smart_graph.h
==============================================================================
--- hugo/trunk/lemon/smart_graph.h (original)
+++ hugo/trunk/lemon/smart_graph.h Tue Jul 11 18:09:49 2006
@@ -97,6 +97,23 @@
///\sa id(Edge)
int maxEdgeId() const { return edges.size()-1; }
+ Node addNode() {
+ Node n; n.n=nodes.size();
+ nodes.push_back(NodeT()); //FIXME: Hmmm...
+ return n;
+ }
+
+ Edge addEdge(Node u, Node v) {
+ Edge e; e.n=edges.size(); edges.push_back(EdgeT()); //FIXME: Hmmm...
+ edges[e.n].source=u.n; edges[e.n].target=v.n;
+ edges[e.n].next_out=nodes[u.n].first_out;
+ edges[e.n].next_in=nodes[v.n].first_in;
+ nodes[u.n].first_out=nodes[v.n].first_in=e.n;
+
+ return e;
+ }
+
+
Node source(Edge e) const { return edges[e.n].source; }
Node target(Edge e) const { return edges[e.n].target; }
@@ -131,28 +148,6 @@
/// with the given id the effect of the function is undefinied.
static Edge edgeFromId(int id) { return Edge(id);}
- Node addNode() {
- Node n; n.n=nodes.size();
- nodes.push_back(NodeT()); //FIXME: Hmmm...
- return n;
- }
-
- Edge addEdge(Node u, Node v) {
- Edge e; e.n=edges.size(); edges.push_back(EdgeT()); //FIXME: Hmmm...
- edges[e.n].source=u.n; edges[e.n].target=v.n;
- edges[e.n].next_out=nodes[u.n].first_out;
- edges[e.n].next_in=nodes[v.n].first_in;
- nodes[u.n].first_out=nodes[v.n].first_in=e.n;
-
- return e;
- }
-
- void clear() {
- edges.clear();
- nodes.clear();
- }
-
-
class Node {
friend class SmartGraphBase;
friend class SmartGraph;
@@ -216,16 +211,6 @@
edge.n = edges[edge.n].next_in;
}
- Node _split(Node n, bool connect = true)
- {
- Node b = addNode();
- nodes[b.n].first_out=nodes[n.n].first_out;
- nodes[n.n].first_out=-1;
- for(int i=nodes[b.n].first_out;i!=-1;i++) edges[i].source=b.n;
- if(connect) addEdge(n,b);
- return b;
- }
-
};
typedef GraphExtender<SmartGraphBase> ExtendedSmartGraphBase;
@@ -251,6 +236,18 @@
class Snapshot;
friend class Snapshot;
+ private:
+ ///SmartGraph is \e not copy constructible. Use GraphCopy() instead.
+
+ ///SmartGraph is \e not copy constructible. Use GraphCopy() instead.
+ ///
+ SmartGraph(const SmartGraph &) :ExtendedSmartGraphBase() {};
+ ///\brief Assignment of SmartGraph to another is \e not allowed.
+ ///Use GraphCopy() instead.
+
+ ///Assignment of SmartGraph to another is \e not allowed.
+ ///Use GraphCopy() instead.
+ void operator=(const SmartGraph &) {}
protected:
void restoreSnapshot(const Snapshot &s)
{
@@ -268,6 +265,36 @@
}
public:
+
+ /// Constructor
+
+ /// Constructor.
+ ///
+ SmartGraph() {};
+
+ ///Add a new node to the graph.
+
+ /// \return the new node.
+ ///
+ Node addNode() { return Parent::addNode(); }
+
+ ///Add a new edge to the graph.
+
+ ///Add a new edge to the graph with source node \c s
+ ///and target node \c t.
+ ///\return the new edge.
+ Edge addEdge(const Node& s, const Node& t) {
+ return Parent::addEdge(s, t);
+ }
+
+ ///\e
+
+ ///\bug Undocumented
+ ///\bug Doesn't destruct the maps.
+ void clear() {
+ edges.clear();
+ nodes.clear();
+ }
///Split a node.
@@ -284,12 +311,15 @@
///\warning This functionality cannot be used together with the Snapshot
///feature.
///\todo It could be implemented in a bit faster way.
- Node split(Node n, bool connect = true)
+ Node split(Node n, bool connect = true)
{
- Node b = _split(n,connect);
+ Node b = addNode();
+ nodes[b.n].first_out=nodes[n.n].first_out;
+ nodes[n.n].first_out=-1;
+ for(int i=nodes[b.n].first_out;i!=-1;i++) edges[i].source=b.n;
+ if(connect) addEdge(n,b);
return b;
}
-
///Class to make a snapshot of the graph and to restrore to it later.
@@ -376,6 +406,24 @@
/// \todo Snapshot hasn't been implemented yet.
///
class SmartUGraph : public ExtendedSmartUGraphBase {
+ private:
+ ///SmartUGraph is \e not copy constructible. Use UGraphCopy() instead.
+
+ ///SmartUGraph is \e not copy constructible. Use UGraphCopy() instead.
+ ///
+ SmartUGraph(const SmartUGraph &) : ExtendedSmartUGraphBase() {};
+ ///\brief Assignment of SmartUGraph to another is \e not allowed.
+ ///Use UGraphCopy() instead.
+
+ ///Assignment of SmartUGraph to another is \e not allowed.
+ ///Use UGraphCopy() instead.
+ void operator=(const SmartUGraph &) {}
+ public:
+ /// Constructor
+
+ /// Constructor.
+ ///
+ SmartUGraph() {}
};
More information about the Lemon-commits
mailing list