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() const = 0;
29 virtual void accept(Visitor
&visitor
) const = 0;
32 class LongPiece
: public TextPiece
{
36 LongPiece(size_t len
);
38 virtual void read(Reader
&reader
);
39 virtual std::string
toString() const;
40 virtual std::wstring
getText() const;
41 virtual void accept(Visitor
&visitor
) const;
44 class ShortPiece
: public TextPiece
{
48 ShortPiece(size_t len
);
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;
56 class ViewPiece
: public TextPiece
{
59 ViewPiece(Store
*view
);
60 virtual void read(Reader
&reader
);
61 virtual std::string
toString() const;
62 virtual void accept(Visitor
&visitor
) const;
65 class StdTextModel
: public TextModel
{
67 static const std::string TYPENAME
;
68 static const TypeProxy
<StdTextModel
> PROXY
;
69 std::vector
<TextPiece
*> d_pieces
;
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;
84 #endif // _TEXTMODEL_H_