X-Git-Url: https://deadsoftware.ru/gitweb?p=odcread.git;a=blobdiff_plain;f=fold.cc;h=37e0fd667756bff233d05d0a9f911d6257b373b8;hp=ae4d016cfd3d602bfadc9c0318ea212dec6f88c7;hb=d7f2452e20b04d1559b7bdd3aa49b6fbf7d0abaf;hpb=cf035fa1849a5e65c0d636ce2718bc2c85994680 diff --git a/fold.cc b/fold.cc index ae4d016..37e0fd6 100644 --- a/fold.cc +++ b/fold.cc @@ -51,7 +51,8 @@ void Fold::internalize(Reader &reader) { // rd.ReadXInt(xint);fold.leftSide := xint = 0; reader.readSInt(); // rd.ReadXInt(xint); fold.collapsed := xint = 0; - reader.readSInt(); + SHORTINT c = reader.readSInt(); + d_collapsed = (c == 0); // rd.ReadXString(fold.label); d_label = new SHORTCHAR[32]; reader.readSString(d_label); // the label @@ -70,11 +71,13 @@ std::string Fold::toString() { return std::string("Fold(left) \"") + std::string(d_label) + std::string("\" { ") + d_hidden->toString() + std::string(" }"); } -std::string Fold::toPlainText() { - if (d_hidden == 0) { - return std::string(); +void Fold::accept(Visitor &visitor) const { + if (d_hidden == 0) { // right part + visitor.foldRight(); + } else { // left part + visitor.foldLeft(d_collapsed); + d_hidden->accept(visitor); } - return std::string(d_label) + std::string("\n") + d_hidden->toPlainText(); } } // namespace odc