index 7447f953cc9ec3e4ee9b987853cb4b94f1629d9f..77db1febc2239e3d12886ff7ee8e44e2a8edc90f 100644 (file)
--- a/alien.h
+++ b/alien.h
#include <oberon.h>
#include <store.h>
+#include <visitor.h>
#include <iostream>
#include <vector>
#include <string>
*/
struct AlienComponent {
virtual std::string toString() = 0;
- virtual std::string toPlainText() = 0;
+ virtual void accept(Visitor &visitor) const = 0;
};
/**
AlienPiece(const char * const data, const size_t len);
virtual std::string toString();
- virtual std::string toPlainText();
+ virtual void accept(Visitor &visitor) const;
};
/**
AlienPart(Store * const store);
virtual std::string toString();
- virtual std::string toPlainText();
+ virtual void accept(Visitor &visitor) const;
};
+/**
+ * Any type that's not registered is treated as an "Alien".
+ * This allows us to read files even if they contain things we're not aware of.
+ * The alien will consist of AlienComponents, some of which we may be able to read.
+ */
class Alien : public Store {
const TypePath d_path;
std::vector<AlienComponent*> d_comps;
// comps-: AlienComp (** the constituent components of this alien store **)
virtual std::string toString();
- virtual std::string toPlainText();
+ virtual void accept(Visitor &visitor) const;
};
}