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:
Alexandra Heuschling
2021-01-05 17:53:44 +01:00
parent 1bb7e232f7
commit d2d38ce22c
2 changed files with 84 additions and 111 deletions

View File

@@ -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);