4 #ifndef tools_sg_holder
5 #define tools_sg_holder
26 parent::operator=(a_from);
46 virtual void*
cast(
const std::string& a_class)
const {
51 virtual const std::string&
s_cls()
const {
return s_class();}
67 holder(T* a_obj = 0,
const std::string& a_name =
"",
bool a_own=
true)
107 h_t* _h = (h_t*)a_node.
cast(h_t::s_class());
109 return (_h->class_name.value()==T::s_class()?_h:0);
115 h_t* _h = (h_t*)a_node.
cast(h_t::s_class());
117 return (_h->class_name.value()==T::s_class()?_h:0);
123 h_t* _h = (h_t*)a_node.
cast(h_t::s_class());
125 return (_h->class_name.value()==T::s_class()?_h->object():0);
130 h_t* _h = (h_t*)a_node.
cast(h_t::s_class());
132 return (_h->class_name.value()==T::s_class()?_h->object():0);
139 std::vector<node*>::iterator it;
140 for(it=a_vec.begin();it!=a_vec.end();) {
141 if(h_t* h = cast_holder<T>(*(*it))){
142 it = a_vec.erase(it);
155 std::vector<node*>::iterator it;
156 for(it=a_vec.begin();it!=a_vec.end();) {
157 if(h_t* h = cast_holder<T>(*(*it))){
158 if(h->name()==a_name) {
159 it = a_vec.erase(it);
170 inline T*
find_holder(std::vector<node*>& a_vec,
const std::string& a_name) {
174 std::vector<node*>::iterator it;
175 for(it=a_vec.begin();it!=a_vec.end();++it) {
176 if(h_t* h = cast_holder<T>(*(*it))){
177 if(h->name()==a_name)
return h->
object();
188 std::vector<node*>::iterator it;
189 for(it=a_vec.begin();it!=a_vec.end();++it) {
190 if(h_t* h = cast_holder<T>(*(*it)))
return h->
object();