DEADSOFTWARE

Reduce boilerplate for BlackBox Types and add some javadoc.
[odcread.git] / store.cc
index 4bbabf83591858e3106d1a1fd5cd4767240d3362..6f44e8525457c8135b7eafc9c773753fc93a545f 100644 (file)
--- a/store.cc
+++ b/store.cc
@@ -26,7 +26,7 @@ std::string TypePath::toString() const {
 }
 
 const std::string Store::TYPENAME("Stores.Store^");
-const TypeProxy<Store> Store::PROXY;
+const TopTypeProxy<Store> Store::PROXY;
 
 Store::Store(INTEGER id): d_id(id) {}
 
@@ -34,20 +34,14 @@ INTEGER Store::getId() {
        return d_id;
 }
 
-const std::string &Store::getType() {
-       return Store::TYPENAME;
-}
-
-const std::string *Store::getSuper() {
-       return 0;
-}
-
 const std::string &Store::getTypeName() const {
-       return Store::getType();
+       return Store::TYPENAME;
 }
 
-void Store::getTypePath(TypePath *out) const {
-       return calcTypePath(out, getTypeName());
+TypePath Store::getTypePath() const {
+       TypePath out;
+       calcTypePath(&out, getTypeName());
+       return out;
 }
 
 void Store::calcTypePath(TypePath *path, const std::string &name) const {
@@ -69,20 +63,12 @@ std::string Store::toString() {
 void Store::accept(Visitor &visitor) const {}
 
 const std::string Elem::TYPENAME("Stores.Elem^");
-const TypeProxy<Elem> Elem::PROXY;
+const TypeProxy<Elem, Store> Elem::PROXY;
 
 Elem::Elem(INTEGER id) : Store(id) {}
 
-const std::string &Elem::getType() {
-       return TYPENAME;
-}
-
-const std::string *Elem::getSuper() {
-       return &Store::getType();
-}
-
 const std::string &Elem::getTypeName() const {
-       return getType();
+       return TYPENAME;
 }
 
 void Elem::internalize(Reader &reader) {
@@ -92,20 +78,12 @@ void Elem::internalize(Reader &reader) {
 }
 
 const std::string Model::TYPENAME("Models.Model^");
-const TypeProxy<Model> Model::PROXY;
+const TypeProxy<Model, Elem> Model::PROXY;
 
 Model::Model(INTEGER id) : Elem(id) {}
 
-const std::string &Model::getType() {
-       return TYPENAME;
-}
-
-const std::string *Model::getSuper() {
-       return &Elem::getType();
-}
-
 const std::string &Model::getTypeName() const {
-       return getType();
+       return TYPENAME;
 }
 
 void Model::internalize(Reader &reader) {
@@ -115,20 +93,12 @@ void Model::internalize(Reader &reader) {
 }
 
 const std::string ContainerModel::TYPENAME("Containers.Model^");
-const TypeProxy<ContainerModel> ContainerModel::PROXY;
+const TypeProxy<ContainerModel, Model> ContainerModel::PROXY;
 
 ContainerModel::ContainerModel(INTEGER id) : Model(id) {}
 
-const std::string &ContainerModel::getType() {
-       return TYPENAME;
-}
-
-const std::string *ContainerModel::getSuper() {
-       return &Model::getType();
-}
-
 const std::string &ContainerModel::getTypeName() const {
-       return getType();
+       return TYPENAME;
 }
 
 void ContainerModel::internalize(Reader &reader) {