Skip to content

Commit 5ba0ba9

Browse files
authored
Fix testSave_symmetry__mmtf for msgpack-cpp=4.1.2 (#262)
Floats may be stored as integers in msgpack, and msgpack-cpp does that proactively since version 4.1.2. That broke the `unitCell` angle round trip in `testSave_symmetry__mmtf`. See also: rcsb/mmtf-c#35 msgpack/msgpack-c#1018
1 parent 006645f commit 5ba0ba9

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

contrib/mmtf-c/mmtf_parser.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,10 @@ float MMTF_parser_fetch_float(const msgpack_object* object) {
831831
case /* FLOAT32 */ 0x0a: // msgpack-c >= 2.1
832832
#endif
833833
return (float)object->via.f64;
834+
case MMTF_MSGPACK_TYPE(POSITIVE_INTEGER):
835+
return (float)object->via.u64;
836+
case MMTF_MSGPACK_TYPE(NEGATIVE_INTEGER):
837+
return (float)object->via.i64;
834838
default:
835839
fprintf(stderr, "Error in %s: the entry encoded in the MMTF is not a float.\n", __FUNCTION__);
836840
return NAN;
@@ -884,7 +888,7 @@ void* MMTF_parser_fetch_typed_array(const msgpack_object* object, size_t* length
884888
CODEGEN_MMTF_parser_fetch_array(char, result[i] = iter->via.u64)
885889
CODEGEN_MMTF_parser_fetch_array(int8, result[i] = iter->via.u64)
886890
CODEGEN_MMTF_parser_fetch_array(int32, result[i] = iter->via.u64)
887-
CODEGEN_MMTF_parser_fetch_array(float, result[i] = iter->via.f64)
891+
CODEGEN_MMTF_parser_fetch_array(float, result[i] = MMTF_parser_fetch_float(iter))
888892
CODEGEN_MMTF_parser_fetch_array(string, MMTF_parser_put_string(iter, result + i))
889893

890894
static

0 commit comments

Comments
 (0)