/ Compare two JSON trees. */ /
| 1095 | /* Compare two JSON trees. */ |
| 1096 | /*********************************************************************************/ |
| 1097 | my_bool JSNX::CompareTree(PGLOBAL g, PJSON jp1, PJSON jp2) |
| 1098 | { |
| 1099 | if (!jp1 || !jp2 || jp1->GetType() != jp2->GetType() |
| 1100 | || jp1->size() != jp2->size()) |
| 1101 | return false; |
| 1102 | |
| 1103 | my_bool found = true; |
| 1104 | |
| 1105 | if (jp1->GetType() == TYPE_JVAL) { |
| 1106 | // PVL v1 = ((PJVAL)jp1)->GetVal(), v2 = ((PJVAL)jp2)->GetVal(); |
| 1107 | |
| 1108 | if (((PJVAL)jp1)->DataType == TYPE_JSON && ((PJVAL)jp2)->DataType == TYPE_JSON) |
| 1109 | found = CompareTree(g, jp1->GetJsp(), jp2->GetJsp()); |
| 1110 | else |
| 1111 | found = CompareValues(((PJVAL)jp1), ((PJVAL)jp2)); |
| 1112 | |
| 1113 | } else if (jp1->GetType() == TYPE_JAR) { |
| 1114 | for (int i = 0; found && i < jp1->size(); i++) |
| 1115 | found = (CompareTree(g, jp1->GetArrayValue(i), jp2->GetArrayValue(i))); |
| 1116 | |
| 1117 | } else if (jp1->GetType() == TYPE_JOB) { |
| 1118 | PJPR p1 = jp1->GetFirst(), p2 = jp2->GetFirst(); |
| 1119 | |
| 1120 | for (; found && p1 && p2; p1 = p1->Next, p2 = p2->Next) |
| 1121 | found = CompareTree(g, p1->Val, p2->Val); |
| 1122 | |
| 1123 | } else |
| 1124 | found = false; |
| 1125 | |
| 1126 | return found; |
| 1127 | } // end of CompareTree |
| 1128 | |
| 1129 | /*********************************************************************************/ |
| 1130 | /* Compare two VAL values and return true if they are equal. */ |
nothing calls this directly
no test coverage detected