X-Git-Url: https://deadsoftware.ru/gitweb?p=odcread.git;a=blobdiff_plain;f=alien.cc;h=dc4f50920c7d61d30bec5744a7bba9e8ccacd018;hp=d82a33ca1a2f120a008e9561e197ad644018fd8a;hb=41d9c65ec79728a8771cd2288dfc3458569c6801;hpb=32b22b42cd974e98e8a56f5ac39a51c8990ef57c diff --git a/alien.cc b/alien.cc index d82a33c..dc4f509 100644 --- a/alien.cc +++ b/alien.cc @@ -8,10 +8,22 @@ std::string AlienPiece::toString() { return std::string("AlienPiece"); } -AlienPart::AlienPart(Store * const _store): store(_store) {} +void AlienPiece::accept(Visitor &visitor) const { +} + +AlienPart::AlienPart(Store * const store): d_store(store) {} std::string AlienPart::toString() { - return store->toString(); + if (d_store != 0) + return d_store->toString(); + else + return "NULL"; +} + +void AlienPart::accept(Visitor &visitor) const { + if (d_store != 0) { + d_store->accept(visitor); + } } Alien::Alien(INTEGER id, const TypePath &path): Store(id), d_path(path), d_comps() {} @@ -28,4 +40,10 @@ std::string Alien::toString() { return sofar + "}"; } +void Alien::accept(Visitor &visitor) const { + for (int i = 0; i < d_comps.size(); ++i) { + d_comps[i]->accept(visitor); + } +} + }