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()50 const CharsetInfo &InputCodingSystemKit::systemCharset() const
51 {
52   return systemCharset_;
53 }
54 
55 #ifdef SP_NAMESPACE
56 }
57 #endif
58 
59 #endif /* not CodingSystemKit_INCLUDED */
60