src/include/skeletons/maps.h
author athos
Fri, 02 Apr 2004 15:59:17 +0000
changeset 277 044f5898b769
parent 242 b255f25ad394
child 282 7f85e99502db
permissions -rw-r--r--
Munkaido
     1 // -*- c++ -*-
     2 #ifndef HUGO_MAPSKELETON_H
     3 #define HUGO_MAPSKELETON_H
     4 
     5 ///\file
     6 ///\brief Map concepts checking classes for testing and documenting.
     7 
     8 namespace hugo {
     9   
    10   ///Readable map skeleton
    11   template<typename K, typename T>
    12   class ReadMapSkeleton
    13   {
    14   public:
    15     /// Map value type.
    16     typedef T ValueType;
    17     /// Map key type.
    18     typedef K KeyType;
    19 
    20     ///Default constructor.
    21     ReadMapSkeleton() {}
    22     
    23     ///Reads an element of the map.
    24     ValueType operator[](const KeyType &i) const {return ValueType();}
    25   };
    26 
    27 
    28   ///Writeable map skeleton
    29   template<typename K, typename T>
    30   class WriteMapSkeleton 
    31   {
    32   public:
    33     /// Map value type.
    34     typedef T ValueType;
    35     /// Map key type.
    36     typedef K KeyType;
    37 
    38     ///Default constructor.
    39     WriteMapSkeleton() {}
    40     ///'Fill with' constructor.
    41     WriteMapSkeleton(const ValueType &t) {}
    42     
    43     ///Write an element of a map.
    44     void set(const KeyType &i,const ValueType &t) {}
    45   };
    46 
    47   ///Read/Write map skeleton.
    48   template<typename K, typename T>
    49   class ReadWriteMapSkeleton : public ReadMapSkeleton<K,T>,
    50 			       public WriteMapSkeleton<K,T>
    51   {
    52   public:
    53     ///Default constructor.
    54     ReadWriteMapSkeleton() : ReadMapSkeleton(), WriteMapSkeleton() {}
    55     ///'Fill with' constructor.
    56     ReadWriteMap(const ValueType &t) :ReadMapSkeleton(), WriteMapSkeleton(t) {}
    57   };
    58   
    59   
    60   ///Dereferable map skeleton
    61   template<typename K, typename T>
    62   class MemoryMapSkeleton : public ReadWriteMapSkeleton<K,T>
    63   {
    64   public:
    65     /// Map value type.
    66     typedef T ValueType;
    67     /// Map key type.
    68     typedef K KeyType;
    69 
    70     ///Default constructor.
    71     ReferenceMapSkeleton() : ReadWriteMapSkeleton() {}
    72     ///'Fill with' constructor.
    73     ReferenceMapSkeleton(const ValueType &t) : ReadWriteMapSkeleton(t) {}    
    74 
    75     ///Give a reference to the value belonging to a key.
    76     ValueType &operator[](const KeyType &i) {return *(ValueType*)0;} 
    77     ///Give a const reference to the value belonging to a key.
    78     const ValueType &operator[](const KeyType &i) const {return *(T*)0;}
    79   };
    80 
    81 
    82 
    83 }
    84 #endif // HUGO_MAPSKELETON_H