nametypebound..corrected bugs, changed a name, regrouped functions.

Change useless NameOf in NamesWithType which returns all the names bound to a given type
This commit is contained in:
ganovelli 2010-03-23 09:47:52 +00:00
parent bda10aba6e
commit fb9d702e08
1 changed files with 21 additions and 18 deletions

View File

@ -1026,6 +1026,7 @@ public:
typedef typename std::map<std::string,NameTypeBound_Base*>::iterator BindersIterator;
typedef typename std::map<std::string,NameTypeBound_Base*>::const_iterator CBindersIterator;
typedef std::pair<std::string,NameTypeBound_Base*> TypeBound;
typedef std::map<std::string,NameTypeBound_Base*> NameTypeScope;
@ -1048,7 +1049,7 @@ public:
std::string _name;
};
bool CheckNameIsBound(NameTypeScope binders,std::string name){ return (binders.find(name)!=binders.end()); }
static bool CheckNameIsBound(const NameTypeScope & binders,std::string name){ return (binders.find(name)!=binders.end()); }
template <class TYPE>
static void AddNameTypeBound(NameTypeScope & binders,std::string name){
@ -1062,45 +1063,47 @@ public:
}
}
static void RemoveTypeBind(NameTypeScope binders,std::string name){
static void RemoveTypeBound( NameTypeScope& binders,std::string name){
BindersIterator bi = binders.find(name);
if(bi!=binders.end()) binders.erase(bi);
if(bi!=binders.end()) {delete(*bi).second; binders.erase(bi);}
}
static void AddPerVertexAttribute(NameTypeScope binders, MeshType & m, std::string name){
/* return the name of all the attributes of a given type */
template <typename TYPE>
static std::vector<std::string> NamesWithType(const NameTypeScope & binders){
std::vector<std::string> res;
CBindersIterator bi;
for(bi = binders.begin(); bi != binders.end(); ++bi)
if (typeid(TYPE).name() == ((*bi).second->TypeID()))
res.push_back( (*bi).second->Name());
return res;
}
static void AddPerVertexAttribute(const NameTypeScope & binders, MeshType & m, std::string name){
BindersIterator bi = binders.find(name);
assert(bi != binders.end() ); // the name MUST have been already bound to a type
(*bi).second->AddPerVertexAttribute(m);
}
static void AddPerEdgeAttribute(NameTypeScope binders, MeshType & m, std::string name){
static void AddPerEdgeAttribute(const NameTypeScope & binders, MeshType & m, std::string name){
BindersIterator bi = binders.find(name);
assert(bi != binders.end() ); // the name MUST have been already bound to a type
(*bi).second->AddPerEdgeAttribute(m);
}
static void AddPerFaceAttribute( NameTypeScope binders,MeshType & m, std::string name){
static void AddPerFaceAttribute(const NameTypeScope & binders,MeshType & m, std::string name){
BindersIterator bi = binders.find(name);
assert(bi != binders.end() ); // the name MUST have been already bound to a type
(*bi).second->AddPerFaceAttribute(m);
}
static void AddPerMeshAttribute( NameTypeScope binders,MeshType & m, std::string name){
BindersIterator bi = binders.find(name);
static void AddPerMeshAttribute( const NameTypeScope & binders,MeshType & m, std::string name){
CBindersIterator bi = binders.find(name);
assert(bi != binders.end() ); // the name MUST have been already bound to a type
(*bi).second->AddPerMeshAttribute(m);
}
/* return the name of a previouly bound type */
template <typename TYPE>
std::string NameOf(NameTypeScope binders){
TYPE t;
BindersIterator bi;
for(bi = binders.begin(); bi != binders.end(); ++bi)
if (typdeid(t).name() == ((*bi).second->TypeID()))
return (*bi).second->Name();
return std::string("");
}
}; // end class