home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / base / mapdef.h < prev    next >
C/C++ Source or Header  |  1995-04-08  |  7KB  |  244 lines

  1.  
  2.  
  3. #ifndef _mapdef_h_ /* Thu Nov  4 12:27:19 1993 */
  4. #define _mapdef_h_
  5.  
  6.  
  7.  
  8.  
  9.  
  10. /*
  11.  *
  12.  *          Copyright (C) 1994, M. A. Sridhar
  13.  *  
  14.  *
  15.  *     This software is Copyright M. A. Sridhar, 1994. You are free
  16.  *     to copy, modify or distribute this software  as you see fit,
  17.  *     and to use  it  for  any  purpose, provided   this copyright
  18.  *     notice and the following   disclaimer are included  with all
  19.  *     copies.
  20.  *
  21.  *                        DISCLAIMER
  22.  *
  23.  *     The author makes no warranties, either expressed or implied,
  24.  *     with respect  to  this  software, its  quality, performance,
  25.  *     merchantability, or fitness for any particular purpose. This
  26.  *     software is distributed  AS IS.  The  user of this  software
  27.  *     assumes all risks  as to its quality  and performance. In no
  28.  *     event shall the author be liable for any direct, indirect or
  29.  *     consequential damages, even if the  author has been  advised
  30.  *     as to the possibility of such damages.
  31.  *
  32.  */
  33.  
  34.  
  35.  
  36.  
  37.  
  38. // Maps:
  39.  
  40.  
  41. // #include "base/string.h"
  42.  
  43. //  IntStringMap is a map with {\tt long} keys and Strings as values.
  44.  
  45. class CL_EXPORT CL_IntStringMap: public CL_Map<long, CL_String> {
  46.  
  47. public:
  48.     CL_IntStringMap () {};
  49.  
  50.     CL_IntStringMap (CL_MapAssoc<long, CL_String>
  51.                      a[], long cnt) : CL_Map<long, CL_String> (a, cnt) {};
  52.     
  53.     const char* ClassName () const {return "CL_IntStringMap";};
  54.  
  55.     CL_ClassId ClassId () const {return _CL_IntStringMap_CLASSID;};
  56.  
  57.     CL_Object* Clone () const {return new CL_IntStringMap (*this); };
  58.  
  59. };
  60.  
  61. typedef CL_MapAssoc<long, CL_String> CL_IntStringAssoc;
  62. typedef CL_MapIterator<long, CL_String> CL_IntStringMapIterator;
  63.  
  64.  
  65.  
  66.  
  67. // IntIntMap maps {\tt long} values to {\tt long} values.
  68.  
  69.  
  70.  
  71. class CL_EXPORT CL_IntIntMap: public CL_Map<long, long> {
  72.  
  73. public:
  74.     CL_IntIntMap () {};
  75.  
  76.     CL_IntIntMap (CL_MapAssoc<long, long> a[], long cnt) : CL_Map<long, long>
  77.     (a, cnt) {};
  78.  
  79.     const char* ClassName () const {return "CL_IntIntMap";};
  80.  
  81.     CL_ClassId ClassId () const {return _CL_IntIntMap_CLASSID;};
  82.  
  83.     CL_Object* Clone () const {return new CL_IntIntMap (*this); };
  84.  
  85. };
  86.  
  87.  
  88. typedef CL_MapAssoc<long, long> CL_IntIntAssoc;
  89. typedef CL_MapIterator<long, long> CL_IntIntMapIterator;
  90.  
  91. //  IntPtrMap has {\tt long} as its key type, and the corresponding values
  92. //  are pointers to {\tt CL_Object}.
  93.  
  94.  
  95.  
  96. class CL_EXPORT CL_IntPtrMap: public CL_Map<long, CL_ObjectPtr> {
  97.  
  98. public:
  99.     CL_IntPtrMap () {};
  100.  
  101.     CL_IntPtrMap (CL_MapAssoc<long, CL_ObjectPtr>
  102.                   a[], long cnt) : CL_Map<long, CL_ObjectPtr> (a, cnt) {};
  103.     
  104.     const char* ClassName () const {return "CL_IntPtrMap";};
  105.  
  106.     CL_ClassId ClassId () const {return _CL_IntPtrMap_CLASSID;};
  107.  
  108.     CL_Object* Clone () const {return new CL_IntPtrMap (*this); };
  109.  
  110. };
  111.  
  112.  
  113. typedef CL_MapAssoc<long, CL_ObjectPtr> CL_IntPtrAssoc;
  114. typedef CL_MapIterator<long, CL_ObjectPtr> CL_IntPtrMapIterator;
  115.  
  116.  
  117. // The StringStringMap maps Strings to Strings.
  118.  
  119.  
  120. class CL_EXPORT CL_StringStringMap: public CL_Map<CL_String, CL_String> {
  121.  
  122. public:
  123.     CL_StringStringMap () {};
  124.  
  125.     CL_StringStringMap (CL_MapAssoc<CL_String, CL_String> a[], long cnt) :
  126.     CL_Map<CL_String, CL_String> (a, cnt) {};
  127.     
  128.     const char* ClassName () const {return "CL_StringStringMap";};
  129.  
  130.     CL_ClassId ClassId () const {return _CL_StringStringMap_CLASSID;};
  131.  
  132.     CL_Object* Clone () const {return new CL_StringStringMap (*this); };
  133.  
  134. };
  135.  
  136.  
  137. typedef CL_MapAssoc<CL_String, CL_String> CL_StringStringAssoc;
  138. typedef CL_MapIterator<CL_String, CL_String> CL_StringStringMapIterator;
  139.  
  140.  
  141.  
  142. // StringIntMap maps Strings to {\tt long} values.
  143.  
  144. class CL_EXPORT CL_StringIntMap: public CL_Map<CL_String, long> {
  145.  
  146. public:
  147.     CL_StringIntMap () {};
  148.  
  149.     CL_StringIntMap (CL_MapAssoc<CL_String, long>
  150.                      a[], long cnt) : CL_Map<CL_String, long> (a, cnt) {};
  151.     
  152.     const char* ClassName () const {return "CL_StringIntMap";};
  153.  
  154.     CL_ClassId ClassId () const {return _CL_StringIntMap_CLASSID;};
  155.  
  156.     CL_Object* Clone () const {return new CL_StringIntMap (*this); };
  157.  
  158. };
  159.  
  160. typedef CL_MapAssoc<CL_String, long> CL_StringIntAssoc;
  161. typedef CL_MapIterator<CL_String, long> CL_StringIntMapIterator;
  162.  
  163.  
  164.  
  165. //  The StringPtrMap has Strings as keys, and its values are pointers to
  166. //  {\tt CL_Object}.
  167.  
  168.  
  169. class CL_EXPORT CL_StringPtrMap: public CL_Map<CL_String, CL_ObjectPtr> {
  170.  
  171. public:
  172.     CL_StringPtrMap () {};
  173.  
  174.     CL_StringPtrMap (CL_MapAssoc<CL_String, CL_ObjectPtr>
  175.                      a[], long cnt) :
  176.                      CL_Map<CL_String, CL_ObjectPtr> (a, cnt) {};
  177.     
  178.     const char* ClassName () const {return "CL_StringPtrMap";};
  179.  
  180.     CL_ClassId ClassId () const {return _CL_StringPtrMap_CLASSID;};
  181.  
  182.     CL_Object* Clone () const {return new CL_StringPtrMap (*this); };
  183.  
  184. };
  185.  
  186.  
  187. typedef CL_MapAssoc<CL_String, CL_ObjectPtr> CL_StringPtrAssoc;
  188. typedef CL_MapIterator<CL_String, CL_ObjectPtr> CL_StringPtrMapIterator;
  189.  
  190. /* ----------------------- GenericMap ---------------------------------
  191.  * Commented out to prevent the "out of memory" error from Borland's tlib.
  192.  * --- Sridhar 9/15/94
  193.  *
  194.  * class CL_GenericMap: public CL_Map<CL_ObjectPtr, CL_ObjectPtr> {
  195.  *
  196.  * public:
  197.  *     CL_GenericMap () {};
  198.  * 
  199.  *     CL_GenericMap (CL_MapAssoc<CL_ObjectPtr, CL_ObjectPtr>
  200.  *                    a[], long cnt) : CL_Map<CL_ObjectPtr,
  201.  *     CL_ObjectPtr> (a, cnt) {};
  202.  *     
  203.  *     const char* ClassName () const {return "CL_GenericMap";};
  204.  * 
  205.  *     CL_ClassId ClassId () const {return _CL_GenericMap_CLASSID;};
  206.  * 
  207.  *     CL_Object* Clone () const {return new CL_GenericMap (*this); };
  208.  * 
  209.  * };
  210.  * 
  211.  * 
  212.  * typedef CL_MapAssoc<CL_ObjectPtr, CL_ObjectPtr> CL_GenericAssoc;
  213.  * typedef CL_MapIterator<CL_ObjectPtr, CL_ObjectPtr> CL_GenericMapIterator;
  214.  * 
  215.  */
  216.  
  217. // PtrIntMap uses pointers to {\tt CL_Object} as keys and {\tt long}s as
  218. // values. It uses the key's {\tt Compare} method for comparing.
  219.  
  220.  
  221. class CL_EXPORT CL_PtrIntMap: public CL_Map<CL_ObjectPtr, long> {
  222.  
  223. public:
  224.     CL_PtrIntMap () {};
  225.  
  226.     CL_PtrIntMap (CL_MapAssoc<CL_ObjectPtr, long> a[],
  227.                   long cnt) : CL_Map<CL_ObjectPtr, long>
  228.     (a, cnt) {};
  229.     
  230.     const char* ClassName () const {return "CL_PtrIntMap";};
  231.  
  232.     CL_ClassId ClassId () const {return _CL_PtrIntMap_CLASSID;};
  233.  
  234.     CL_Object* Clone () const {return new CL_PtrIntMap (*this); };
  235.  
  236. };
  237.  
  238.  
  239. typedef CL_MapAssoc<CL_ObjectPtr, long> CL_PtrIntAssoc;
  240. typedef CL_MapIterator<CL_ObjectPtr, long> CL_PtrIntMapIterator;
  241.  
  242. #endif
  243.  
  244.