diff --git a/fold/fold.cc b/fold/fold.cc
index 7fdf01b6d66d0bfe53a833325576abd0aada23d2..62421f322bc5054f9094630d794ac00990e4b9cf 100644 (file)
--- a/fold/fold.cc
+++ b/fold/fold.cc
-#include "fold/fold.h"
-#include "reader/reader.h"
+#include "fold/module.ih"
namespace odc {
-const std::string View::TYPENAME("Views.View^");
-const TypeProxy<View, Store> View::PROXY;
-
-View::View(INTEGER id) : Store(id) {}
-
-const std::string &View::getTypeName() const {
- return TYPENAME;
-}
-
-void View::internalize(Reader &reader) {
- Store::internalize(reader);
- if (reader.isCancelled()) return;
- reader.readVersion(0, 0);
-}
-
const std::string Fold::TYPENAME("StdFolds.Fold^");
const TypeProxy<Fold, View> Fold::PROXY;
Fold::Fold(INTEGER id) : View(id) {}
-const std::string &Fold::getTypeName() const {
- return TYPENAME;
-}
-
-void Fold::internalize(Reader &reader) {
- View::internalize(reader);
- if (reader.isCancelled()) return;
- reader.readVersion(0, 0);
- if (reader.isCancelled()) return;
-// rd.ReadXInt(xint);fold.leftSide := xint = 0;
- reader.readSInt();
-// rd.ReadXInt(xint); fold.collapsed := xint = 0;
- SHORTINT c = reader.readSInt();
- d_collapsed = (c == 0);
-// rd.ReadXString(fold.label);
- d_label = new SHORTCHAR[32];
- reader.readSString(d_label); // the label
-// rd.ReadStore(store);
- d_hidden = reader.readStore(); // the hidden part
-// IF store # NIL THEN fold.hidden := store(TextModels.Model); Stores.Join(fold.hidden, fold)
-// ELSE fold.hidden := NIL
-// END;
-// fold.leftSide := store # NIL
-}
-
-std::string Fold::toString() {
- if (d_hidden == 0) {
- return std::string("Fold(right)");
+Fold::~Fold() {
+ if (d_hidden != 0) {
+ delete d_hidden;
}
- return std::string("Fold(left) \"") + std::string(d_label) + std::string("\" { ") + d_hidden->toString() + std::string(" }");
+ delete d_label;
}
-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);
- }
+const std::string &Fold::getTypeName() const {
+ return TYPENAME;
}
} // namespace odc