X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=textmodel.cc;h=cfd7730256ff2d0045cfd1ed63e83e1b497a8575;hb=a3724718862ea28a70f2c6c330cdc729451d6510;hp=56bedbae3aa34a82d08c8249a16796fcb71099b8;hpb=c71568094a35bbda781ac2070e50a59a3b5ac9f7;p=odcread.git diff --git a/textmodel.cc b/textmodel.cc index 56bedba..cfd7730 100644 --- a/textmodel.cc +++ b/textmodel.cc @@ -10,20 +10,12 @@ namespace odc { const std::string TextModel::TYPENAME("TextModels.Model^"); -const TypeProxy TextModel::PROXY; +const TypeProxy TextModel::PROXY; TextModel::TextModel(INTEGER id) : ContainerModel(id) {} -const std::string &TextModel::getType() { - return TYPENAME; -} - -const std::string *TextModel::getSuper() { - return &ContainerModel::getType(); -} - const std::string &TextModel::getTypeName() const { - return getType(); + return TYPENAME; } void TextModel::internalize(Reader &reader) { @@ -33,20 +25,12 @@ void TextModel::internalize(Reader &reader) { } const std::string StdTextModel::TYPENAME("TextModels.StdModel^"); -const TypeProxy StdTextModel::PROXY; +const TypeProxy StdTextModel::PROXY; StdTextModel::StdTextModel(INTEGER id) : TextModel(id), d_pieces() {} -const std::string &StdTextModel::getType() { - return TYPENAME; -} - -const std::string *StdTextModel::getSuper() { - return &TextModel::getType(); -} - const std::string &StdTextModel::getTypeName() const { - return getType(); + return TYPENAME; } /* @@ -167,15 +151,16 @@ void StdTextModel::accept(Visitor &visitor) const { TextPiece::TextPiece(size_t len): d_len(len) {} -LongPiece::LongPiece(size_t len): TextPiece(len) {} +LongPiece::LongPiece(size_t len): TextPiece(len * 2) {} LongPiece::~LongPiece() { delete d_buf; } void LongPiece::read(Reader &reader) { - d_buf = new CHAR[d_len]; - reader.readLChar(d_buf, d_len); + d_buf = new CHAR[d_len / 2 + 1]; + reader.readLChar(d_buf, d_len / 2); + d_buf[d_len / 2] = 0; } std::string LongPiece::toString() const { @@ -197,16 +182,9 @@ ShortPiece::~ShortPiece() { } void ShortPiece::read(Reader &reader) { -// static char piece[] = "pieceA"; d_buf = new SHORTCHAR[d_len + 1]; reader.readSChar(d_buf, d_len); d_buf[d_len] = 0; -// std::cout.write(buf, d_len); -// std::ofstream ofs(piece, std::ios::out); -// ofs.write(buf, d_len); -// ofs.close(); -// ++piece[5]; -// delete buf; } std::string ShortPiece::toString() const { @@ -225,7 +203,11 @@ void ShortPiece::accept(Visitor &visitor) const { visitor.textShortPiece(this); } -ViewPiece::ViewPiece(Store *view): TextPiece(0), d_view(view) {} +ViewPiece::ViewPiece(Store *view): TextPiece(1), d_view(view) {} + +ViewPiece::~ViewPiece() { + delete d_view; +} void ViewPiece::read(Reader &reader) { reader.readByte();