Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Namespace Members | Data Fields | Globals
reflect

vector_object.cpp

Go to the documentation of this file.
00001 // See ../../license.txt for license information.
00002 //
00003 // vector_object.cpp
00004 //
00005 // 4-Jul-2003 phamilton Created
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 // explicit loops are simpler than using for_each.
00024 for (std::vector<ph::common::object_base *>::const_iterator i=vector->begin(); 
00025 i != vector->end(); i++)
00026 {
00027 // only visit the sub-object if it handles visitable.
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 // explicit loops are simpler than using for_each.
00054 for (std::vector<ph::common::object_base *>::iterator i=vector->begin(); 
00055 i != vector->end(); i++)
00056 {
00057 // only visit the sub-object if it handles visitable.
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 // explicit loops are simpler than using for_each.
00082 for (std::vector<ph::common::object_base *>::const_iterator i=vector->begin(); 
00083 i != vector->end(); i++)
00084 {
00085 // only visit the sub-objec if it handles visitable.
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 }

Generated on Wed Apr 5 22:03:27 2006 for cppxmlobj by doxygen 1.4.3

AltStyle によって変換されたページ (->オリジナル) /