X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=textmodel.h;h=9cab44db5d1c115f280980522af8ede7b98394f2;hb=bfa2551119497089b987c2bce3e2f512f9e2130f;hp=13a3d56df9803caf546a0907117f9d21e79e84f5;hpb=9b0fce2b8ea23e4eb23485421e1d80a774c912b3;p=odcread.git diff --git a/textmodel.h b/textmodel.h index 13a3d56..9cab44d 100644 --- a/textmodel.h +++ b/textmodel.h @@ -20,10 +20,47 @@ namespace odc { virtual void internalize(Reader &reader); }; + class TextPiece { + public: + const size_t d_len; + TextPiece(size_t len); + virtual void read(Reader &reader) = 0; + virtual std::string toString() = 0; + }; + + class LongPiece : public TextPiece { + private: + CHAR *d_buf; + public: + LongPiece(size_t len); + ~LongPiece(); + virtual void read(Reader &reader); + virtual std::string toString(); + }; + + class ShortPiece : public TextPiece { + private: + SHORTCHAR *d_buf; + public: + ShortPiece(size_t len); + ~ShortPiece(); + virtual void read(Reader &reader); + virtual std::string toString(); + }; + + class ViewPiece : public TextPiece { + Store *d_view; + public: + ViewPiece(Store *view); + virtual void read(Reader &reader); + virtual std::string toString(); + }; + class StdTextModel : public TextModel { private: static const std::string TYPENAME; static const TypeProxy PROXY; + std::vector d_pieces; public: StdTextModel(INTEGER id); @@ -31,6 +68,8 @@ namespace odc { static const std::string *getSuper(); virtual const std::string &getTypeName() const; virtual void internalize(Reader &reader); + + virtual std::string toString(); }; } // namespace odc