diff --git a/CMakeLists.txt b/CMakeLists.txt index e412c18c54..eb4c7a0073 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ set( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE ) # Define here the needed parameters set (OPENRAVE_VERSION_MAJOR 0) set (OPENRAVE_VERSION_MINOR 168) -set (OPENRAVE_VERSION_PATCH 3) +set (OPENRAVE_VERSION_PATCH 4) set (OPENRAVE_VERSION ${OPENRAVE_VERSION_MAJOR}.${OPENRAVE_VERSION_MINOR}.${OPENRAVE_VERSION_PATCH}) set (OPENRAVE_SOVERSION ${OPENRAVE_VERSION_MAJOR}.${OPENRAVE_VERSION_MINOR}) message(STATUS "Compiling OpenRAVE Version ${OPENRAVE_VERSION}, soversion=${OPENRAVE_SOVERSION}") diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index a81fab278d..c2a1ea7c69 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -3,6 +3,11 @@ ChangeLog ######### +Version 0.168.4 +=============== + +- Add support for serialization and deserialization of std::vector for openravejson. + Version 0.168.3 =============== diff --git a/include/openrave/openravejson.h b/include/openrave/openravejson.h index 637a6b869f..dfe40391c1 100644 --- a/include/openrave/openravejson.h +++ b/include/openrave/openravejson.h @@ -348,6 +348,20 @@ inline void LoadJsonValue(const rapidjson::Value& v, bool& t) { } } +inline void LoadJsonValue(const rapidjson::Value& v, std::vector::reference t) +{ + if (v.IsInt()) + t = v.GetInt(); + else if (v.IsBool()) + t = v.GetBool(); + else if (v.IsString()) { + t = boost::lexical_cast(v.GetString()); + } + else { + throw OPENRAVE_EXCEPTION_FORMAT("Cannot convert JSON type %s to Bool", GetJsonString(v), OpenRAVE::ORE_InvalidArguments); + } +} + template inline void LoadJsonValue(const rapidjson::Value& v, OpenRAVE::RaveVector& t) { if(!v.IsArray() || (v.Size() != 3 && v.Size() != 4)) { @@ -683,6 +697,11 @@ inline void SaveJsonValue(rapidjson::Value& v, bool t, rapidjson::Document::Allo v.SetBool(t); } +inline void SaveJsonValue(rapidjson::Value& v, const std::vector::reference t, rapidjson::Document::AllocatorType& alloc) +{ + v.SetBool(t); +} + inline void SaveJsonValue(rapidjson::Value& v, double t, rapidjson::Document::AllocatorType& alloc) { v.SetDouble(t); }