5 #ifndef CNOID_UTIL_POLYMORPHIC_REFERENCED_ARRAY_H 6 #define CNOID_UTIL_POLYMORPHIC_REFERENCED_ARRAY_H 13 template <
class BaseReferencedType = Referenced>
19 virtual BaseReferencedType*
get_element(
size_t i) = 0;
20 virtual const BaseReferencedType*
get_element(
size_t i)
const = 0;
26 template <
class ReferencedType,
class BaseReferencedType = Referenced,
class Po
interType = ReferencedType*>
29 typedef std::vector<PointerType> Container;
42 template <
class RhsReferencedType,
class RhsPo
interType>
51 if(ReferencedType* p = dynamic_cast<ReferencedType*>(obj)){
59 if(size() == rhs.
size()){
60 return std::equal(begin(), end(), rhs.
begin());
69 template <
class RetReferencedType,
class RetPo
interType>
71 for(std::size_t i=0; i < rhs.size(); ++i){
77 template <
class RetReferencedType,
class RetPo
interType>
79 size_t orgSize = size();
81 typename ArgType::iterator p = another.
begin();
82 while(p != another.
end()){
83 if(ReferencedType* element = dynamic_cast<ReferencedType*>(p->get())){
90 return (size() > orgSize);
97 if(RetReferencedType* element = dynamic_cast<RetReferencedType*>(p->get())){
108 return elements.empty();
112 elements.reserve(size);
116 elements.resize(size);
120 return elements.size();
128 return elements.begin();
132 return elements.begin();
136 return elements.end();
139 const_iterator
end()
const {
140 return elements.end();
144 return elements.back();
147 const PointerType&
back()
const {
148 return elements.back();
152 return elements.front();
156 return elements.front();
184 elements.push_back(obj);
192 return elements.erase(pos);
const PointerType & front() const
Definition: PolymorphicReferencedArray.h:155
const PointerType & operator[](std::size_t i) const
Definition: PolymorphicReferencedArray.h:163
Container::iterator iterator
Definition: PolymorphicReferencedArray.h:35
void push_back(const PointerType &obj)
Definition: PolymorphicReferencedArray.h:183
virtual ~PolymorphicReferencedArrayBase()
Definition: PolymorphicReferencedArray.h:17
void pop_back()
Definition: PolymorphicReferencedArray.h:187
const PointerType & back() const
Definition: PolymorphicReferencedArray.h:147
void clear()
Definition: PolymorphicReferencedArray.h:175
PolymorphicReferencedArray()
Definition: PolymorphicReferencedArray.h:40
Container::value_type value_type
Definition: PolymorphicReferencedArray.h:34
virtual size_t get_size() const =0
PolymorphicReferencedArrayBase< BaseReferencedType > ArrayBase
Definition: PolymorphicReferencedArray.h:33
virtual bool try_push_back(BaseReferencedType *obj)=0
iterator end()
Definition: PolymorphicReferencedArray.h:135
PointerType & operator[](std::size_t i)
Definition: PolymorphicReferencedArray.h:159
virtual void clear_elements()
Definition: PolymorphicReferencedArray.h:179
virtual BaseReferencedType * get_element(size_t i)=0
std::size_t size() const
Definition: PolymorphicReferencedArray.h:119
Container::const_reference const_reference
Definition: PolymorphicReferencedArray.h:38
iterator erase(iterator pos)
Definition: PolymorphicReferencedArray.h:191
virtual BaseReferencedType * get_element(size_t i)
Definition: PolymorphicReferencedArray.h:167
bool extractFrom(PolymorphicReferencedArray< RetReferencedType, BaseReferencedType, RetPointerType > &another)
Definition: PolymorphicReferencedArray.h:78
bool empty() const
Definition: PolymorphicReferencedArray.h:107
bool operator==(const PolymorphicReferencedArray &rhs) const
Definition: PolymorphicReferencedArray.h:58
Container::const_iterator const_iterator
Definition: PolymorphicReferencedArray.h:36
virtual ~PolymorphicReferencedArray()
Definition: PolymorphicReferencedArray.h:48
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
virtual const BaseReferencedType * get_element(size_t i) const
Definition: PolymorphicReferencedArray.h:171
const_iterator begin() const
Definition: PolymorphicReferencedArray.h:131
Definition: PolymorphicReferencedArray.h:14
virtual void clear_elements()=0
bool operator==(ref_ptr< T > const &a, ref_ptr< U > const &b)
Definition: Referenced.h:230
iterator begin()
Definition: PolymorphicReferencedArray.h:127
void resize(size_t size)
Definition: PolymorphicReferencedArray.h:115
bool operator!=(const PolymorphicReferencedArray &rhs) const
Definition: PolymorphicReferencedArray.h:65
Definition: PolymorphicReferencedArray.h:27
virtual bool try_push_back(BaseReferencedType *obj)
Definition: PolymorphicReferencedArray.h:50
virtual size_t get_size() const
Definition: PolymorphicReferencedArray.h:123
PointerType & back()
Definition: PolymorphicReferencedArray.h:143
PointerType & front()
Definition: PolymorphicReferencedArray.h:151
const_iterator end() const
Definition: PolymorphicReferencedArray.h:139
PolymorphicReferencedArray extract()
Definition: PolymorphicReferencedArray.h:93
void reserve(size_t size)
Definition: PolymorphicReferencedArray.h:111
PolymorphicReferencedArray(const PolymorphicReferencedArray< RhsReferencedType, BaseReferencedType, RhsPointerType > &rhs)
Definition: PolymorphicReferencedArray.h:43
Container::reference reference
Definition: PolymorphicReferencedArray.h:37