xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/gen (revision d189132c8696fcf1797b3a062510131890830201)
1#!/bin/sh
2
3awk '
4/- join\(/ {
5	printf(" * WARNING: do not edit!\n");
6	i = index(FILENAME, "/crypto/external");
7	s = substr(FILENAME, i);
8	printf(" * Generated by Makefile from /usr/src%s\n", s);
9	next;
10}
11/use OpenSSL/ {
12	next;
13}
14/^\{-/ {
15	next;
16}
17/^-}/ {
18	next;
19}
20/generate_stack_string_macros\(/ {
21V="SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char)\n"
22V=V"#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk))\n"
23V=V"#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx)))\n"
24V=V"#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp)))\n"
25V=V"#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null())\n"
26V=V"#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n)))\n"
27V=V"#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n))\n"
28V=V"#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk))\n"
29V=V"#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk))\n"
30V=V"#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i)))\n"
31V=V"#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)))\n"
32V=V"#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))\n"
33V=V"#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))\n"
34V=V"#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk)))\n"
35V=V"#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk)))\n"
36V=V"#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc))\n"
37V=V"#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx))\n"
38V=V"#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr)))\n"
39V=V"#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))\n"
40V=V"#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))\n"
41V=V"#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum)\n"
42V=V"#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk))\n"
43V=V"#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk))\n"
44V=V"#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk)))\n"
45V=V"#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)))\n"
46V=V"#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp)))\n"
47
48	printf("%s", V);
49	next;
50}
51/generate_stack_string_macros/ {
52	next;
53}
54/generate_stack_const_string_macros\(/ {
55
56V="SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char)\n"
57V=V"#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))\n"
58V=V"#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx)))\n"
59V=V"#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp)))\n"
60V=V"#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null())\n"
61V=V"#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n)))\n"
62V=V"#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n))\n"
63V=V"#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk))\n"
64V=V"#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk))\n"
65V=V"#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i)))\n"
66V=V"#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)))\n"
67V=V"#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))\n"
68V=V"#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))\n"
69V=V"#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk)))\n"
70V=V"#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk)))\n"
71V=V"#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))\n"
72V=V"#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx))\n"
73V=V"#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr)))\n"
74V=V"#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))\n"
75V=V"#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))\n"
76V=V"#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum)\n"
77V=V"#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk))\n"
78V=V"#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))\n"
79V=V"#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)))\n"
80V=V"#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)))\n"
81V=V"#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp)))\n"
82	printf("%s", V);
83	next;
84}
85/generate_stack_const_string_macros/ {
86	next;
87}
88/generate_stack_block_macros\(/ {
89	i = index($0, "\"");
90	s = substr($0, i + 1);
91	i = index(s, "\"");
92	s = substr(s, 1, i - 1);
93
94V="SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void)\n"
95V=V"#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))\n"
96V=V"#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx)))\n"
97V=V"#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp)))\n"
98V=V"#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null())\n"
99V=V"#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n)))\n"
100V=V"#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n))\n"
101V=V"#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk))\n"
102V=V"#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk))\n"
103V=V"#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i)))\n"
104V=V"#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)))\n"
105V=V"#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))\n"
106V=V"#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))\n"
107V=V"#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk)))\n"
108V=V"#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk)))\n"
109V=V"#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))\n"
110V=V"#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx))\n"
111V=V"#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr)))\n"
112V=V"#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))\n"
113V=V"#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))\n"
114V=V"#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum)\n"
115V=V"#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk))\n"
116V=V"#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))\n"
117V=V"#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)))\n"
118V=V"#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)))\n"
119V=V"#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp)))\n"
120
121	gsub("@", s, V);
122	printf("%s\n", V);
123	next;
124}
125/generate_stack_block_macros/ {
126	next;
127}
128/generate_const_stack_macros\(/ {
129	i = index($0, "\"");
130	s = substr($0, i + 1);
131	i = index(s, "\"");
132	s = substr(s, 1, i - 1);
133
134V="SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)\n"
135V=V"#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))\n"
136V=V"#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))\n"
137V=V"#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))\n"
138V=V"#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())\n"
139V=V"#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))\n"
140V=V"#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))\n"
141V=V"#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))\n"
142V=V"#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))\n"
143V=V"#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))\n"
144V=V"#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))\n"
145V=V"#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))\n"
146V=V"#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))\n"
147V=V"#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))\n"
148V=V"#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))\n"
149V=V"#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc))\n"
150V=V"#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))\n"
151V=V"#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))\n"
152V=V"#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))\n"
153V=V"#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))\n"
154V=V"#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)\n"
155V=V"#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))\n"
156V=V"#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))\n"
157V=V"#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))\n"
158V=V"#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))\n"
159V=V"#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))\n"
160
161	gsub("@", s, V);
162	printf("%s\n", V);
163	next;
164}
165/generate_lhash_macros\(/ {
166	i = index($0, "\"");
167	s = substr($0, i + 1);
168	i = index(s, "\"");
169	s = substr(s, 1, i - 1);
170
171V="DEFINE_LHASH_OF_INTERNAL(@);\n"
172V=V"#define lh_@_new(hfn, cmp) ((LHASH_OF(@) *)OPENSSL_LH_new(ossl_check_@_lh_hashfunc_type(hfn), ossl_check_@_lh_compfunc_type(cmp)))\n"
173V=V"#define lh_@_free(lh) OPENSSL_LH_free(ossl_check_@_lh_type(lh))\n"
174V=V"#define lh_@_flush(lh) OPENSSL_LH_flush(ossl_check_@_lh_type(lh))\n"
175V=V"#define lh_@_insert(lh, ptr) ((@ *)OPENSSL_LH_insert(ossl_check_@_lh_type(lh), ossl_check_@_lh_plain_type(ptr)))\n"
176V=V"#define lh_@_delete(lh, ptr) ((@ *)OPENSSL_LH_delete(ossl_check_@_lh_type(lh), ossl_check_const_@_lh_plain_type(ptr)))\n"
177V=V"#define lh_@_retrieve(lh, ptr) ((@ *)OPENSSL_LH_retrieve(ossl_check_@_lh_type(lh), ossl_check_const_@_lh_plain_type(ptr)))\n"
178V=V"#define lh_@_error(lh) OPENSSL_LH_error(ossl_check_@_lh_type(lh))\n"
179V=V"#define lh_@_num_items(lh) OPENSSL_LH_num_items(ossl_check_@_lh_type(lh))\n"
180V=V"#define lh_@_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_@_lh_type(lh), out)\n"
181V=V"#define lh_@_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_@_lh_type(lh), out)\n"
182V=V"#define lh_@_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_@_lh_type(lh), out)\n"
183V=V"#define lh_@_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_@_lh_type(lh))\n"
184V=V"#define lh_@_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_@_lh_type(lh), dl)\n"
185V=V"#define lh_@_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_@_lh_type(lh), ossl_check_@_lh_doallfunc_type(dfn))\n"
186	gsub("@", s, V);
187	printf("%s\n", V);
188	next;
189}
190
191/generate_stack_macros\(/ {
192	i = index($0, "\"");
193	s = substr($0, i + 1);
194	i = index(s, "\"");
195	s = substr(s, 1, i - 1);
196
197V="SKM_DEFINE_STACK_OF_INTERNAL(@, @, @)\n"
198V=V"#define sk_@_num(sk) OPENSSL_sk_num(ossl_check_const_@_sk_type(sk))\n"
199V=V"#define sk_@_value(sk, idx) ((@ *)OPENSSL_sk_value(ossl_check_const_@_sk_type(sk), (idx)))\n"
200V=V"#define sk_@_new(cmp) ((STACK_OF(@) *)OPENSSL_sk_new(ossl_check_@_compfunc_type(cmp)))\n"
201V=V"#define sk_@_new_null() ((STACK_OF(@) *)OPENSSL_sk_new_null())\n"
202V=V"#define sk_@_new_reserve(cmp, n) ((STACK_OF(@) *)OPENSSL_sk_new_reserve(ossl_check_@_compfunc_type(cmp), (n)))\n"
203V=V"#define sk_@_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_@_sk_type(sk), (n))\n"
204V=V"#define sk_@_free(sk) OPENSSL_sk_free(ossl_check_@_sk_type(sk))\n"
205V=V"#define sk_@_zero(sk) OPENSSL_sk_zero(ossl_check_@_sk_type(sk))\n"
206V=V"#define sk_@_delete(sk, i) ((@ *)OPENSSL_sk_delete(ossl_check_@_sk_type(sk), (i)))\n"
207V=V"#define sk_@_delete_ptr(sk, ptr) ((@ *)OPENSSL_sk_delete_ptr(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr)))\n"
208V=V"#define sk_@_push(sk, ptr) OPENSSL_sk_push(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr))\n"
209V=V"#define sk_@_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr))\n"
210V=V"#define sk_@_pop(sk) ((@ *)OPENSSL_sk_pop(ossl_check_@_sk_type(sk)))\n"
211V=V"#define sk_@_shift(sk) ((@ *)OPENSSL_sk_shift(ossl_check_@_sk_type(sk)))\n"
212V=V"#define sk_@_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_@_sk_type(sk),ossl_check_@_freefunc_type(freefunc))\n"
213V=V"#define sk_@_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr), (idx))\n"
214V=V"#define sk_@_set(sk, idx, ptr) ((@ *)OPENSSL_sk_set(ossl_check_@_sk_type(sk), (idx), ossl_check_@_type(ptr)))\n"
215V=V"#define sk_@_find(sk, ptr) OPENSSL_sk_find(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr))\n"
216V=V"#define sk_@_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr))\n"
217V=V"#define sk_@_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_@_sk_type(sk), ossl_check_@_type(ptr), pnum)\n"
218V=V"#define sk_@_sort(sk) OPENSSL_sk_sort(ossl_check_@_sk_type(sk))\n"
219V=V"#define sk_@_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_@_sk_type(sk))\n"
220V=V"#define sk_@_dup(sk) ((STACK_OF(@) *)OPENSSL_sk_dup(ossl_check_const_@_sk_type(sk)))\n"
221V=V"#define sk_@_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(@) *)OPENSSL_sk_deep_copy(ossl_check_const_@_sk_type(sk), ossl_check_@_copyfunc_type(copyfunc), ossl_check_@_freefunc_type(freefunc)))\n"
222V=V"#define sk_@_set_cmp_func(sk, cmp) ((sk_@_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_@_sk_type(sk), ossl_check_@_compfunc_type(cmp)))\n"
223
224	gsub("@", s, V);
225	printf("%s\n", V);
226	next;
227}
228{
229	print $0;
230}
231' "$1"
232