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