ucx/map.c

changeset 111
c8c59d7f4536
parent 108
d2b1e67b2b48
child 112
6384016df2a3
     1.1 --- a/ucx/map.c	Mon Jul 15 13:53:51 2013 +0200
     1.2 +++ b/ucx/map.c	Mon Jul 15 14:25:50 2013 +0200
     1.3 @@ -88,7 +88,7 @@
     1.4          copy_func fnc, void *data) {
     1.5      UcxMapIterator i = ucx_map_iterator(from);
     1.6      void *value;
     1.7 -    UCX_MAP_FOREACH(value, i) {
     1.8 +    UCX_MAP_FOREACH(key, value, i) {
     1.9          int ret = ucx_map_put(to, i.cur->key, fnc ? fnc(value, data) : value);
    1.10          if(ret != 0) {
    1.11              return 1;
    1.12 @@ -282,7 +282,7 @@
    1.13      return i;
    1.14  }
    1.15  
    1.16 -int ucx_map_iter_next(UcxMapIterator *i, void **elm) {
    1.17 +int ucx_map_iter_next(UcxMapIterator *i, UcxKey *key, void **elm) {
    1.18      UcxMapElement *e = i->cur;
    1.19      
    1.20      if(e == NULL) {
    1.21 @@ -296,6 +296,7 @@
    1.22              if(e->data != NULL) {
    1.23                  i->cur = e;
    1.24                  *elm = e->data;
    1.25 +                *key = e->key;
    1.26                  return 0;
    1.27              }
    1.28  
    1.29 @@ -402,13 +403,12 @@
    1.30  int ucx_map_store_enc(UcxMap *map, FILE *f,
    1.31          ucx_map_coder encoder, void *encdata) {
    1.32      UcxMapIterator iter = ucx_map_iterator(map);
    1.33 -    char *k, *v;
    1.34 +    char *v;
    1.35      sstr_t key, value;
    1.36      size_t written;
    1.37  
    1.38 -    UCX_MAP_FOREACH(v, iter) {
    1.39 -        k = (char*) iter.cur->key.data;
    1.40 -        key = sstrn(k, iter.cur->key.len);
    1.41 +    UCX_MAP_FOREACH(k, v, iter) {
    1.42 +        key = sstrn(k.data, k.len);
    1.43          if (encoder) {
    1.44              size_t encodedSize;
    1.45              void *encoded = encoder(v, encdata, &encodedSize);

mercurial