# HG changeset patch # User Alain Mazy # Date 1693492493 -7200 # Node ID 97004471a5c5d0e68dca36bacb245a7eaf2f7c0f # Parent b31c73bc7cb6326f1729144043a9ca849f7fc6b7 Toolbox : more set functions (cont) diff -r b31c73bc7cb6 -r 97004471a5c5 OrthancFramework/Sources/SerializationToolbox.cpp --- a/OrthancFramework/Sources/SerializationToolbox.cpp Thu Aug 31 15:20:41 2023 +0200 +++ b/OrthancFramework/Sources/SerializationToolbox.cpp Thu Aug 31 16:34:53 2023 +0200 @@ -170,18 +170,18 @@ void SerializationToolbox::ReadArrayOfStrings(std::vector& target, - const Json::Value& value, + const Json::Value& valueObject, const std::string& field) { - if (value.type() != Json::objectValue || - !value.isMember(field.c_str()) || - value[field.c_str()].type() != Json::arrayValue) + if (valueObject.type() != Json::objectValue || + !valueObject.isMember(field.c_str()) || + valueObject[field.c_str()].type() != Json::arrayValue) { throw OrthancException(ErrorCode_BadFileFormat, "List of strings expected in field: " + field); } - const Json::Value& arr = value[field.c_str()]; + const Json::Value& arr = valueObject[field.c_str()]; try { @@ -196,26 +196,26 @@ void SerializationToolbox::ReadArrayOfStrings(std::vector& target, - const Json::Value& array) + const Json::Value& valueArray) { - if (array.type() != Json::arrayValue) + if (valueArray.type() != Json::arrayValue) { throw OrthancException(ErrorCode_BadFileFormat, "List of strings expected"); } - target.resize(array.size()); + target.resize(valueArray.size()); - for (Json::Value::ArrayIndex i = 0; i < array.size(); i++) + for (Json::Value::ArrayIndex i = 0; i < valueArray.size(); i++) { - if (array[i].type() != Json::stringValue) + if (valueArray[i].type() != Json::stringValue) { throw OrthancException(ErrorCode_BadFileFormat, "List of strings expected"); } else { - target[i] = array[i].asString(); + target[i] = valueArray[i].asString(); } } } @@ -237,11 +237,11 @@ void SerializationToolbox::ReadSetOfStrings(std::set& target, - const Json::Value& value, + const Json::Value& valueObject, const std::string& field) { std::vector tmp; - ReadArrayOfStrings(tmp, value, field); + ReadArrayOfStrings(tmp, valueObject, field); target.clear(); for (size_t i = 0; i < tmp.size(); i++) @@ -252,10 +252,10 @@ void SerializationToolbox::ReadSetOfStrings(std::set& target, - const Json::Value& value) + const Json::Value& valueArray) { std::vector tmp; - ReadArrayOfStrings(tmp, value); + ReadArrayOfStrings(tmp, valueArray); target.clear(); for (size_t i = 0; i < tmp.size(); i++) @@ -414,24 +414,38 @@ } - void SerializationToolbox::WriteSetOfStrings(Json::Value& target, + void SerializationToolbox::WriteSetOfStrings(Json::Value& targetObject, const std::set& values, const std::string& field) { - if (target.type() != Json::objectValue || - target.isMember(field.c_str())) + if (targetObject.type() != Json::objectValue || + targetObject.isMember(field.c_str())) { throw OrthancException(ErrorCode_BadFileFormat); } - Json::Value& value = target[field]; + Json::Value& targetArray = targetObject[field]; + + targetArray = Json::arrayValue; + + WriteSetOfStrings(targetArray, values); + } + - value = Json::arrayValue; + void SerializationToolbox::WriteSetOfStrings(Json::Value& targetArray, + const std::set& values) + { + if (targetArray.type() != Json::arrayValue) + { + throw OrthancException(ErrorCode_BadFileFormat); + } + + targetArray.clear(); for (std::set::const_iterator it = values.begin(); it != values.end(); ++it) { - value.append(*it); + targetArray.append(*it); } } diff -r b31c73bc7cb6 -r 97004471a5c5 OrthancFramework/Sources/SerializationToolbox.h --- a/OrthancFramework/Sources/SerializationToolbox.h Thu Aug 31 15:20:41 2023 +0200 +++ b/OrthancFramework/Sources/SerializationToolbox.h Thu Aug 31 16:34:53 2023 +0200 @@ -60,22 +60,22 @@ const std::string& field); static void ReadArrayOfStrings(std::vector& target, - const Json::Value& value, + const Json::Value& valueObject, const std::string& field); static void ReadArrayOfStrings(std::vector& target, - const Json::Value& value); + const Json::Value& valueArray); static void ReadListOfStrings(std::list& target, const Json::Value& value, const std::string& field); static void ReadSetOfStrings(std::set& target, - const Json::Value& value, + const Json::Value& valueObject, const std::string& field); static void ReadSetOfStrings(std::set& target, - const Json::Value& value); + const Json::Value& valueArray); static void ReadSetOfTags(std::set& target, const Json::Value& value, @@ -97,10 +97,13 @@ const std::list& values, const std::string& field); - static void WriteSetOfStrings(Json::Value& target, + static void WriteSetOfStrings(Json::Value& targetObject, const std::set& values, const std::string& field); + static void WriteSetOfStrings(Json::Value& targetArray, + const std::set& values); + static void WriteSetOfTags(Json::Value& target, const std::set& tags, const std::string& field);