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