doc/maps.dox
author alpar
Thu, 01 Apr 2004 15:32:31 +0000
changeset 273 e9024dad7fc1
parent 210 6bc65a8a99c6
child 289 98adf9276de0
permissions -rw-r--r--
M_PI
alpar@202
     1
/*!
alpar@202
     2
alpar@202
     3
\page maps How to write maps
alpar@202
     4
alpar@202
     5
\section read-maps Readable Maps
alpar@202
     6
alpar@202
     7
It is quite easy to write your own readmap for the edges or nodes of a graph.
alpar@202
     8
alpar@202
     9
You can find some example below.
alpar@202
    10
alpar@204
    11
This simple map assigns \f$\pi\f$ to each edge.
alpar@204
    12
alpar@202
    13
\code
alpar@273
    14
struct MyMap 
alpar@202
    15
{
alpar@273
    16
  typedef double ValueType;
alpar@273
    17
  double operator[](Graph::EdgeIt e) const { return M_PI;}
alpar@204
    18
};
alpar@204
    19
\endcode
alpar@204
    20
alpar@204
    21
alpar@210
    22
Here is a more complex example. It provides a length function which is obtained
alpar@210
    23
from a base length function modified by a potential difference.
alpar@210
    24
\todo Please improve on the english. 
alpar@202
    25
alpar@202
    26
\code
alpar@202
    27
class MyLengthMap 
alpar@202
    28
{
alpar@202
    29
  const Graph::EdgeMap &ol;
alpar@202
    30
  const Graph::NodeMap &pot;
alpar@202
    31
  
alpar@273
    32
public:
alpar@273
    33
  typedef double ValueType;
alpar@273
    34
alpar@210
    35
  double operator[](Graph::EdgeIt e) const {
alpar@210
    36
    return ol.get(e)-pot.get(v)-pot.get(u);
alpar@210
    37
  }
alpar@202
    38
  
alpar@202
    39
  MyComplexMap(const Graph::EdgeMap &o,const Graph::NodeMap &p) :
alpar@202
    40
    ol(o), pot(p);
alpar@202
    41
};
alpar@202
    42
\endcode
alpar@202
    43
alpar@273
    44
\todo Don't we need \e to \e require a 'typedef xxx KeyType' tag, as well?
alpar@202
    45
*/