DEADSOFTWARE

Document fold.h and textmodel.h, and add a destructor
[odcread.git] / textmodel.cc
index f9dbae242b007f39c8438e7dfae1708cae626a8c..cfd7730256ff2d0045cfd1ed63e83e1b497a8575 100644 (file)
 namespace odc {
 
 const std::string TextModel::TYPENAME("TextModels.Model^");
-const TypeProxy<TextModel> TextModel::PROXY;
+const TypeProxy<TextModel, ContainerModel> 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> StdTextModel::PROXY;
+const TypeProxy<StdTextModel, TextModel> 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,23 +151,24 @@ 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 {
        return std::string("LongPiece(FIXME)");// + std::wstring((wchar_t*)d_buf) + std::string(")");
 }
 
-std::string LongPiece::getText() const {
-       return std::string("FIXME");// + std::wstring((wchar_t*)d_buf) + std::string(")");
+std::wstring LongPiece::getText() const {
+       return std::wstring((wchar_t*)d_buf);
 }
 
 void LongPiece::accept(Visitor &visitor) 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();