Lines Matching refs:sa
65 static void sa_doall(const OPENSSL_SA *sa, void (*node)(void **),
74 nodes[0] = sa->nodes;
88 if (l < sa->levels - 1) {
110 void ossl_sa_free(OPENSSL_SA *sa)
112 if (sa != NULL) {
113 sa_doall(sa, &sa_free_node, NULL, NULL);
114 OPENSSL_free(sa);
118 void ossl_sa_free_leaves(OPENSSL_SA *sa)
120 sa_doall(sa, &sa_free_node, &sa_free_leaf, NULL);
121 OPENSSL_free(sa);
134 void ossl_sa_doall(const OPENSSL_SA *sa, void (*leaf)(ossl_uintmax_t, void *))
139 if (sa != NULL)
140 sa_doall(sa, NULL, &trampoline, &tramp);
143 void ossl_sa_doall_arg(const OPENSSL_SA *sa,
147 if (sa != NULL)
148 sa_doall(sa, NULL, leaf, arg);
151 size_t ossl_sa_num(const OPENSSL_SA *sa)
153 return sa == NULL ? 0 : sa->nelem;
156 void *ossl_sa_get(const OPENSSL_SA *sa, ossl_uintmax_t n)
161 if (sa == NULL || sa->nelem == 0)
164 if (n <= sa->top) {
165 p = sa->nodes;
166 for (level = sa->levels - 1; p != NULL && level > 0; level--)
179 int ossl_sa_set(OPENSSL_SA *sa, ossl_uintmax_t posn, void *val)
185 if (sa == NULL)
192 for (;sa->levels < level; sa->levels++) {
196 p[0] = sa->nodes;
197 sa->nodes = p;
199 if (sa->top < posn)
200 sa->top = posn;
202 p = sa->nodes;
203 for (level = sa->levels - 1; level > 0; level--) {
211 sa->nelem--;
213 sa->nelem++;