Receives two maps and merges them
| 76 | |
| 77 | // Receives two maps and merges them |
| 78 | SIValue AR_MERGEMAP(SIValue *argv, int argc, void *private_data) { |
| 79 | ASSERT(argc == 2); |
| 80 | |
| 81 | SIValue map0 = argv[0]; |
| 82 | SIValue map1 = argv[1]; |
| 83 | |
| 84 | if ((SI_TYPE(map0) & T_NULL) && (SI_TYPE(map1) & T_NULL)) { |
| 85 | return SI_NullVal(); |
| 86 | } else if (SI_TYPE(map0) & T_NULL) { |
| 87 | return map1; |
| 88 | } else if (SI_TYPE(map1) & T_NULL) { |
| 89 | return map0; |
| 90 | } else { |
| 91 | uint keyCount0 = Map_KeyCount(map0); |
| 92 | SIValue map = Map_Clone(map1); |
| 93 | for(int i = 0; i < keyCount0; i++) { |
| 94 | SIValue key; |
| 95 | SIValue value; |
| 96 | Map_GetIdx(map0, i, &key, &value); |
| 97 | Map_Add(&map, key, value); |
| 98 | } |
| 99 | return map; |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | void Register_MapFuncs() { |
| 104 | SIType *types; |
nothing calls this directly
no test coverage detected