1 // Copyright (c) 1997 James Clark 2 // See the file COPYING for copying permission. 3 #pragma ident "%Z%%M% %I% %E% SMI" 4 5 #ifndef CodingSystemKit_INCLUDED 6 #define CodingSystemKit_INCLUDED 1 7 8 #ifdef __GNUG__ 9 #pragma interface 10 #endif 11 12 #include "Boolean.h" 13 #include "StringC.h" 14 #include "CodingSystem.h" 15 #include "Resource.h" 16 #include "CharsetInfo.h" 17 18 #ifdef SP_NAMESPACE 19 namespace SP_NAMESPACE { 20 #endif 21 22 class SP_API InputCodingSystemKit : public Resource { 23 public: 24 virtual ~InputCodingSystemKit(); 25 // Returned InputCodingSystem lives at least as long as the Kit. 26 virtual const InputCodingSystem * 27 identityInputCodingSystem() const = 0; 28 virtual const InputCodingSystem * 29 makeInputCodingSystem(const StringC &, 30 const CharsetInfo &, 31 Boolean isBctf, 32 const char *&staticName) const = 0; 33 virtual Char replacementChar() const = 0; 34 const CharsetInfo &systemCharset() const; 35 protected: 36 CharsetInfo systemCharset_; 37 }; 38 39 class SP_API CodingSystemKit : public InputCodingSystemKit { 40 public: 41 virtual CodingSystemKit *copy() const = 0; 42 virtual const CodingSystem * 43 identityCodingSystem() const = 0; 44 virtual const CodingSystem * 45 makeCodingSystem(const char *, Boolean isBctf) const = 0; 46 static CodingSystemKit *make(const char *); 47 }; 48 49 inline systemCharset()50const CharsetInfo &InputCodingSystemKit::systemCharset() const 51 { 52 return systemCharset_; 53 } 54 55 #ifdef SP_NAMESPACE 56 } 57 #endif 58 59 #endif /* not CodingSystemKit_INCLUDED */ 60