xref: /onnv-gate/usr/src/cmd/man/src/util/nsgmls.src/include/XcharMap.h (revision 0:68f95e015346)
1 // Copyright (c) 1994 James Clark
2 // See the file COPYING for copying permission.
3 #pragma ident	"%Z%%M%	%I%	%E% SMI"
4 
5 #ifndef XcharMap_INCLUDED
6 #define XcharMap_INCLUDED 1
7 
8 #include "types.h"
9 #include "Resource.h"
10 #include "Ptr.h"
11 #include "constant.h"
12 
13 #ifdef SP_NAMESPACE
14 namespace SP_NAMESPACE {
15 #endif
16 
17 template<class T>
18 class SharedXcharMap : public Resource {
19 public:
20   SharedXcharMap();
21   SharedXcharMap(T defaultValue);
ptr()22   T *ptr() { return v + 1; }
23 private:
24   T v[2 + charMax];
25 };
26 
27 template<class T>
28 class XcharMap {
29 public:
30   XcharMap();
31   XcharMap(T defaultValue);
32   T operator[](Xchar c) const { return ptr_[c]; }
33   void setRange(Char min, Char max, T val);
setChar(Char c,T val)34   void setChar(Char c, T val) { ptr_[c] = val; }
setEe(T val)35   void setEe(T val) { ptr_[-1] = val; }
clear()36   void clear() { ptr_ = 0; sharedMap_.clear(); }
37 private:
38   T *ptr_;
39   Ptr<SharedXcharMap<T> > sharedMap_;
40 };
41 
42 #ifdef SP_NAMESPACE
43 }
44 #endif
45 
46 #endif /* not XcharMap_INCLUDED */
47 
48 #ifdef SP_DEFINE_TEMPLATES
49 #include "XcharMap.cxx"
50 #endif
51