diff options
author | Maria Matejka <mq@ucw.cz> | 2022-07-13 14:14:37 +0200 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-07-13 14:14:37 +0200 |
commit | 68a2c9d4c91a36c90a768926495f7894324287c5 (patch) | |
tree | 996387a4741746aa1c5cad1d238b886cfe7620d6 /lib/a-set.c | |
parent | af0d5ec2797bab2a928fa8ce2caf81608a3f7443 (diff) | |
parent | 2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f (diff) |
Merge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-next
Diffstat (limited to 'lib/a-set.c')
-rw-r--r-- | lib/a-set.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/a-set.c b/lib/a-set.c index 8ede9b83..dcb86058 100644 --- a/lib/a-set.c +++ b/lib/a-set.c @@ -693,3 +693,51 @@ lc_set_max(const struct adata *list, lcomm *val) *val = (lcomm) { res[0], res[1], res[2] }; return 1; } + +int +int_set_walk(const struct adata *list, uint *pos, uint *val) +{ + if (!list) + return 0; + + if (*pos >= (uint) int_set_get_size(list)) + return 0; + + u32 *res = int_set_get_data(list) + *pos; + *val = *res; + *pos += 1; + + return 1; +} + +int +ec_set_walk(const struct adata *list, uint *pos, u64 *val) +{ + if (!list) + return 0; + + if (*pos >= (uint) int_set_get_size(list)) + return 0; + + u32 *res = int_set_get_data(list) + *pos; + *val = ec_generic(res[0], res[1]); + *pos += 2; + + return 1; +} + +int +lc_set_walk(const struct adata *list, uint *pos, lcomm *val) +{ + if (!list) + return 0; + + if (*pos >= (uint) int_set_get_size(list)) + return 0; + + u32 *res = int_set_get_data(list) + *pos; + *val = (lcomm) { res[0], res[1], res[2] }; + *pos += 3; + + return 1; +} |