00001 // 00002 // Copyright (c) 2003 00003 // Paul Hamilton; pHamtec P/L 00004 // 00005 // Permission to use, copy, modify, distribute and sell this software 00006 // and its documentation for any purpose is hereby granted without fee, 00007 // provided that the above copyright notice appears in all copies and 00008 // that both the copyright notice and this permission notice appear in 00009 // supporting documentation. No representations are made about the 00010 // suitability of this software for any purpose. It is provided "as is" 00011 // without express or implied warranty. 00012 // 00013 // root.hpp 00014 // 00015 // 4-Jul-2003 phamilton Created 00016 // 00017 00018 #ifndef incROOT 00019 #define incROOT 00020 00021 // forwards 00022 #include "base.hpp" 00023 #include "c_vector.hpp" 00024 #include "c_ref.hpp" 00025 00026 namespace reflect_test { 00027 00028 class root : public base 00029 { 00030 private: 00031 int x; 00032 c_vector foos; 00033 c_vector bars; 00034 c_ref a_foo; 00035 00036 public: 00037 root(const std::string &type, const std::string &name) : 00038 base(type, name), 00039 x(1), 00040 foos(this, "foos"), 00041 bars(this, "bars"), 00042 a_foo(this, "a_foo") 00043 {}; 00044 00045 void addfoosandbars(); 00046 00047 // object_base overrides 00048 virtual bool accept(ph::common::member_visitor *v); 00049 virtual bool accept(ph::common::const_member_visitor *v) const; 00050 virtual bool accept(ph::common::object_visitor *v); 00051 virtual bool accept(ph::common::const_object_visitor *v) const; 00052 }; 00053 00054 }; 00055 00056 #endif // incROOT