home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / NmFuncMap.hxx < prev    next >
Text File  |  1996-05-31  |  2KB  |  81 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  *      (c)     Westmount Technology    1993
  4.  *
  5.  *      File:        @(#)NmFuncMap.hxx    1.3
  6.  *      Author:        Fred Mol
  7.  *      Description:    A mapping from a name to a pointer to function
  8.  *---------------------------------------------------------------------------
  9.  SccsId = @(#)NmFuncMap.hxx    1.3   11 Nov 1993 Copyright 1993 Westmount Technology */
  10.  
  11. #ifndef NMFUNCMAP_HXX
  12. #define NMFUNCMAP_HXX
  13.  
  14. #ifndef TEMPLCONF_HXX
  15. #include "TemplConf.hxx"
  16. #endif
  17.  
  18. #ifndef STRINGHASH_HXX
  19. #include "StringHash.hxx"
  20. #endif
  21.  
  22. #ifndef PTRDICT_HXX
  23. #include "PtrDict.hxx"
  24. #endif
  25.  
  26. #if HAS_TEMPLATES
  27.  
  28. template<class T>
  29. class NmFuncMap : private GenPtrDict {
  30. public:
  31.     void        set(const StringHash &key, T func)
  32.         { GenPtrDict::set(new StringHash(key), func); }
  33.     T        get(const StringHash &key)
  34.         { return (T) GenPtrDict::get(key); }
  35.     void        remove(const StringHash &key)
  36.         { GenPtrDict::remove(key); }
  37.     int        isPresent(const StringHash &key)
  38.         { return GenPtrDict::isPresent(key); }
  39.  
  40.     const StringHash    *firstKey()
  41.         { return (StringHash *) GenPtrDict::firstKey(); }
  42.     const StringHash    *nextKey()
  43.         { return (StringHash *) GenPtrDict::nextKey(); }
  44.  
  45.     T        firstValue()
  46.         { return (T) GenPtrDict::firstValue(); }
  47.     T        nextValue()
  48.         { return (T) GenPtrDict::nextValue(); }
  49. };
  50.  
  51. #else
  52.  
  53. #define    NmFuncMap_(func)    name2(func,_NmFuncMap)
  54.  
  55. #define NmFuncMapdeclare(Func)                        \
  56. class NmFuncMap_(Func) : private GenPtrDict {                \
  57. public:                                    \
  58.     void        set(const StringHash &key, Func func)        \
  59.         { GenPtrDict::set(new StringHash(key), func); }        \
  60.     Func        get(const StringHash &key)            \
  61.         { return (Func) GenPtrDict::get(key); }            \
  62.     void        remove(const StringHash &key)            \
  63.         { GenPtrDict::remove(key); }                \
  64.     int        isPresent(const StringHash &key)        \
  65.         { return GenPtrDict::isPresent(key); }            \
  66.                                     \
  67.     const StringHash    *firstKey()                \
  68.         { return (StringHash *) GenPtrDict::firstKey(); }    \
  69.     const StringHash    *nextKey()                \
  70.         { return (StringHash *) GenPtrDict::nextKey(); }    \
  71.                                     \
  72.     Func        firstValue()                    \
  73.         { return (Func) GenPtrDict::firstValue(); }        \
  74.     Func        nextValue()                    \
  75.         { return (Func) GenPtrDict::nextValue(); }        \
  76. }
  77.  
  78. #endif /* HAS_TEMPLATES */
  79.  
  80. #endif /* NMFUNCMAP_HXX */
  81.