adapte property creator, so that it uses string_for_value_type (void) for
type string recognition Signed-off-by: Alexandra Heuschling <aheuschling@cox.informatik.rwth-aachen.de>
This commit is contained in:
@@ -41,6 +41,11 @@
|
||||
|
||||
#include "PropertyCreator.hh"
|
||||
|
||||
#include <OpenMesh/Core/IO/importer/BaseImporter.hh>
|
||||
#include <OpenMesh/Core/Mesh/Handles.hh>
|
||||
#include <OpenMesh/Core/Geometry/VectorT.hh>
|
||||
//#include <OpenMesh/Core/Utils/typename.hh>
|
||||
|
||||
namespace OpenMesh {
|
||||
|
||||
PropertyCreationManager& PropertyCreationManager::instance()
|
||||
@@ -56,3 +61,76 @@ bool PropertyCreator::can_you_create(const std::string& _type_name)
|
||||
|
||||
|
||||
} /* namespace OpenMesh */
|
||||
|
||||
//OM_REGISTER_PROPERTY_TYPE(OpenMesh::FaceHandle)
|
||||
//OM_REGISTER_PROPERTY_TYPE(OpenMesh::EdgeHandle)
|
||||
//OM_REGISTER_PROPERTY_TYPE(OpenMesh::HalfedgeHandle)
|
||||
//OM_REGISTER_PROPERTY_TYPE(OpenMesh::VertexHandle)
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(bool)
|
||||
OM_REGISTER_PROPERTY_TYPE(char)
|
||||
OM_REGISTER_PROPERTY_TYPE(signed char)
|
||||
OM_REGISTER_PROPERTY_TYPE(double)
|
||||
OM_REGISTER_PROPERTY_TYPE(float)
|
||||
OM_REGISTER_PROPERTY_TYPE(int)
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(short)
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(unsigned char);
|
||||
OM_REGISTER_PROPERTY_TYPE(unsigned int);
|
||||
OM_REGISTER_PROPERTY_TYPE(unsigned short);
|
||||
OM_REGISTER_PROPERTY_TYPE(unsigned long);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec1d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec2d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec3d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec4d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec5d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6c);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6uc);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6s);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6us);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6i);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6ui);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6f);
|
||||
OM_REGISTER_PROPERTY_TYPE(Vec6d);
|
||||
|
||||
@@ -50,11 +50,7 @@
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
#include <OpenMesh/Core/IO/importer/BaseImporter.hh>
|
||||
#include <OpenMesh/Core/Mesh/Handles.hh>
|
||||
#include <OpenMesh/Core/Geometry/VectorT.hh>
|
||||
#include <OpenMesh/Core/Utils/typename.hh>
|
||||
#include <vector>
|
||||
#include <OpenMesh/Core/IO/SR_store.hh>
|
||||
|
||||
|
||||
namespace OpenMesh {
|
||||
@@ -144,36 +140,9 @@ class PropertyCreatorT : public PropertyCreatorImpl<PropertyCreatorT<T>>
|
||||
};
|
||||
}
|
||||
|
||||
///used to register custom type, where typename.hh does NOT provide a string for type recognition
|
||||
|
||||
#define OM_REGISTER_PROPERTY_TYPE(ClassName, TypeString) \
|
||||
namespace OpenMesh { \
|
||||
inline std::string get_string_for_type(ClassName){ return TypeString;} \
|
||||
\
|
||||
namespace { /* ensure internal linkage of class */ \
|
||||
template <> \
|
||||
class PropertyCreatorT<ClassName> : public PropertyCreatorImpl<PropertyCreatorT<ClassName>> \
|
||||
{ \
|
||||
public: \
|
||||
using type = ClassName; \
|
||||
std::string type_string() override { return TypeString; } \
|
||||
\
|
||||
PropertyCreatorT() \
|
||||
{ \
|
||||
PropertyCreationManager::instance().register_property_creator(this); \
|
||||
} \
|
||||
~PropertyCreatorT() override {} \
|
||||
}; \
|
||||
} \
|
||||
/* static to ensure internal linkage of object */ \
|
||||
static PropertyCreatorT<ClassName> OM_CONCAT(property_creator_registration_object_, __LINE__); \
|
||||
} \
|
||||
|
||||
|
||||
|
||||
///used to register custom type, where typename.hh does provide a string for type recognition
|
||||
///
|
||||
#define OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(ClassName) \
|
||||
|
||||
#define OM_REGISTER_PROPERTY_TYPE(ClassName) \
|
||||
namespace OpenMesh { \
|
||||
namespace { /* ensure internal linkage of class */ \
|
||||
template <> \
|
||||
@@ -181,7 +150,7 @@ class PropertyCreatorT<ClassName> : public PropertyCreatorImpl<PropertyCreatorT<
|
||||
{ \
|
||||
public: \
|
||||
using type = ClassName; \
|
||||
std::string type_string() override { return OpenMesh::get_string_for_type(type()); } \
|
||||
std::string type_string() override { return OpenMesh::IO::binary<type>::string_for_value_type(); } \
|
||||
\
|
||||
PropertyCreatorT() \
|
||||
{ \
|
||||
@@ -219,7 +188,8 @@ public:
|
||||
return;
|
||||
}
|
||||
omerr() << "No property creator registered that can create a property of type " << _type_name << std::endl;
|
||||
omerr() << "You need to register your custom type using OM_REGISTER_PROPERTY_TYPE(ClassName, TypeString)." << std::endl;
|
||||
omerr() << "You need to register your custom type using OM_REGISTER_PROPERTY_TYPE(ClassName) and declare the struct binary<ClassName>.\
|
||||
See documentation for more details." << std::endl;
|
||||
omerr() << "Adding property failed." << std::endl;
|
||||
}
|
||||
|
||||
@@ -260,78 +230,3 @@ void create_property_from_string(BaseKernel& _mesh, const std::string& _type_nam
|
||||
}
|
||||
|
||||
} /* namespace OpenMesh */
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(OpenMesh::FaceHandle)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(OpenMesh::EdgeHandle)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(OpenMesh::HalfedgeHandle)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(OpenMesh::VertexHandle)
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(bool)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(char)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(signed char)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(double)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(float)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(int)
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(short)
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(unsigned char);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(unsigned int);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(unsigned short);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(unsigned long);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec1d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec2d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec3d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec4d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec5d);
|
||||
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6c);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6uc);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6s);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6us);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6i);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6ui);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6f);
|
||||
OM_REGISTER_PROPERTY_TYPE_USING_DEFAULT_STRING(Vec6d);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user