src/work/alpar/emptygraph.h
author alpar
Fri, 20 Feb 2004 00:29:19 +0000
changeset 104 7a2d991e9852
parent 62 aa1700f78754
child 145 07c32a103bbb
permissions -rw-r--r--
A smart (and fast) graph class
     1 // -*-mode: c++; -*-
     2 
     3 class Graph
     4 {
     5 public:
     6   class EdgeIt {};
     7   
     8   class InEdgeIt : public EdgeIt {};
     9   class OutEdgeIt : public EdgeIt {};
    10   class SymEdgeIt : public EdgeIt {};
    11   class EachEdgeIt : public EdgeIt {};
    12 
    13   class NodeIt {};
    14     
    15   NodeIt &getFirst(NodeIt &) const {}
    16   InEdgeIt &getFirst(InEdgeIt &, NodeIt) const {}
    17   OutEdgeIt &getFirst(OutEdgeIt &, NodeIt) const {}
    18   SymEdgeIt &getFirst(SymEdgeIt &, NodeIt) const {}
    19   EachEdgeIt &getFirst(EachEdgeIt &) const {}
    20 
    21   NodeIt next(NodeIt) const {}
    22   InEdgeIt next(InEdgeIt) const {}
    23   OutEdgeIt next(OutEdgeIt) const {}
    24   SymEdgeIt next(SymEdgeIt) const {}
    25   EachEdgeIt next(EachEdgeIt) const {}
    26 
    27   NodeIt &goNext(NodeIt &) const {}
    28   InEdgeIt &goNext(InEdgeIt &) const {}
    29   OutEdgeIt &goNext(OutEdgeIt &) const {}
    30   SymEdgeIt &goNext(SymEdgeIt &) const {}
    31   EachEdgeIt &goNext(EachEdgeIt &) const {}
    32 
    33   NodeIt head(EdgeIt) const {}
    34   NodeIt tail(EdgeIt) const {}
    35   
    36   NodeIt aNode(InEdgeIt) const {}
    37   NodeIt aNode(OutEdgeIt) const {}
    38   NodeIt aNode(SymEdgeIt) const {}
    39 
    40   NodeIt bNode(InEdgeIt) const {}
    41   NodeIt bNode(OutEdgeIt) const {}
    42   NodeIt bNode(SymEdgeIt) const {}
    43 
    44   //bool valid(const NodeIt) const {};
    45   //bool valid(const EdgeIt) const {};
    46 
    47   //void setInvalid(NodeIt &) const {};
    48   //void setInvalid(EdgeIt &) const {};
    49   
    50   NodeIt addNode() {}
    51   EdgeIt addEdge(NodeIt tail, NodeIt head) {}
    52     
    53   void erase(NodeIt n) {}
    54   void erase(EdgeIt e) {}
    55 
    56   void clear() {}
    57 
    58   template<class T> class NodeMap
    59   {
    60   public:
    61     typedef T ValueType;
    62     typedef NodeIt KeyType;
    63     void set(NodeIt i, T t) {}
    64     T get(NodeIt i) const {}
    65     T &operator[](NodeIt i) {}
    66       
    67     NodeMap(const Graph &G) {}
    68     NodeMap(const Graph &G, T t) {}
    69   };
    70 
    71   template<class T> class EdgeMap
    72   {
    73   public:
    74     typedef T ValueType;
    75     typedef EdgeIt KeyType;
    76     void set(EdgeIt i, T t) {}
    77     T get(EdgeIt i) const {}
    78     T &operator[](EdgeIt i) {}
    79       
    80     EdgeMap(const Graph &G) {}
    81     EdgeMap(const Graph &G, T t) {}
    82   };
    83 };