maps.aes
1 contract Maps = 2 3 record pt = {x : int, y : int} 4 record state = { map_i : map(int, pt), 5 map_s : map(string, pt) } 6 7 entrypoint init() = { map_i = {}, map_s = {} } 8 9 entrypoint get_state() = state 10 11 // {[k] = v} 12 entrypoint map_i() = 13 { [1] = {x = 1, y = 2}, 14 [2] = {x = 3, y = 4}, 15 [3] = {x = 5, y = 6} } 16 entrypoint map_s() = 17 { ["one"] = {x = 1, y = 2}, 18 ["two"] = {x = 3, y = 4}, 19 ["three"] = {x = 5, y = 6} } 20 stateful entrypoint map_state_i() = put(state{ map_i = map_i() }) 21 stateful entrypoint map_state_s() = put(state{ map_s = map_s() }) 22 23 // m[k] 24 entrypoint get_i(k, m : map(int, pt)) = m[k] 25 entrypoint get_s(k, m : map(string, pt)) = m[k] 26 entrypoint get_state_i(k) = get_i(k, state.map_i) 27 entrypoint get_state_s(k) = get_s(k, state.map_s) 28 29 // m[k = v] 30 entrypoint get_def_i(k, v, m : map(int, pt)) = m[k = v] 31 entrypoint get_def_s(k, v, m : map(string, pt)) = m[k = v] 32 entrypoint get_def_state_i(k, v) = get_def_i(k, v, state.map_i) 33 entrypoint get_def_state_s(k, v) = get_def_s(k, v, state.map_s) 34 35 // m{[k] = v} 36 entrypoint set_i(k, p, m : map(int, pt)) = m{ [k] = p } 37 entrypoint set_s(k, p, m : map(string, pt)) = m{ [k] = p } 38 stateful entrypoint set_state_i(k, p) = put(state{ map_i = set_i(k, p, state.map_i) }) 39 stateful entrypoint set_state_s(k, p) = put(state{ map_s = set_s(k, p, state.map_s) }) 40 41 // m{f[k].x = v} 42 entrypoint setx_i(k, x, m : map(int, pt)) = m{ [k].x = x } 43 entrypoint setx_s(k, x, m : map(string, pt)) = m{ [k].x = x } 44 stateful entrypoint setx_state_i(k, x) = put(state{ map_i[k].x = x }) 45 stateful entrypoint setx_state_s(k, x) = put(state{ map_s[k].x = x }) 46 47 // m{[k] @ x = v } 48 entrypoint addx_i(k, d, m : map(int, pt)) = m{ [k].x @ x = x + d } 49 entrypoint addx_s(k, d, m : map(string, pt)) = m{ [k].x @ x = x + d } 50 stateful entrypoint addx_state_i(k, d) = put(state{ map_i[k].x @ x = x + d }) 51 stateful entrypoint addx_state_s(k, d) = put(state{ map_s[k].x @ x = x + d }) 52 53 // m{[k = def] @ x = v } 54 entrypoint addx_def_i(k, v, d, m : map(int, pt)) = m{ [k = v].x @ x = x + d } 55 entrypoint addx_def_s(k, v, d, m : map(string, pt)) = m{ [k = v].x @ x = x + d } 56 57 // Map.member 58 entrypoint member_i(k, m : map(int, pt)) = Map.member(k, m) 59 entrypoint member_s(k, m : map(string, pt)) = Map.member(k, m) 60 entrypoint member_state_i(k) = member_i(k, state.map_i) 61 entrypoint member_state_s(k) = member_s(k, state.map_s) 62 63 // Map.lookup 64 entrypoint lookup_i(k, m : map(int, pt)) = Map.lookup(k, m) 65 entrypoint lookup_s(k, m : map(string, pt)) = Map.lookup(k, m) 66 entrypoint lookup_state_i(k) = lookup_i(k, state.map_i) 67 entrypoint lookup_state_s(k) = lookup_s(k, state.map_s) 68 69 // Map.lookup_default 70 entrypoint lookup_def_i(k, m : map(int, pt), def : pt) = 71 Map.lookup_default(k, m, def) 72 entrypoint lookup_def_s(k, m : map(string, pt), def : pt) = 73 Map.lookup_default(k, m, def) 74 entrypoint lookup_def_state_i(k, def) = lookup_def_i(k, state.map_i, def) 75 entrypoint lookup_def_state_s(k, def) = lookup_def_s(k, state.map_s, def) 76 77 // Map.delete 78 entrypoint delete_i(k, m : map(int, pt)) = Map.delete(k, m) 79 entrypoint delete_s(k, m : map(string, pt)) = Map.delete(k, m) 80 stateful entrypoint delete_state_i(k) = put(state{ map_i = delete_i(k, state.map_i) }) 81 stateful entrypoint delete_state_s(k) = put(state{ map_s = delete_s(k, state.map_s) }) 82 83 // Map.size 84 entrypoint size_i(m : map(int, pt)) = Map.size(m) 85 entrypoint size_s(m : map(string, pt)) = Map.size(m) 86 entrypoint size_state_i() = size_i(state.map_i) 87 entrypoint size_state_s() = size_s(state.map_s) 88 89 // Map.to_list 90 entrypoint tolist_i(m : map(int, pt)) = Map.to_list(m) 91 entrypoint tolist_s(m : map(string, pt)) = Map.to_list(m) 92 entrypoint tolist_state_i() = tolist_i(state.map_i) 93 entrypoint tolist_state_s() = tolist_s(state.map_s) 94 95 // Map.from_list 96 entrypoint fromlist_i(xs : list(int * pt)) = Map.from_list(xs) 97 entrypoint fromlist_s(xs : list(string * pt)) = Map.from_list(xs) 98 stateful entrypoint fromlist_state_i(xs) = put(state{ map_i = fromlist_i(xs) }) 99 stateful entrypoint fromlist_state_s(xs) = put(state{ map_s = fromlist_s(xs) }) 100