From e81a771656785ef3ce21dd59c30d6f9bf48c4c16 Mon Sep 17 00:00:00 2001 From: Alexandra Heuschling Date: Thu, 26 Nov 2020 17:50:02 +0100 Subject: [PATCH] update version of OM file --- src/OpenMesh/Core/IO/writer/OMWriter.cc | 47 +++++-------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/src/OpenMesh/Core/IO/writer/OMWriter.cc b/src/OpenMesh/Core/IO/writer/OMWriter.cc index 2095567f..a551276c 100644 --- a/src/OpenMesh/Core/IO/writer/OMWriter.cc +++ b/src/OpenMesh/Core/IO/writer/OMWriter.cc @@ -81,7 +81,7 @@ _OMWriter_& OMWriter() { return __OMWriterInstance; } const OMFormat::uchar _OMWriter_::magic_[3] = "OM"; -const OMFormat::uint8 _OMWriter_::version_ = OMFormat::mk_version(2,1); +const OMFormat::uint8 _OMWriter_::version_ = OMFormat::mk_version(2,2); _OMWriter_:: @@ -621,45 +621,16 @@ size_t _OMWriter_::store_binary_custom_chunk(std::ostream& _os, bytes += store( _os, OMFormat::Chunk::PropertyName(_bp.name()), _swap ); // 3. data type - OMFormat::Chunk::PropertyName type = OMFormat::Chunk::PropertyName("unknown"); - OpenMesh::PropertyT* bp_bool = dynamic_cast*>(&_bp); - OpenMesh::PropertyT* bp_char = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_double = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_float = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_int = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_long = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_short = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_uchar = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_uint = dynamic_cast* >(&_bp); - OpenMesh::PropertyT* bp_ulong = dynamic_cast* >(&_bp); - OpenMesh::PropertyT>* bp_vecdouble = dynamic_cast>* >(&_bp); + if(_OMWriter_::version_ > OMFormat::mk_version(2,1)) + { + OMFormat::Chunk::PropertyName type = OMFormat::Chunk::PropertyName(_bp.get_storage_name()); + bytes += store(_os, type, _swap); + } - //choose one of both tests - if(_bp.internal_type_name() == get_type_name() || bp_bool != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_char != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_double != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_float != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_int != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_long != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_short != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_uchar != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_uint != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name() || bp_ulong != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string()); - else if(_bp.internal_type_name() == get_type_name>() || bp_vecdouble != nullptr) - type = OMFormat::Chunk::PropertyName(OMFormat::get_type_string>()); - - bytes += store(_os, type, _swap); + //DEBUGG + //std::cout << "the property type of prop: " << _bp.name() << " is " << _bp.get_storage_name() << std::endl; + //END // 4. block size bytes += store( _os, _bp.size_of(), OMFormat::Chunk::Integer_32, _swap );