alpar@52: // -*-mode: c++; -*- alpar@52: alpar@52: class Graph alpar@52: { alpar@52: public: alpar@52: class EdgeIt {}; alpar@52: alpar@52: class InEdgeIt : public EdgeIt alpar@52: class OutEdgeIt : public EdgeIt {}; alpar@52: class SymEdgeIt : public EdgeIt {}; alpar@52: class EachEdgeIt : public EdgeIt {}; alpar@52: alpar@52: class NodeIt {}; alpar@52: alpar@62: NodeIt &getFirst(NodeIt &) const {}; alpar@62: InEdgeIt &getFirst(InEdgeIt &,const NodeIt) const {}; alpar@62: OutEdgeIt &getFirst(OutEdgeIt &,const NodeIt) const {}; alpar@62: SymEdgeIt &getFirst(SymEdgeIt &,const NodeIt) const {}; alpar@62: EachEdgeIt &getFirst(EachEdgeIt &) const {}; alpar@52: alpar@62: NodeIt next(const NodeIt) const {}; alpar@62: InEdgeIt next(const InEdgeIt) const {}; alpar@62: OutEdgeIt next(const OutEdgeIt) const {}; alpar@62: SymEdgeIt next(const SymEdgeIt) const {}; alpar@62: EachEdgeIt next(const EachEdgeIt) const {}; alpar@52: alpar@62: NodeIt &goNext(NodeIt &) const {}; alpar@62: InEdgeIt &goNext(InEdgeIt &) const {}; alpar@62: OutEdgeIt &goNext(OutEdgeIt &) const {}; alpar@62: SymEdgeIt &goNext(SymEdgeIt &) const {}; alpar@62: EachEdgeIt &goNext(EachEdgeIt &) const {}; alpar@52: alpar@62: NodeIt head(const EdgeIt) const {}; alpar@62: NodeIt tail(const EdgeIt) const {}; alpar@55: alpar@62: NodeIt aNode(const InEdgeIt) const {}; alpar@62: NodeIt aNode(const OutEdgeIt) const {}; alpar@62: NodeIt aNode(const SymEdgeIt) const {}; alpar@52: alpar@62: NodeIt bNode(const InEdgeIt) const {}; alpar@62: NodeIt bNode(const OutEdgeIt) const {}; alpar@62: NodeIt bNode(const SymEdgeIt) const {}; alpar@55: alpar@62: bool valid(const NodeIt) const {}; alpar@62: bool valid(const EdgeIt) const {}; alpar@55: alpar@62: void setInvalid(NodeIt &) const {}; alpar@62: void setInvalid(EdgeIt &) const {}; alpar@52: alpar@62: NodeIt addNode() {}; alpar@62: EdgeIt addEdge(const NodeIt from,const NodeIt to) {}; alpar@52: alpar@62: void delete(NodeIt n) {}; alpar@62: void delete(EdgeIt e) {}; alpar@52: alpar@62: void clear() {}; alpar@52: alpar@52: template class NodeMap alpar@52: { alpar@52: public: alpar@61: typedef T ValueType; alpar@61: typedef NodeIt KeyType; alpar@62: void set(const NodeIt i, const T &t) {}; alpar@62: T get(const NodeIt i) const {}; alpar@62: T &operator[](const NodeIt i) {}; alpar@52: alpar@62: NodeMap(const Graph &G) {}; alpar@52: }; alpar@52: alpar@52: template class EdgeMap alpar@52: { alpar@52: public: alpar@61: typedef T ValueType; alpar@61: typedef EdgeIt KeyType; alpar@62: void set(const EdgeIt i, const T &t) {}; alpar@62: T get(const EdgeIt i) const {}; alpar@62: T &operator[](const EdgeIt i) {}; alpar@52: alpar@62: EdgeMap(const Graph &G) {}; alpar@52: }; alpar@52: };