-SRCS += fold/fold.cc
+SRCS += $(wildcard fold/*.cc)
--- /dev/null
+#include "fold/module.ih"
+
+namespace odc {
+
+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);
+ }
+}
+
+} // namespace odc
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
virtual const std::string &getTypeName() const;
Fold(INTEGER id);
+ ~Fold();
/**
* Calls super and reads the version and checks that its in the allowed range.
* Then reads the state of the Fold, including the hidden part.
--- /dev/null
+#include "fold/module.ih"
+
+namespace odc {
+
+void Fold::internalize(Reader &reader) {
+ View::internalize(reader);
+ if (reader.isCancelled()) return;
+ reader.readVersion(0, 0);
+ if (reader.isCancelled()) return;
+
+ // indicates left/right side, but this is also determined by the presense
+ // of a hidden part (so this field unused by BlackBox)
+ reader.readSInt();
+
+ // whether the view is collapsed
+ SHORTINT c = reader.readSInt();
+ d_collapsed = (c == 0);
+
+ // label of the fold (not sure of its use)
+ d_label = new SHORTCHAR[32];
+ reader.readSString(d_label);
+
+ // the hidden part (NULL indicates this is a right side)
+ d_hidden = reader.readStore();
+}
+
+} // namespace odc
--- /dev/null
+#include "fold/module.ih"
+
+namespace odc {
+
+std::string Fold::toString() {
+ if (d_hidden == 0) {
+ return std::string("Fold(right)");
+ }
+ return std::string("Fold(left) \"") + std::string(d_label) + std::string("\" { ") + d_hidden->toString() + std::string(" }");
+}
+
+} // namespace odc
--- /dev/null
+#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);
+}
+
+} // namespace odc