5 #include <typeregister.h>
10 class TextModel
: public ContainerModel
{
12 static const std::string TYPENAME
;
13 static const TypeProxy
<TextModel
> PROXY
;
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
);
26 TextPiece(size_t len
);
27 virtual void read(Reader
&reader
) = 0;
28 virtual std::string
toString() = 0;
29 virtual std::string
toPlainText() = 0;
32 class LongPiece
: public TextPiece
{
36 LongPiece(size_t len
);
38 virtual void read(Reader
&reader
);
39 virtual std::string
toString();
40 virtual std::string
toPlainText();
43 class ShortPiece
: public TextPiece
{
47 ShortPiece(size_t len
);
49 virtual void read(Reader
&reader
);
50 virtual std::string
toString();
51 virtual std::string
toPlainText();
54 class ViewPiece
: public TextPiece
{
57 ViewPiece(Store
*view
);
58 virtual void read(Reader
&reader
);
59 virtual std::string
toString();
60 virtual std::string
toPlainText();
63 class StdTextModel
: public TextModel
{
65 static const std::string TYPENAME
;
66 static const TypeProxy
<StdTextModel
> PROXY
;
67 std::vector
<TextPiece
*> d_pieces
;
70 StdTextModel(INTEGER id
);
71 static const std::string
&getType();
72 static const std::string
*getSuper();
73 virtual const std::string
&getTypeName() const;
74 virtual void internalize(Reader
&reader
);
76 virtual std::string
toString();
77 virtual std::string
toPlainText();
82 #endif // _TEXTMODEL_H_