DEADSOFTWARE

Completely convert .odc to .txt using Visitor
[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 std::string TYPENAME;
13 static const TypeProxy<TextModel> PROXY;
15 public:
16 TextModel(INTEGER id);
17 static const std::string &getType();
18 static const std::string *getSuper();
19 virtual const std::string &getTypeName() const;
20 virtual void internalize(Reader &reader);
21 };
23 class TextPiece {
24 public:
25 const size_t d_len;
26 TextPiece(size_t len);
27 virtual void read(Reader &reader) = 0;
28 virtual std::string toString() const = 0;
29 virtual void accept(Visitor &visitor) const = 0;
30 };
32 class LongPiece : public TextPiece {
33 private:
34 CHAR *d_buf;
35 public:
36 LongPiece(size_t len);
37 ~LongPiece();
38 virtual void read(Reader &reader);
39 virtual std::string toString() const;
40 virtual std::string getText() const;
41 virtual void accept(Visitor &visitor) const;
42 };
44 class ShortPiece : public TextPiece {
45 private:
46 SHORTCHAR *d_buf;
47 public:
48 ShortPiece(size_t len);
49 ~ShortPiece();
50 virtual void read(Reader &reader);
51 virtual std::string toString() const;
52 virtual std::string getText() const;
53 virtual void accept(Visitor &visitor) const;
54 };
56 class ViewPiece : public TextPiece {
57 Store *d_view;
58 public:
59 ViewPiece(Store *view);
60 virtual void read(Reader &reader);
61 virtual std::string toString() const;
62 virtual void accept(Visitor &visitor) const;
63 };
65 class StdTextModel : public TextModel {
66 private:
67 static const std::string TYPENAME;
68 static const TypeProxy<StdTextModel> PROXY;
69 std::vector<TextPiece *> d_pieces;
71 public:
72 StdTextModel(INTEGER id);
73 static const std::string &getType();
74 static const std::string *getSuper();
75 virtual const std::string &getTypeName() const;
76 virtual void internalize(Reader &reader);
78 virtual std::string toString();
79 virtual void accept(Visitor &visitor) const;
80 };
82 } // namespace odc
84 #endif // _TEXTMODEL_H_