DEADSOFTWARE

abfe13d24f6c6ad38b2dae6a333c05d88aa076c8
[odcread.git] / textmodel.h
1 #ifndef _TEXTMODEL_H_
2 #define _TEXTMODEL_H_
4 #include <oberon.h>
5 #include <typeregister.h>
6 #include <store.h>
8 namespace odc {
10 class TextModel : public ContainerModel {
11 private:
12 static const TypeProxy<TextModel, ContainerModel> PROXY;
14 public:
15 static const std::string TYPENAME;
16 virtual const std::string &getTypeName() const;
18 TextModel(INTEGER id);
19 virtual void internalize(Reader &reader);
20 };
22 class TextPiece {
23 public:
24 const size_t d_len;
25 TextPiece(size_t len);
26 virtual void read(Reader &reader) = 0;
27 virtual std::string toString() const = 0;
28 virtual void accept(Visitor &visitor) const = 0;
29 };
31 class LongPiece : public TextPiece {
32 private:
33 CHAR *d_buf;
34 public:
35 LongPiece(size_t len);
36 ~LongPiece();
37 virtual void read(Reader &reader);
38 virtual std::string toString() const;
39 virtual std::wstring getText() const;
40 virtual void accept(Visitor &visitor) const;
41 };
43 class ShortPiece : public TextPiece {
44 private:
45 SHORTCHAR *d_buf;
46 public:
47 ShortPiece(size_t len);
48 ~ShortPiece();
49 virtual void read(Reader &reader);
50 virtual std::string toString() const;
51 virtual std::string getText() const;
52 virtual void accept(Visitor &visitor) const;
53 };
55 class ViewPiece : public TextPiece {
56 Store *d_view;
57 public:
58 ViewPiece(Store *view);
59 virtual void read(Reader &reader);
60 virtual std::string toString() const;
61 virtual void accept(Visitor &visitor) const;
62 };
64 class StdTextModel : public TextModel {
65 private:
66 static const TypeProxy<StdTextModel, TextModel> PROXY;
67 std::vector<TextPiece *> d_pieces;
69 public:
70 static const std::string TYPENAME;
71 virtual const std::string &getTypeName() const;
73 StdTextModel(INTEGER id);
74 virtual void internalize(Reader &reader);
76 virtual std::string toString();
77 virtual void accept(Visitor &visitor) const;
78 };
80 } // namespace odc
82 #endif // _TEXTMODEL_H_