[Lemon-commits] [lemon_svn] alpar: r80 - hugo/trunk/src/work/alpar
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:37:11 CET 2006
Author: alpar
Date: Thu Feb 5 16:56:12 2004
New Revision: 80
Added:
hugo/trunk/src/work/alpar/gwrapper.h
Log:
Some Graph wrapper classes
Added: hugo/trunk/src/work/alpar/gwrapper.h
==============================================================================
--- (empty file)
+++ hugo/trunk/src/work/alpar/gwrapper.h Thu Feb 5 16:56:12 2004
@@ -0,0 +1,148 @@
+// -*-mode: c++; -*-
+
+template<typename G>
+class TrivGraphWrapper
+{
+ G *graph;
+
+public:
+ typedef G BaseGraph;
+
+ typedef typename G::EdgeIt EdgeIt;
+
+ typedef typename G::InEdgeIt InEdgeIt;
+ typedef typename G::OutEdgeIt OutEdgeIt;
+ typedef typename G::SymEdgeIt SymEdgeIt;
+ typedef typename G::EachEdgeIt EachEdgeIt;
+
+ typedef typename G::NodeIt NodeIt;
+
+ template<typename I> I &getFirst(I &i); { return graph->getFirst(i); }
+ template<typename I,typename P> I &getFirst(I &i,const P &p);
+ { return graph->getFirst(i,p); }
+ template<typename I> I next(const I i); { return graph->goNext(i); }
+ template<typename I> I &goNext(I &i); { return graph->goNext(i); }
+
+ NodeIt head(const EdgeIt &e);
+ { return graph->head(e); }
+ NodeIt tail(const EdgeIt &e);
+ { return graph->tail(e); }
+
+ template<typename I> NodeIt aNode(const I e);
+ { return graph->aNode(e); }
+ template<typename I> NodeIt bNode(const I e);
+ { return graph->bNode(e); }
+
+ template<typename I> bool valid(const I i);
+ { return graph->valid(i); }
+
+ template<typename I> void setInvalid(const I &i);
+ { return graph->setInvalid(i); }
+
+ NodeIt addNode(); { return graph->addNode(); }
+ EdgeIt addEdge(const NodeIt from,const NodeIt to);
+ { return graph->addEdge(ftom,to); }
+
+ template<I> void delete(I i); { graph->delete(i); }
+
+ void clean(); { graph->clean(); }
+
+ template<class T> class NodeMap : public typename G::NodeMap<T>;
+ template<class T> class EdgeMap : public typename G::EdgeMap<T>;
+
+ void SetG(G &g) {graph = &g;}
+
+ TrivGraphWrapper() {graph = NULL;}
+ TrivGraphWrapper(G &g) {graph = &g;}
+};
+
+template<typename G>
+class RevGraphWrapper
+{
+ G *graph;
+
+public:
+ typedef G BaseGraph;
+
+ typedef typename G::EdgeIt EdgeIt;
+
+ typedef typename G::InEdgeIt OutEdgeIt;
+ typedef typename G::OutEdgeIt InEdgeIt;
+ typedef typename G::SymEdgeIt SymEdgeIt;
+ typedef typename G::EachEdgeIt EachEdgeIt;
+
+ typedef typename G::NodeIt NodeIt;
+
+ template<typename I> I &getFirst(I &i); { return graph->getFirst(i); }
+ template<typename I,typename P> I &getFirst(I &i,const P &p);
+ { return graph->getFirst(i,p); }
+ template<typename I> I next(const I i); { return graph->goNext(i); }
+ template<typename I> I &goNext(I &i); { return graph->goNext(i); }
+
+ NodeIt head(const EdgeIt &e);
+ { return graph->tail(e); }
+ NodeIt tail(const EdgeIt &e);
+ { return graph->head(e); }
+
+ template<typename I> NodeIt aNode(const I e);
+ { return graph->aNode(e); }
+ template<typename I> NodeIt bNode(const I e);
+ { return graph->bNode(e); }
+
+ template<typename I> bool valid(const I i);
+ { return graph->valid(i); }
+
+ template<typename I> void setInvalid(const I &i);
+ { return graph->setInvalid(i); }
+
+ NodeIt addNode(); { return graph->addNode(); }
+ EdgeIt addEdge(const NodeIt from,const NodeIt to);
+ { return graph->addEdge(to,from); }
+
+ template<I> void delete(I i); { graph->delete(i); }
+
+ void clean(); { graph->clean(); }
+
+ template<class T> class NodeMap : public typename G::NodeMap<T>;
+ template<class T> class EdgeMap : public typename G::EdgeMap<T>;
+
+ void SetG(G &g) {graph = &g;}
+
+ RevGraphWrapper() {graph = NULL;}
+ RevGraphWrapper(G &g) {graph = &g;}
+};
+
+
+
+// NodeIt &getFirst(NodeIt &n) { return graph->getFirst(n); }
+// InEdgeIt &getFirst(InEdgeIt &e,const NodeIt &n);
+// { return graph->getFirst(e,n); }
+// OutEdgeIt &getFirst(OutEdgeIt &e,const NodeIt &n);
+// { return graph->getFirst(e,n); }
+// SymEdgeIt &getFirst(SymEdgeIt &e,const NodeIt &n);
+// { return graph->getFirst(e,n); }
+// EachEdgeIt &getFirst(EachEdgeIt &e);
+// { return graph->getFirst(e); }
+
+// NodeIt next(const NodeIt &n);
+// { return graph->next(n); }
+// InEdgeIt next(const InEdgeIt &e);
+// { return graph->next(e); }
+// OutEdgeIt next(const OutEdgeIt &e);
+// { return graph->next(e); }
+// SymEdgeIt next(const SymEdgeIt &e);
+// { return graph->next(e); }
+// EachEdgeIt next(const EachEdgeIt &e);
+// { return graph->next(e); }
+
+// NodeIt &goNext(NodeIt &n);
+// { return graph->goNext(n); }
+// InEdgeIt &goNext(InEdgeIt &e);
+// { return graph->goNext(e); }
+// OutEdgeIt &goNext(OutEdgeIt &e);
+// { return graph->goNext(e); }
+// SymEdgeIt &goNext(SymEdgeIt &e);
+// { return graph->goNext(e); }
+// EachEdgeIt &goNext(EachEdgeIt &e);
+// { return graph->goNext(e); }
+
More information about the Lemon-commits
mailing list