Improve docs.
     6 #include <hugo/array_map.h>
 
     7 #include <hugo/vector_map.h>
 
    11 ///\brief Graph maps that construates and destruates
 
    12 ///their elements dynamically.
 
    16 /// \addtogroup graphmaps
 
    19   /** The ArrayMap template class is graph map structure what
 
    20    *  automatically updates the map when a key is added to or erased from
 
    21    *  the map. This map uses the VectorMap if the ValueType is a primitive
 
    22    *  type and the ArrayMap for the other cases.
 
    24    *  The template parameter is the MapRegistry that the maps
 
    25    *  will belong to and the ValueType.
 
    29   /** Macro to implement the DefaultMap.
 
    31 #define DEFAULT_MAP_BODY(DynMap, Value) \
 
    33     typedef DynMap<MapRegistry, Value> MapImpl; \
 
    37     typedef typename MapRegistry::Graph Graph; \
 
    39     DefaultMap() : MapImpl() {} \
 
    41     DefaultMap(const Graph& g, MapRegistry& r) : MapImpl(g, r) {} \
 
    43     DefaultMap(const Graph& g, MapRegistry& r, const Value& v) \
 
    44       : MapImpl(g, r, v) {} \
 
    46     DefaultMap(const DefaultMap& copy) \
 
    47       : MapImpl(static_cast<const MapImpl&>(copy)) {} \
 
    49     template <typename CMap> DefaultMap(const CMap& copy) : MapImpl(copy) {} \
 
    51     DefaultMap& operator=(const DefaultMap& copy) { \
 
    52       MapImpl::operator=(static_cast<const MapImpl&>(copy)); \
 
    56     template <typename CMap> DefaultMap& operator=(const CMap& copy) { \
 
    57       MapImpl::operator=(copy); \
 
    64   template <typename MapRegistry, typename Type>
 
    65   class DefaultMap : public ArrayMap<MapRegistry, Type> 
 
    66   DEFAULT_MAP_BODY(ArrayMap, Type);
 
    68   template <typename MapRegistry>
 
    69   class DefaultMap<MapRegistry, bool> 
 
    70     : public VectorMap<MapRegistry, bool> 
 
    71   DEFAULT_MAP_BODY(VectorMap, bool);
 
    73   template <typename MapRegistry>
 
    74   class DefaultMap<MapRegistry, char> 
 
    75     : public VectorMap<MapRegistry, char> 
 
    76   DEFAULT_MAP_BODY(VectorMap, char);
 
    78   template <typename MapRegistry>
 
    79   class DefaultMap<MapRegistry, int> 
 
    80     : public VectorMap<MapRegistry, int> 
 
    81   DEFAULT_MAP_BODY(VectorMap, int);
 
    83   template <typename MapRegistry>
 
    84   class DefaultMap<MapRegistry, short> 
 
    85     : public VectorMap<MapRegistry, short> 
 
    86   DEFAULT_MAP_BODY(VectorMap, short);
 
    88   template <typename MapRegistry>
 
    89   class DefaultMap<MapRegistry, long> 
 
    90     : public VectorMap<MapRegistry, long> 
 
    91   DEFAULT_MAP_BODY(VectorMap, long);
 
    93   template <typename MapRegistry>
 
    94   class DefaultMap<MapRegistry, float> 
 
    95     : public VectorMap<MapRegistry, float> 
 
    96   DEFAULT_MAP_BODY(VectorMap, float);
 
    98   template <typename MapRegistry>
 
    99   class DefaultMap<MapRegistry, double> 
 
   100     : public VectorMap<MapRegistry, double> 
 
   101   DEFAULT_MAP_BODY(VectorMap, double);
 
   103   template <typename MapRegistry>
 
   104   class DefaultMap<MapRegistry, long double> 
 
   105     : public VectorMap<MapRegistry, long double> 
 
   106   DEFAULT_MAP_BODY(VectorMap, long double);
 
   108   template <typename MapRegistry, typename Type>
 
   109   class DefaultMap<MapRegistry, Type*>
 
   110     : public VectorMap<MapRegistry, Type*> 
 
   111   DEFAULT_MAP_BODY(VectorMap, Type*);