~ubuntu-branches/ubuntu/trusty/openjade1.3/trusty

« back to all changes in this revision

Viewing changes to include/CodingSystem.h

  • Committer: Bazaar Package Importer
  • Author(s): Yann Dirson
  • Date: 2002-04-09 00:01:50 UTC
  • Revision ID: james.westby@ubuntu.com-20020409000150-r9rkyalxlhvf9ba3
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) 1994 James Clark
 
2
// See the file COPYING for copying permission.
 
3
 
 
4
#ifndef CodingSystem_INCLUDED
 
5
#define CodingSystem_INCLUDED 1
 
6
 
 
7
#ifdef __GNUG__
 
8
#pragma interface
 
9
#endif
 
10
 
 
11
#include "types.h"
 
12
#include "Boolean.h"
 
13
#include "StringC.h"
 
14
#include "OutputByteStream.h"
 
15
 
 
16
#include <stddef.h>
 
17
 
 
18
 
 
19
#ifdef SP_NAMESPACE
 
20
namespace SP_NAMESPACE {
 
21
#endif
 
22
 
 
23
class SP_API Decoder {
 
24
public:
 
25
  Decoder(unsigned minBytesPerChar = 1);
 
26
  virtual ~Decoder();
 
27
  virtual size_t decode(Char *, const char *, size_t, const char **) = 0;
 
28
  virtual Boolean convertOffset(unsigned long &offset) const;
 
29
  // Decoder assumes that for every decoded Char there must be at least
 
30
  // minBytesPerChar bytes
 
31
  unsigned minBytesPerChar() const;
 
32
protected:
 
33
  unsigned minBytesPerChar_;
 
34
};
 
35
 
 
36
 
 
37
class SP_API Encoder {
 
38
public:
 
39
  class SP_API Handler {
 
40
  public:
 
41
    virtual void handleUnencodable(Char, OutputByteStream *) = 0;
 
42
  };
 
43
  Encoder();
 
44
  virtual ~Encoder();
 
45
  virtual void output(const Char *, size_t, OutputByteStream *) = 0;
 
46
  // This outputs a byte order mark with Unicode.
 
47
  virtual void startFile(OutputByteStream *);
 
48
  virtual void output(Char *, size_t, OutputByteStream *);
 
49
  virtual void setUnencodableHandler(Handler *);
 
50
  virtual void handleUnencodable(Char, OutputByteStream *);
 
51
};
 
52
 
 
53
class SP_API RecoveringEncoder : public Encoder {
 
54
public:
 
55
  RecoveringEncoder();
 
56
  void setUnencodableHandler(Handler *);
 
57
  void handleUnencodable(Char, OutputByteStream *);
 
58
private:
 
59
  Handler *unencodableHandler_;
 
60
};
 
61
 
 
62
class SP_API InputCodingSystem {
 
63
public:
 
64
  virtual ~InputCodingSystem();
 
65
  virtual Decoder *makeDecoder() const = 0;
 
66
  StringC convertIn(const char *) const;
 
67
  virtual Boolean isIdentity() const;
 
68
};
 
69
 
 
70
class SP_API OutputCodingSystem {
 
71
public:
 
72
  virtual ~OutputCodingSystem();
 
73
  virtual Encoder *makeEncoder() const = 0;
 
74
  virtual unsigned fixedBytesPerChar() const;
 
75
  String<char> convertOut(const StringC &) const;
 
76
};
 
77
 
 
78
class SP_API CodingSystem : public InputCodingSystem, public OutputCodingSystem {
 
79
};
 
80
 
 
81
inline
 
82
unsigned Decoder::minBytesPerChar() const
 
83
{
 
84
  return minBytesPerChar_;
 
85
}
 
86
 
 
87
#ifdef SP_NAMESPACE
 
88
}
 
89
#endif
 
90
 
 
91
#endif /* not CodingSystem_INCLUDED */