00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef incC_BASE
00019 #define incC_BASE
00020
00021
00022 #include "../../common/object.hpp"
00023 #include "../../common/visitable_object.hpp"
00024 #include "../../common/deletable_object.hpp"
00025 #include "../../common/outerable_object.hpp"
00026 #include "../../common/composition_object.hpp"
00027 #include "../../common/composite_object.hpp"
00028
00029 namespace reflect_test {
00030
00031 class c_base :
00032 public ph::common::object_base,
00033 public ph::common::visitable_object_base,
00034 public ph::common::deletable_object_base,
00035 public ph::common::outerable_object_base,
00036 ph::common::outerable_helper,
00037 public ph::common::comparable_object_base,
00038 public ph::common::composite_object_base,
00039 public ph::common::composite_object_helper
00040 {
00041 public:
00042 c_base(ph::common::object_base *outer, const std::string &name) :
00043 ph::common::outerable_helper(outer), _name(name)
00044 {};
00045
00046
00047 virtual ph::common::deletable_object_base *deletable()
00048 { return this; }
00049 virtual ph::common::outerable_object_base *outerable()
00050 { return this; }
00051 virtual const ph::common::outerable_object_base *outerable() const
00052 { return this; }
00053 virtual const ph::common::comparable_object_base *comparable() const
00054 { return this; }
00055 virtual const ph::common::composition_object_base *composition() const
00056 { return this; }
00057 virtual ph::common::composition_object_base *composition()
00058 { return this; }
00059 virtual const visitable_object_base *visitable() const
00060 { return this; }
00061 virtual visitable_object_base *visitable()
00062 { return this; }
00063
00064
00065 virtual ph::common::object_base *outer() const { return outer_helper(); }
00066 virtual void outer(ph::common::object_base *outer) { outer_helper(outer); }
00067
00068
00069 virtual bool equal(const ph::common::object_base *obj) const
00070 { return helper_equal(obj, outer(), _name); }
00071
00072
00073 virtual bool accept(ph::common::member_visitor *v);
00074 virtual bool accept(ph::common::const_member_visitor *v) const;
00075 virtual bool accept(ph::common::object_visitor *v)
00076 { return true; }
00077 virtual bool accept(ph::common::const_object_visitor *v) const
00078 { return true; }
00079
00080 private:
00081 std::string _name;
00082 };
00083
00084 };
00085
00086 #endif // incC_BASE