Mercurial > hg > orthanc-webviewer
diff Orthanc/Core/Toolbox.cpp @ 35:7c6cf09d838b
toolchains for MinGW-w64
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 30 Jun 2015 11:55:34 +0200 |
parents | 15acbf5e7545 |
children | dbc1c9ca0030 |
line wrap: on
line diff
--- a/Orthanc/Core/Toolbox.cpp Fri Jun 26 16:37:42 2015 +0200 +++ b/Orthanc/Core/Toolbox.cpp Tue Jun 30 11:55:34 2015 +0200 @@ -685,7 +685,43 @@ bool Toolbox::IsSHA1(const std::string& str) { - if (str.size() != 44) + if (str.size() == 0) + { + return false; + } + + const char* start = &str[0]; + const char* end = start + str.size(); + + // Trim the beginning of the string + while (start < end) + { + if (*start == '\0' || + isspace(*start)) + { + start++; + } + else + { + break; + } + } + + // Trim the trailing of the string + while (start < end) + { + if (*(end - 1) == '\0' || + isspace(*(end - 1))) + { + end--; + } + else + { + break; + } + } + + if (end - start != 44) { return false; } @@ -697,12 +733,12 @@ i == 26 || i == 35) { - if (str[i] != '-') + if (start[i] != '-') return false; } else { - if (!isalnum(str[i])) + if (!isalnum(start[i])) return false; } } @@ -1137,5 +1173,80 @@ return true; } + + + void Toolbox::CopyJsonWithoutComments(Json::Value& target, + const Json::Value& source) + { + switch (source.type()) + { + case Json::nullValue: + target = Json::nullValue; + break; + + case Json::intValue: + target = source.asInt64(); + break; + + case Json::uintValue: + target = source.asUInt64(); + break; + + case Json::realValue: + target = source.asDouble(); + break; + + case Json::stringValue: + target = source.asString(); + break; + + case Json::booleanValue: + target = source.asBool(); + break; + + case Json::arrayValue: + { + target = Json::arrayValue; + for (Json::Value::ArrayIndex i = 0; i < source.size(); i++) + { + Json::Value& item = target.append(Json::nullValue); + CopyJsonWithoutComments(item, source[i]); + } + + break; + } + + case Json::objectValue: + { + target = Json::objectValue; + Json::Value::Members members = source.getMemberNames(); + for (Json::Value::ArrayIndex i = 0; i < members.size(); i++) + { + const std::string item = members[i]; + CopyJsonWithoutComments(target[item], source[item]); + } + + break; + } + + default: + break; + } + } + + + bool Toolbox::StartsWith(const std::string& str, + const std::string& prefix) + { + if (str.size() < prefix.size()) + { + return false; + } + else + { + return str.compare(0, prefix.size(), prefix) == 0; + } + } + }