ConstPerEdgeAttributeHandle
This commit is contained in:
parent
e0ccec2fc8
commit
7f8260b0a4
|
|
@ -1628,6 +1628,15 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class ATTR_TYPE>
|
||||||
|
static
|
||||||
|
bool IsValidHandle( const MeshType & m, const typename MeshType::template ConstPerEdgeAttributeHandle<ATTR_TYPE> & a){
|
||||||
|
if(a._handle == nullptr) return false;
|
||||||
|
for(AttrIterator i = m.edge_attr.begin(); i!=m.edge_attr.end();++i)
|
||||||
|
if ( (*i).n_attr == a.n_attr ) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
template <class ATTR_TYPE>
|
template <class ATTR_TYPE>
|
||||||
static
|
static
|
||||||
typename MeshType::template PerEdgeAttributeHandle<ATTR_TYPE>
|
typename MeshType::template PerEdgeAttributeHandle<ATTR_TYPE>
|
||||||
|
|
@ -1674,6 +1683,12 @@ public:
|
||||||
return AddPerEdgeAttribute<ATTR_TYPE>(m,name);
|
return AddPerEdgeAttribute<ATTR_TYPE>(m,name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class ATTR_TYPE>
|
||||||
|
static
|
||||||
|
typename MeshType::template ConstPerEdgeAttributeHandle<ATTR_TYPE>
|
||||||
|
GetPerEdgeAttribute( const MeshType & m, std::string name = std::string("")){
|
||||||
|
return FindPerEdgeAttribute<ATTR_TYPE>(m,name);
|
||||||
|
}
|
||||||
|
|
||||||
template <class ATTR_TYPE>
|
template <class ATTR_TYPE>
|
||||||
static
|
static
|
||||||
|
|
@ -1700,6 +1715,24 @@ public:
|
||||||
return typename MeshType:: template PerEdgeAttributeHandle<ATTR_TYPE>(nullptr,0);
|
return typename MeshType:: template PerEdgeAttributeHandle<ATTR_TYPE>(nullptr,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class ATTR_TYPE>
|
||||||
|
static
|
||||||
|
typename MeshType::template ConstPerEdgeAttributeHandle<ATTR_TYPE>
|
||||||
|
FindPerEdgeAttribute( const MeshType & m, const std::string & name){
|
||||||
|
if(!name.empty()){
|
||||||
|
PointerToAttribute h1; h1._name = name;
|
||||||
|
typename std::set<PointerToAttribute > ::const_iterator i;
|
||||||
|
|
||||||
|
i =m.edge_attr.find(h1);
|
||||||
|
if(i!=m.edge_attr.end()){
|
||||||
|
if((*i)._sizeof == sizeof(ATTR_TYPE) ){
|
||||||
|
return typename MeshType::template ConstPerEdgeAttributeHandle<ATTR_TYPE>((*i)._handle,(*i).n_attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return typename MeshType:: template ConstPerEdgeAttributeHandle<ATTR_TYPE>(nullptr,0);
|
||||||
|
}
|
||||||
|
|
||||||
template <class ATTR_TYPE>
|
template <class ATTR_TYPE>
|
||||||
static void GetAllPerEdgeAttribute(const MeshType & m, std::vector<std::string> &all){
|
static void GetAllPerEdgeAttribute(const MeshType & m, std::vector<std::string> &all){
|
||||||
all.clear();
|
all.clear();
|
||||||
|
|
@ -1707,7 +1740,7 @@ public:
|
||||||
for(i = m.edge_attr.begin(); i != m.edge_attr.end(); ++i )
|
for(i = m.edge_attr.begin(); i != m.edge_attr.end(); ++i )
|
||||||
if(!(*i)._name.empty())
|
if(!(*i)._name.empty())
|
||||||
{
|
{
|
||||||
typename MeshType:: template PerEdgeAttributeHandle<ATTR_TYPE> hh;
|
typename MeshType:: template ConstPerEdgeAttributeHandle<ATTR_TYPE> hh;
|
||||||
hh = Allocator<MeshType>:: template FindPerEdgeAttribute <ATTR_TYPE>(m,(*i)._name);
|
hh = Allocator<MeshType>:: template FindPerEdgeAttribute <ATTR_TYPE>(m,(*i)._name);
|
||||||
if(IsValidHandle<ATTR_TYPE>(m,hh))
|
if(IsValidHandle<ATTR_TYPE>(m,hh))
|
||||||
all.push_back((*i)._name);
|
all.push_back((*i)._name);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue