OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 * | 6 * |
7 * Helper functions for result writing operations. | 7 * Helper functions for result writing operations. |
8 */ | 8 */ |
9 | 9 |
10 #include "ResultsWriter.h" | 10 #include "ResultsWriter.h" |
| 11 #include "SkString.h" |
| 12 #include "SkTArray.h" |
11 | 13 |
12 Json::Value* SkFindNamedNode(Json::Value* root, const char name[]) { | 14 Json::Value* SkFindNamedNode(Json::Value* root, const char name[]) { |
13 Json::Value* search_results = NULL; | 15 Json::Value* search_results = NULL; |
14 for(Json::Value::iterator iter = root->begin(); | 16 for(Json::Value::iterator iter = root->begin(); |
15 iter!= root->end(); ++iter) { | 17 iter!= root->end(); ++iter) { |
16 if(SkString(name).equals((*iter)["name"].asCString())) { | 18 if(SkString(name).equals((*iter)["name"].asCString())) { |
17 search_results = &(*iter); | 19 search_results = &(*iter); |
18 break; | 20 break; |
19 } | 21 } |
20 } | 22 } |
21 | 23 |
22 if(search_results != NULL) { | 24 if(search_results != NULL) { |
23 return search_results; | 25 return search_results; |
24 } else { | 26 } else { |
25 Json::Value* new_val = &(root->append(Json::Value())); | 27 Json::Value* new_val = &(root->append(Json::Value())); |
26 (*new_val)["name"] = name; | 28 (*new_val)["name"] = name; |
27 return new_val; | 29 return new_val; |
28 } | 30 } |
29 } | 31 } |
30 | 32 |
| 33 Json::Value SkMakeBuilderJSON(const SkString &builderName) { |
| 34 static const int kNumKeys = 6; |
| 35 static const char* kKeys[kNumKeys] = { |
| 36 "role", "os", "model", "gpu", "arch", "configuration"}; |
| 37 Json::Value builderData; |
| 38 |
| 39 if (!builderName.isEmpty()) { |
| 40 SkTArray<SkString> splitBuilder; |
| 41 SkStrSplit(builderName.c_str(), "-", &splitBuilder); |
| 42 SkASSERT(splitBuilder.count() >= kNumKeys); |
| 43 for (int i = 0; i < kNumKeys && i < splitBuilder.count(); ++i) { |
| 44 builderData[kKeys[i]] = splitBuilder[i].c_str(); |
| 45 } |
| 46 builderData["builderName"] = builderName.c_str(); |
| 47 if (kNumKeys < splitBuilder.count()) { |
| 48 SkString extras; |
| 49 for (int i = kNumKeys; i < splitBuilder.count(); ++i) { |
| 50 extras.append(splitBuilder[i]); |
| 51 if (i != splitBuilder.count() - 1) { |
| 52 extras.append("-"); |
| 53 } |
| 54 } |
| 55 builderData["badParams"] = extras.c_str(); |
| 56 } |
| 57 } |
| 58 return builderData; |
| 59 } |
OLD | NEW |