Mercurial > hg > orthanc-webviewer
comparison 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 |
comparison
equal
deleted
inserted
replaced
34:86299731dc4e | 35:7c6cf09d838b |
---|---|
683 digest[4]); | 683 digest[4]); |
684 } | 684 } |
685 | 685 |
686 bool Toolbox::IsSHA1(const std::string& str) | 686 bool Toolbox::IsSHA1(const std::string& str) |
687 { | 687 { |
688 if (str.size() != 44) | 688 if (str.size() == 0) |
689 { | |
690 return false; | |
691 } | |
692 | |
693 const char* start = &str[0]; | |
694 const char* end = start + str.size(); | |
695 | |
696 // Trim the beginning of the string | |
697 while (start < end) | |
698 { | |
699 if (*start == '\0' || | |
700 isspace(*start)) | |
701 { | |
702 start++; | |
703 } | |
704 else | |
705 { | |
706 break; | |
707 } | |
708 } | |
709 | |
710 // Trim the trailing of the string | |
711 while (start < end) | |
712 { | |
713 if (*(end - 1) == '\0' || | |
714 isspace(*(end - 1))) | |
715 { | |
716 end--; | |
717 } | |
718 else | |
719 { | |
720 break; | |
721 } | |
722 } | |
723 | |
724 if (end - start != 44) | |
689 { | 725 { |
690 return false; | 726 return false; |
691 } | 727 } |
692 | 728 |
693 for (unsigned int i = 0; i < 44; i++) | 729 for (unsigned int i = 0; i < 44; i++) |
695 if (i == 8 || | 731 if (i == 8 || |
696 i == 17 || | 732 i == 17 || |
697 i == 26 || | 733 i == 26 || |
698 i == 35) | 734 i == 35) |
699 { | 735 { |
700 if (str[i] != '-') | 736 if (start[i] != '-') |
701 return false; | 737 return false; |
702 } | 738 } |
703 else | 739 else |
704 { | 740 { |
705 if (!isalnum(str[i])) | 741 if (!isalnum(start[i])) |
706 return false; | 742 return false; |
707 } | 743 } |
708 } | 744 } |
709 | 745 |
710 return true; | 746 return true; |
1135 pos++; | 1171 pos++; |
1136 } | 1172 } |
1137 | 1173 |
1138 return true; | 1174 return true; |
1139 } | 1175 } |
1176 | |
1177 | |
1178 void Toolbox::CopyJsonWithoutComments(Json::Value& target, | |
1179 const Json::Value& source) | |
1180 { | |
1181 switch (source.type()) | |
1182 { | |
1183 case Json::nullValue: | |
1184 target = Json::nullValue; | |
1185 break; | |
1186 | |
1187 case Json::intValue: | |
1188 target = source.asInt64(); | |
1189 break; | |
1190 | |
1191 case Json::uintValue: | |
1192 target = source.asUInt64(); | |
1193 break; | |
1194 | |
1195 case Json::realValue: | |
1196 target = source.asDouble(); | |
1197 break; | |
1198 | |
1199 case Json::stringValue: | |
1200 target = source.asString(); | |
1201 break; | |
1202 | |
1203 case Json::booleanValue: | |
1204 target = source.asBool(); | |
1205 break; | |
1206 | |
1207 case Json::arrayValue: | |
1208 { | |
1209 target = Json::arrayValue; | |
1210 for (Json::Value::ArrayIndex i = 0; i < source.size(); i++) | |
1211 { | |
1212 Json::Value& item = target.append(Json::nullValue); | |
1213 CopyJsonWithoutComments(item, source[i]); | |
1214 } | |
1215 | |
1216 break; | |
1217 } | |
1218 | |
1219 case Json::objectValue: | |
1220 { | |
1221 target = Json::objectValue; | |
1222 Json::Value::Members members = source.getMemberNames(); | |
1223 for (Json::Value::ArrayIndex i = 0; i < members.size(); i++) | |
1224 { | |
1225 const std::string item = members[i]; | |
1226 CopyJsonWithoutComments(target[item], source[item]); | |
1227 } | |
1228 | |
1229 break; | |
1230 } | |
1231 | |
1232 default: | |
1233 break; | |
1234 } | |
1235 } | |
1236 | |
1237 | |
1238 bool Toolbox::StartsWith(const std::string& str, | |
1239 const std::string& prefix) | |
1240 { | |
1241 if (str.size() < prefix.size()) | |
1242 { | |
1243 return false; | |
1244 } | |
1245 else | |
1246 { | |
1247 return str.compare(0, prefix.size(), prefix) == 0; | |
1248 } | |
1249 } | |
1250 | |
1140 } | 1251 } |
1141 | 1252 |