adds key/value to map
| 94 | |
| 95 | // adds key/value to map |
| 96 | void Map_Add |
| 97 | ( |
| 98 | SIValue *map, |
| 99 | SIValue key, |
| 100 | SIValue value |
| 101 | ) { |
| 102 | ASSERT(SI_TYPE(*map) & T_MAP); |
| 103 | ASSERT(SI_TYPE(key) & T_STRING); |
| 104 | |
| 105 | // remove key if already existed |
| 106 | Map_Remove(*map, key); |
| 107 | |
| 108 | // create a new pair |
| 109 | Pair pair = Pair_New(key, value); |
| 110 | |
| 111 | // add pair to the end of map |
| 112 | array_append(map->map, pair); |
| 113 | } |
| 114 | |
| 115 | // removes key from map |
| 116 | void Map_Remove |