00001
00002
00003
00004
00005
00006
00007
00008 #define REFLECT_IN_LIBRARY_SOURCE
00009
00010 #include "vector_object.hpp"
00011
00012 using namespace ph::reflect;
00013
00014 bool vector_object_helper::helper_accept(const ph::common::object_base *obj,
00015 const std::vector<ph::common::object_base *> *vector,
00016 ph::common::object_name_visitor *visitor) const
00017 {
00018 if (!obj->nameable())
00019 return false;
00020 if (!visitor->visit_composite(obj, obj->nameable()))
00021 return false;
00022
00023
00024 for (std::vector<ph::common::object_base *>::const_iterator i=vector->begin();
00025 i != vector->end(); i++)
00026 {
00027
00028 if (!(*i)->visitable())
00029 return false;
00030 if (visitor->recurse())
00031 {
00032 if (!(*i)->visitable()->accept(visitor))
00033 return false;
00034 }
00035 else
00036 {
00037 if (!(*i)->nameable())
00038 return false;
00039 if (!visitor->visit(*i, (*i)->nameable()))
00040 return false;
00041 }
00042 }
00043 return true;
00044 }
00045
00046 bool vector_object_helper::helper_accept(ph::common::object_base *obj,
00047 std::vector<ph::common::object_base *> *vector,
00048 ph::common::object_visitor *visitor)
00049 {
00050 if (!visitor->visit_composite(obj))
00051 return false;
00052
00053
00054 for (std::vector<ph::common::object_base *>::iterator i=vector->begin();
00055 i != vector->end(); i++)
00056 {
00057
00058 if (!(*i)->visitable())
00059 return false;
00060 if (visitor->recurse())
00061 {
00062 if (!(*i)->visitable()->accept(visitor))
00063 return false;
00064 }
00065 else
00066 {
00067 if (!visitor->visit(*i))
00068 return false;
00069 }
00070 }
00071 return true;
00072 }
00073
00074 bool vector_object_helper::helper_accept(const ph::common::object_base *obj,
00075 const std::vector<ph::common::object_base *> *vector,
00076 ph::common::const_object_visitor *visitor) const
00077 {
00078 if (!visitor->visit_composite(obj))
00079 return false;
00080
00081
00082 for (std::vector<ph::common::object_base *>::const_iterator i=vector->begin();
00083 i != vector->end(); i++)
00084 {
00085
00086 if (!(*i)->visitable())
00087 return false;
00088 if (visitor->recurse())
00089 {
00090 if (!(*i)->visitable()->accept(visitor))
00091 return false;
00092 }
00093 else
00094 {
00095 if (!visitor->visit(*i))
00096 return false;
00097 }
00098 }
00099 return true;
00100 }