Lines Matching defs:set

18 	/* lookup index for each unique string in strings set */
41 struct strset *set = calloc(1, sizeof(*set));
45 if (!set)
48 hash = hashmap__new(strset_hash_fn, strset_equal_fn, set);
52 set->strs_data_max_len = max_data_sz;
53 set->strs_hash = hash;
58 set->strs_data = malloc(init_data_sz);
59 if (!set->strs_data)
62 memcpy(set->strs_data, init_data, init_data_sz);
63 set->strs_data_len = init_data_sz;
64 set->strs_data_cap = init_data_sz;
66 for (off = 0; off < set->strs_data_len; off += strlen(set->strs_data + off) + 1) {
78 return set;
80 strset__free(set);
84 void strset__free(struct strset *set)
86 if (IS_ERR_OR_NULL(set))
89 hashmap__free(set->strs_hash);
90 free(set->strs_data);
91 free(set);
94 size_t strset__data_size(const struct strset *set)
96 return set->strs_data_len;
99 const char *strset__data(const struct strset *set)
101 return set->strs_data;
104 static void *strset_add_str_mem(struct strset *set, size_t add_sz)
106 return libbpf_add_mem(&set->strs_data, &set->strs_data_cap, 1,
107 set->strs_data_len, set->strs_data_max_len, add_sz);
110 static long strset_str_append(struct strset *set, const char *s)
112 uintptr_t old_data = (uintptr_t)set->strs_data;
113 size_t old_data_len = set->strs_data_len;
119 * Hashmap keys are always offsets within set->strs_data, so to even
122 * until set->strs_data_len is incremented, that string is just a piece
125 * ready to be used, only a simple set->strs_data_len increment away.
127 p = strset_add_str_mem(set, len);
132 * The set->strs_data might have reallocated and if 's' pointed
136 if (old_data && old_data != (uintptr_t)set->strs_data &&
138 s = set->strs_data + (old_s - old_data);
151 int strset__find_str(struct strset *set, const char *s)
155 len = strset_str_append(set, s);
159 new_off = set->strs_data_len;
161 if (hashmap__find(set->strs_hash, new_off, &old_off))
173 int strset__add_str(struct strset *set, const char *s)
178 len = strset_str_append(set, s);
182 new_off = set->strs_data_len;
188 err = hashmap__insert(set->strs_hash, new_off, new_off,
195 set->strs_data_len += len; /* new unique string, adjust data length */