]>
git.proxmox.com Git - libgit2.git/blob - src/strmap.h
2 * Copyright (C) the libgit2 contributors. All rights reserved.
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
7 #ifndef INCLUDE_strmap_h__
8 #define INCLUDE_strmap_h__
12 typedef struct kh_str_s git_strmap
;
14 int git_strmap_alloc(git_strmap
**map
);
15 void git_strmap_free(git_strmap
*map
);
16 void git_strmap_clear(git_strmap
*map
);
18 size_t git_strmap_num_entries(git_strmap
*map
);
20 size_t git_strmap_lookup_index(git_strmap
*map
, const char *key
);
21 int git_strmap_valid_index(git_strmap
*map
, size_t idx
);
23 int git_strmap_exists(git_strmap
*map
, const char *key
);
24 int git_strmap_has_data(git_strmap
*map
, size_t idx
);
26 const char *git_strmap_key(git_strmap
*map
, size_t idx
);
27 void git_strmap_set_key_at(git_strmap
*map
, size_t idx
, char *key
);
28 void *git_strmap_value_at(git_strmap
*map
, size_t idx
);
29 void git_strmap_set_value_at(git_strmap
*map
, size_t idx
, void *value
);
30 void git_strmap_delete_at(git_strmap
*map
, size_t idx
);
32 int git_strmap_put(git_strmap
*map
, const char *key
, int *err
);
33 void git_strmap_insert(git_strmap
*map
, const char *key
, void *value
, int *rval
);
34 void git_strmap_delete(git_strmap
*map
, const char *key
);
36 #define git_strmap_foreach(h, kvar, vvar, code) { size_t __i; \
37 for (__i = git_strmap_begin(h); __i != git_strmap_end(h); ++__i) { \
38 if (!git_strmap_has_data(h,__i)) continue; \
39 (kvar) = git_strmap_key(h,__i); \
40 (vvar) = git_strmap_value_at(h,__i); \
44 #define git_strmap_foreach_value(h, vvar, code) { size_t __i; \
45 for (__i = git_strmap_begin(h); __i != git_strmap_end(h); ++__i) { \
46 if (!git_strmap_has_data(h,__i)) continue; \
47 (vvar) = git_strmap_value_at(h,__i); \
51 size_t git_strmap_begin(git_strmap
*map
);
52 size_t git_strmap_end(git_strmap
*map
);