Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

3988 rader
183 KiB

  1. /* Copyright (c) 2014, Google Inc.
  2. *
  3. * Permission to use, copy, modify, and/or distribute this software for any
  4. * purpose with or without fee is hereby granted, provided that the above
  5. * copyright notice and this permission notice appear in all copies.
  6. *
  7. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  8. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  9. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
  10. * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  11. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  12. * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  13. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
  14. #if !defined(IN_STACK_H)
  15. #error "Don't include this file directly. Include stack.h."
  16. #endif
  17. /* ACCESS_DESCRIPTION */
  18. #define sk_ACCESS_DESCRIPTION_new(comp) \
  19. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_new(CHECKED_CAST( \
  20. stack_cmp_func, \
  21. int (*)(const ACCESS_DESCRIPTION **a, const ACCESS_DESCRIPTION **b), \
  22. comp)))
  23. #define sk_ACCESS_DESCRIPTION_new_null() \
  24. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_new_null())
  25. #define sk_ACCESS_DESCRIPTION_num(sk) \
  26. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk))
  27. #define sk_ACCESS_DESCRIPTION_zero(sk) \
  28. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk));
  29. #define sk_ACCESS_DESCRIPTION_value(sk, i) \
  30. ((ACCESS_DESCRIPTION *)sk_value( \
  31. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  32. (i)))
  33. #define sk_ACCESS_DESCRIPTION_set(sk, i, p) \
  34. ((ACCESS_DESCRIPTION *)sk_set( \
  35. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), (i), \
  36. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p)))
  37. #define sk_ACCESS_DESCRIPTION_free(sk) \
  38. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk))
  39. #define sk_ACCESS_DESCRIPTION_pop_free(sk, free_func) \
  40. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  41. CHECKED_CAST(void (*)(void *), void (*)(ACCESS_DESCRIPTION *), \
  42. free_func))
  43. #define sk_ACCESS_DESCRIPTION_insert(sk, p, where) \
  44. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  45. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p), (where))
  46. #define sk_ACCESS_DESCRIPTION_delete(sk, where) \
  47. ((ACCESS_DESCRIPTION *)sk_delete( \
  48. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), (where)))
  49. #define sk_ACCESS_DESCRIPTION_delete_ptr(sk, p) \
  50. ((ACCESS_DESCRIPTION *)sk_delete_ptr( \
  51. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  52. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p)))
  53. #define sk_ACCESS_DESCRIPTION_find(sk, out_index, p) \
  54. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  55. (out_index), CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p))
  56. #define sk_ACCESS_DESCRIPTION_shift(sk) \
  57. ((ACCESS_DESCRIPTION *)sk_shift( \
  58. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  59. #define sk_ACCESS_DESCRIPTION_push(sk, p) \
  60. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  61. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p))
  62. #define sk_ACCESS_DESCRIPTION_pop(sk) \
  63. ((ACCESS_DESCRIPTION *)sk_pop( \
  64. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  65. #define sk_ACCESS_DESCRIPTION_dup(sk) \
  66. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_dup( \
  67. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  68. #define sk_ACCESS_DESCRIPTION_sort(sk) \
  69. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk))
  70. #define sk_ACCESS_DESCRIPTION_is_sorted(sk) \
  71. sk_is_sorted( \
  72. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk))
  73. #define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, comp) \
  74. ((int (*)(const ACCESS_DESCRIPTION **a, const ACCESS_DESCRIPTION **b)) \
  75. sk_set_cmp_func( \
  76. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  77. CHECKED_CAST(stack_cmp_func, int (*)(const ACCESS_DESCRIPTION **a, \
  78. const ACCESS_DESCRIPTION **b), \
  79. comp)))
  80. #define sk_ACCESS_DESCRIPTION_deep_copy(sk, copy_func, free_func) \
  81. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_deep_copy( \
  82. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  83. CHECKED_CAST(void *(*)(void *), \
  84. ACCESS_DESCRIPTION *(*)(ACCESS_DESCRIPTION *), copy_func), \
  85. CHECKED_CAST(void (*)(void *), void (*)(ACCESS_DESCRIPTION *), \
  86. free_func)))
  87. /* ASN1_ADB_TABLE */
  88. #define sk_ASN1_ADB_TABLE_new(comp) \
  89. ((STACK_OF(ASN1_ADB_TABLE) *)sk_new(CHECKED_CAST( \
  90. stack_cmp_func, \
  91. int (*)(const ASN1_ADB_TABLE **a, const ASN1_ADB_TABLE **b), comp)))
  92. #define sk_ASN1_ADB_TABLE_new_null() ((STACK_OF(ASN1_ADB_TABLE) *)sk_new_null())
  93. #define sk_ASN1_ADB_TABLE_num(sk) \
  94. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk))
  95. #define sk_ASN1_ADB_TABLE_zero(sk) \
  96. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk));
  97. #define sk_ASN1_ADB_TABLE_value(sk, i) \
  98. ((ASN1_ADB_TABLE *)sk_value( \
  99. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk), \
  100. (i)))
  101. #define sk_ASN1_ADB_TABLE_set(sk, i, p) \
  102. ((ASN1_ADB_TABLE *)sk_set( \
  103. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (i), \
  104. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p)))
  105. #define sk_ASN1_ADB_TABLE_free(sk) \
  106. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk))
  107. #define sk_ASN1_ADB_TABLE_pop_free(sk, free_func) \
  108. sk_pop_free( \
  109. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  110. CHECKED_CAST(void (*)(void *), void (*)(ASN1_ADB_TABLE *), free_func))
  111. #define sk_ASN1_ADB_TABLE_insert(sk, p, where) \
  112. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  113. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p), (where))
  114. #define sk_ASN1_ADB_TABLE_delete(sk, where) \
  115. ((ASN1_ADB_TABLE *)sk_delete( \
  116. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (where)))
  117. #define sk_ASN1_ADB_TABLE_delete_ptr(sk, p) \
  118. ((ASN1_ADB_TABLE *)sk_delete_ptr( \
  119. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  120. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p)))
  121. #define sk_ASN1_ADB_TABLE_find(sk, out_index, p) \
  122. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (out_index), \
  123. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p))
  124. #define sk_ASN1_ADB_TABLE_shift(sk) \
  125. ((ASN1_ADB_TABLE *)sk_shift( \
  126. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk)))
  127. #define sk_ASN1_ADB_TABLE_push(sk, p) \
  128. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  129. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p))
  130. #define sk_ASN1_ADB_TABLE_pop(sk) \
  131. ((ASN1_ADB_TABLE *)sk_pop( \
  132. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk)))
  133. #define sk_ASN1_ADB_TABLE_dup(sk) \
  134. ((STACK_OF(ASN1_ADB_TABLE) *)sk_dup( \
  135. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk)))
  136. #define sk_ASN1_ADB_TABLE_sort(sk) \
  137. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk))
  138. #define sk_ASN1_ADB_TABLE_is_sorted(sk) \
  139. sk_is_sorted( \
  140. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk))
  141. #define sk_ASN1_ADB_TABLE_set_cmp_func(sk, comp) \
  142. ((int (*)(const ASN1_ADB_TABLE **a, const ASN1_ADB_TABLE **b)) \
  143. sk_set_cmp_func( \
  144. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  145. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_ADB_TABLE **a, \
  146. const ASN1_ADB_TABLE **b), \
  147. comp)))
  148. #define sk_ASN1_ADB_TABLE_deep_copy(sk, copy_func, free_func) \
  149. ((STACK_OF(ASN1_ADB_TABLE) *)sk_deep_copy( \
  150. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk), \
  151. CHECKED_CAST(void *(*)(void *), ASN1_ADB_TABLE *(*)(ASN1_ADB_TABLE *), \
  152. copy_func), \
  153. CHECKED_CAST(void (*)(void *), void (*)(ASN1_ADB_TABLE *), free_func)))
  154. /* ASN1_GENERALSTRING */
  155. #define sk_ASN1_GENERALSTRING_new(comp) \
  156. ((STACK_OF(ASN1_GENERALSTRING) *)sk_new(CHECKED_CAST( \
  157. stack_cmp_func, \
  158. int (*)(const ASN1_GENERALSTRING **a, const ASN1_GENERALSTRING **b), \
  159. comp)))
  160. #define sk_ASN1_GENERALSTRING_new_null() \
  161. ((STACK_OF(ASN1_GENERALSTRING) *)sk_new_null())
  162. #define sk_ASN1_GENERALSTRING_num(sk) \
  163. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk))
  164. #define sk_ASN1_GENERALSTRING_zero(sk) \
  165. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk));
  166. #define sk_ASN1_GENERALSTRING_value(sk, i) \
  167. ((ASN1_GENERALSTRING *)sk_value( \
  168. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk), \
  169. (i)))
  170. #define sk_ASN1_GENERALSTRING_set(sk, i, p) \
  171. ((ASN1_GENERALSTRING *)sk_set( \
  172. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), (i), \
  173. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p)))
  174. #define sk_ASN1_GENERALSTRING_free(sk) \
  175. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk))
  176. #define sk_ASN1_GENERALSTRING_pop_free(sk, free_func) \
  177. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  178. CHECKED_CAST(void (*)(void *), void (*)(ASN1_GENERALSTRING *), \
  179. free_func))
  180. #define sk_ASN1_GENERALSTRING_insert(sk, p, where) \
  181. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  182. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p), (where))
  183. #define sk_ASN1_GENERALSTRING_delete(sk, where) \
  184. ((ASN1_GENERALSTRING *)sk_delete( \
  185. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), (where)))
  186. #define sk_ASN1_GENERALSTRING_delete_ptr(sk, p) \
  187. ((ASN1_GENERALSTRING *)sk_delete_ptr( \
  188. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  189. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p)))
  190. #define sk_ASN1_GENERALSTRING_find(sk, out_index, p) \
  191. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  192. (out_index), CHECKED_CAST(void *, ASN1_GENERALSTRING *, p))
  193. #define sk_ASN1_GENERALSTRING_shift(sk) \
  194. ((ASN1_GENERALSTRING *)sk_shift( \
  195. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk)))
  196. #define sk_ASN1_GENERALSTRING_push(sk, p) \
  197. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  198. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p))
  199. #define sk_ASN1_GENERALSTRING_pop(sk) \
  200. ((ASN1_GENERALSTRING *)sk_pop( \
  201. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk)))
  202. #define sk_ASN1_GENERALSTRING_dup(sk) \
  203. ((STACK_OF(ASN1_GENERALSTRING) *)sk_dup( \
  204. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk)))
  205. #define sk_ASN1_GENERALSTRING_sort(sk) \
  206. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk))
  207. #define sk_ASN1_GENERALSTRING_is_sorted(sk) \
  208. sk_is_sorted( \
  209. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk))
  210. #define sk_ASN1_GENERALSTRING_set_cmp_func(sk, comp) \
  211. ((int (*)(const ASN1_GENERALSTRING **a, const ASN1_GENERALSTRING **b)) \
  212. sk_set_cmp_func( \
  213. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  214. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_GENERALSTRING **a, \
  215. const ASN1_GENERALSTRING **b), \
  216. comp)))
  217. #define sk_ASN1_GENERALSTRING_deep_copy(sk, copy_func, free_func) \
  218. ((STACK_OF(ASN1_GENERALSTRING) *)sk_deep_copy( \
  219. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk), \
  220. CHECKED_CAST(void *(*)(void *), \
  221. ASN1_GENERALSTRING *(*)(ASN1_GENERALSTRING *), copy_func), \
  222. CHECKED_CAST(void (*)(void *), void (*)(ASN1_GENERALSTRING *), \
  223. free_func)))
  224. /* ASN1_INTEGER */
  225. #define sk_ASN1_INTEGER_new(comp) \
  226. ((STACK_OF(ASN1_INTEGER) *)sk_new(CHECKED_CAST( \
  227. stack_cmp_func, int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b), \
  228. comp)))
  229. #define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)sk_new_null())
  230. #define sk_ASN1_INTEGER_num(sk) \
  231. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk))
  232. #define sk_ASN1_INTEGER_zero(sk) \
  233. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk));
  234. #define sk_ASN1_INTEGER_value(sk, i) \
  235. ((ASN1_INTEGER *)sk_value( \
  236. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk), (i)))
  237. #define sk_ASN1_INTEGER_set(sk, i, p) \
  238. ((ASN1_INTEGER *)sk_set( \
  239. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (i), \
  240. CHECKED_CAST(void *, ASN1_INTEGER *, p)))
  241. #define sk_ASN1_INTEGER_free(sk) \
  242. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk))
  243. #define sk_ASN1_INTEGER_pop_free(sk, free_func) \
  244. sk_pop_free( \
  245. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  246. CHECKED_CAST(void (*)(void *), void (*)(ASN1_INTEGER *), free_func))
  247. #define sk_ASN1_INTEGER_insert(sk, p, where) \
  248. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  249. CHECKED_CAST(void *, ASN1_INTEGER *, p), (where))
  250. #define sk_ASN1_INTEGER_delete(sk, where) \
  251. ((ASN1_INTEGER *)sk_delete( \
  252. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (where)))
  253. #define sk_ASN1_INTEGER_delete_ptr(sk, p) \
  254. ((ASN1_INTEGER *)sk_delete_ptr( \
  255. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  256. CHECKED_CAST(void *, ASN1_INTEGER *, p)))
  257. #define sk_ASN1_INTEGER_find(sk, out_index, p) \
  258. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (out_index), \
  259. CHECKED_CAST(void *, ASN1_INTEGER *, p))
  260. #define sk_ASN1_INTEGER_shift(sk) \
  261. ((ASN1_INTEGER *)sk_shift( \
  262. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk)))
  263. #define sk_ASN1_INTEGER_push(sk, p) \
  264. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  265. CHECKED_CAST(void *, ASN1_INTEGER *, p))
  266. #define sk_ASN1_INTEGER_pop(sk) \
  267. ((ASN1_INTEGER *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk)))
  268. #define sk_ASN1_INTEGER_dup(sk) \
  269. ((STACK_OF(ASN1_INTEGER) *)sk_dup( \
  270. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk)))
  271. #define sk_ASN1_INTEGER_sort(sk) \
  272. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk))
  273. #define sk_ASN1_INTEGER_is_sorted(sk) \
  274. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk))
  275. #define sk_ASN1_INTEGER_set_cmp_func(sk, comp) \
  276. ((int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b))sk_set_cmp_func( \
  277. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  278. CHECKED_CAST(stack_cmp_func, \
  279. int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b), \
  280. comp)))
  281. #define sk_ASN1_INTEGER_deep_copy(sk, copy_func, free_func) \
  282. ((STACK_OF(ASN1_INTEGER) *)sk_deep_copy( \
  283. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk), \
  284. CHECKED_CAST(void *(*)(void *), ASN1_INTEGER *(*)(ASN1_INTEGER *), \
  285. copy_func), \
  286. CHECKED_CAST(void (*)(void *), void (*)(ASN1_INTEGER *), free_func)))
  287. /* ASN1_OBJECT */
  288. #define sk_ASN1_OBJECT_new(comp) \
  289. ((STACK_OF(ASN1_OBJECT) *)sk_new(CHECKED_CAST( \
  290. stack_cmp_func, int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b), \
  291. comp)))
  292. #define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)sk_new_null())
  293. #define sk_ASN1_OBJECT_num(sk) \
  294. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk))
  295. #define sk_ASN1_OBJECT_zero(sk) \
  296. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk));
  297. #define sk_ASN1_OBJECT_value(sk, i) \
  298. ((ASN1_OBJECT *)sk_value( \
  299. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk), (i)))
  300. #define sk_ASN1_OBJECT_set(sk, i, p) \
  301. ((ASN1_OBJECT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  302. (i), CHECKED_CAST(void *, ASN1_OBJECT *, p)))
  303. #define sk_ASN1_OBJECT_free(sk) \
  304. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk))
  305. #define sk_ASN1_OBJECT_pop_free(sk, free_func) \
  306. sk_pop_free( \
  307. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  308. CHECKED_CAST(void (*)(void *), void (*)(ASN1_OBJECT *), free_func))
  309. #define sk_ASN1_OBJECT_insert(sk, p, where) \
  310. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  311. CHECKED_CAST(void *, ASN1_OBJECT *, p), (where))
  312. #define sk_ASN1_OBJECT_delete(sk, where) \
  313. ((ASN1_OBJECT *)sk_delete( \
  314. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), (where)))
  315. #define sk_ASN1_OBJECT_delete_ptr(sk, p) \
  316. ((ASN1_OBJECT *)sk_delete_ptr( \
  317. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  318. CHECKED_CAST(void *, ASN1_OBJECT *, p)))
  319. #define sk_ASN1_OBJECT_find(sk, out_index, p) \
  320. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), (out_index), \
  321. CHECKED_CAST(void *, ASN1_OBJECT *, p))
  322. #define sk_ASN1_OBJECT_shift(sk) \
  323. ((ASN1_OBJECT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk)))
  324. #define sk_ASN1_OBJECT_push(sk, p) \
  325. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  326. CHECKED_CAST(void *, ASN1_OBJECT *, p))
  327. #define sk_ASN1_OBJECT_pop(sk) \
  328. ((ASN1_OBJECT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk)))
  329. #define sk_ASN1_OBJECT_dup(sk) \
  330. ((STACK_OF(ASN1_OBJECT) *)sk_dup( \
  331. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk)))
  332. #define sk_ASN1_OBJECT_sort(sk) \
  333. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk))
  334. #define sk_ASN1_OBJECT_is_sorted(sk) \
  335. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk))
  336. #define sk_ASN1_OBJECT_set_cmp_func(sk, comp) \
  337. ((int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b))sk_set_cmp_func( \
  338. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  339. CHECKED_CAST(stack_cmp_func, \
  340. int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b), \
  341. comp)))
  342. #define sk_ASN1_OBJECT_deep_copy(sk, copy_func, free_func) \
  343. ((STACK_OF(ASN1_OBJECT) *)sk_deep_copy( \
  344. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk), \
  345. CHECKED_CAST(void *(*)(void *), ASN1_OBJECT *(*)(ASN1_OBJECT *), \
  346. copy_func), \
  347. CHECKED_CAST(void (*)(void *), void (*)(ASN1_OBJECT *), free_func)))
  348. /* ASN1_STRING_TABLE */
  349. #define sk_ASN1_STRING_TABLE_new(comp) \
  350. ((STACK_OF(ASN1_STRING_TABLE) *)sk_new(CHECKED_CAST( \
  351. stack_cmp_func, \
  352. int (*)(const ASN1_STRING_TABLE **a, const ASN1_STRING_TABLE **b), \
  353. comp)))
  354. #define sk_ASN1_STRING_TABLE_new_null() \
  355. ((STACK_OF(ASN1_STRING_TABLE) *)sk_new_null())
  356. #define sk_ASN1_STRING_TABLE_num(sk) \
  357. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk))
  358. #define sk_ASN1_STRING_TABLE_zero(sk) \
  359. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk));
  360. #define sk_ASN1_STRING_TABLE_value(sk, i) \
  361. ((ASN1_STRING_TABLE *)sk_value( \
  362. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk), \
  363. (i)))
  364. #define sk_ASN1_STRING_TABLE_set(sk, i, p) \
  365. ((ASN1_STRING_TABLE *)sk_set( \
  366. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), (i), \
  367. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p)))
  368. #define sk_ASN1_STRING_TABLE_free(sk) \
  369. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk))
  370. #define sk_ASN1_STRING_TABLE_pop_free(sk, free_func) \
  371. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  372. CHECKED_CAST(void (*)(void *), void (*)(ASN1_STRING_TABLE *), \
  373. free_func))
  374. #define sk_ASN1_STRING_TABLE_insert(sk, p, where) \
  375. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  376. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p), (where))
  377. #define sk_ASN1_STRING_TABLE_delete(sk, where) \
  378. ((ASN1_STRING_TABLE *)sk_delete( \
  379. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), (where)))
  380. #define sk_ASN1_STRING_TABLE_delete_ptr(sk, p) \
  381. ((ASN1_STRING_TABLE *)sk_delete_ptr( \
  382. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  383. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p)))
  384. #define sk_ASN1_STRING_TABLE_find(sk, out_index, p) \
  385. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  386. (out_index), CHECKED_CAST(void *, ASN1_STRING_TABLE *, p))
  387. #define sk_ASN1_STRING_TABLE_shift(sk) \
  388. ((ASN1_STRING_TABLE *)sk_shift( \
  389. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk)))
  390. #define sk_ASN1_STRING_TABLE_push(sk, p) \
  391. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  392. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p))
  393. #define sk_ASN1_STRING_TABLE_pop(sk) \
  394. ((ASN1_STRING_TABLE *)sk_pop( \
  395. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk)))
  396. #define sk_ASN1_STRING_TABLE_dup(sk) \
  397. ((STACK_OF(ASN1_STRING_TABLE) *)sk_dup( \
  398. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk)))
  399. #define sk_ASN1_STRING_TABLE_sort(sk) \
  400. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk))
  401. #define sk_ASN1_STRING_TABLE_is_sorted(sk) \
  402. sk_is_sorted( \
  403. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk))
  404. #define sk_ASN1_STRING_TABLE_set_cmp_func(sk, comp) \
  405. ((int (*)(const ASN1_STRING_TABLE **a, const ASN1_STRING_TABLE **b)) \
  406. sk_set_cmp_func( \
  407. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  408. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_STRING_TABLE **a, \
  409. const ASN1_STRING_TABLE **b), \
  410. comp)))
  411. #define sk_ASN1_STRING_TABLE_deep_copy(sk, copy_func, free_func) \
  412. ((STACK_OF(ASN1_STRING_TABLE) *)sk_deep_copy( \
  413. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk), \
  414. CHECKED_CAST(void *(*)(void *), \
  415. ASN1_STRING_TABLE *(*)(ASN1_STRING_TABLE *), copy_func), \
  416. CHECKED_CAST(void (*)(void *), void (*)(ASN1_STRING_TABLE *), \
  417. free_func)))
  418. /* ASN1_TYPE */
  419. #define sk_ASN1_TYPE_new(comp) \
  420. ((STACK_OF(ASN1_TYPE) *)sk_new( \
  421. CHECKED_CAST(stack_cmp_func, \
  422. int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b), comp)))
  423. #define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)sk_new_null())
  424. #define sk_ASN1_TYPE_num(sk) \
  425. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk))
  426. #define sk_ASN1_TYPE_zero(sk) \
  427. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk));
  428. #define sk_ASN1_TYPE_value(sk, i) \
  429. ((ASN1_TYPE *)sk_value( \
  430. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk), (i)))
  431. #define sk_ASN1_TYPE_set(sk, i, p) \
  432. ((ASN1_TYPE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), (i), \
  433. CHECKED_CAST(void *, ASN1_TYPE *, p)))
  434. #define sk_ASN1_TYPE_free(sk) \
  435. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk))
  436. #define sk_ASN1_TYPE_pop_free(sk, free_func) \
  437. sk_pop_free( \
  438. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  439. CHECKED_CAST(void (*)(void *), void (*)(ASN1_TYPE *), free_func))
  440. #define sk_ASN1_TYPE_insert(sk, p, where) \
  441. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  442. CHECKED_CAST(void *, ASN1_TYPE *, p), (where))
  443. #define sk_ASN1_TYPE_delete(sk, where) \
  444. ((ASN1_TYPE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  445. (where)))
  446. #define sk_ASN1_TYPE_delete_ptr(sk, p) \
  447. ((ASN1_TYPE *)sk_delete_ptr( \
  448. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  449. CHECKED_CAST(void *, ASN1_TYPE *, p)))
  450. #define sk_ASN1_TYPE_find(sk, out_index, p) \
  451. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), (out_index), \
  452. CHECKED_CAST(void *, ASN1_TYPE *, p))
  453. #define sk_ASN1_TYPE_shift(sk) \
  454. ((ASN1_TYPE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk)))
  455. #define sk_ASN1_TYPE_push(sk, p) \
  456. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  457. CHECKED_CAST(void *, ASN1_TYPE *, p))
  458. #define sk_ASN1_TYPE_pop(sk) \
  459. ((ASN1_TYPE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk)))
  460. #define sk_ASN1_TYPE_dup(sk) \
  461. ((STACK_OF(ASN1_TYPE) *)sk_dup( \
  462. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk)))
  463. #define sk_ASN1_TYPE_sort(sk) \
  464. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk))
  465. #define sk_ASN1_TYPE_is_sorted(sk) \
  466. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk))
  467. #define sk_ASN1_TYPE_set_cmp_func(sk, comp) \
  468. ((int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b))sk_set_cmp_func( \
  469. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  470. CHECKED_CAST(stack_cmp_func, \
  471. int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b), comp)))
  472. #define sk_ASN1_TYPE_deep_copy(sk, copy_func, free_func) \
  473. ((STACK_OF(ASN1_TYPE) *)sk_deep_copy( \
  474. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk), \
  475. CHECKED_CAST(void *(*)(void *), ASN1_TYPE *(*)(ASN1_TYPE *), copy_func), \
  476. CHECKED_CAST(void (*)(void *), void (*)(ASN1_TYPE *), free_func)))
  477. /* ASN1_VALUE */
  478. #define sk_ASN1_VALUE_new(comp) \
  479. ((STACK_OF(ASN1_VALUE) *)sk_new(CHECKED_CAST( \
  480. stack_cmp_func, int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b), \
  481. comp)))
  482. #define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)sk_new_null())
  483. #define sk_ASN1_VALUE_num(sk) \
  484. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk))
  485. #define sk_ASN1_VALUE_zero(sk) \
  486. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk));
  487. #define sk_ASN1_VALUE_value(sk, i) \
  488. ((ASN1_VALUE *)sk_value( \
  489. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk), (i)))
  490. #define sk_ASN1_VALUE_set(sk, i, p) \
  491. ((ASN1_VALUE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  492. (i), CHECKED_CAST(void *, ASN1_VALUE *, p)))
  493. #define sk_ASN1_VALUE_free(sk) \
  494. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk))
  495. #define sk_ASN1_VALUE_pop_free(sk, free_func) \
  496. sk_pop_free( \
  497. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  498. CHECKED_CAST(void (*)(void *), void (*)(ASN1_VALUE *), free_func))
  499. #define sk_ASN1_VALUE_insert(sk, p, where) \
  500. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  501. CHECKED_CAST(void *, ASN1_VALUE *, p), (where))
  502. #define sk_ASN1_VALUE_delete(sk, where) \
  503. ((ASN1_VALUE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  504. (where)))
  505. #define sk_ASN1_VALUE_delete_ptr(sk, p) \
  506. ((ASN1_VALUE *)sk_delete_ptr( \
  507. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  508. CHECKED_CAST(void *, ASN1_VALUE *, p)))
  509. #define sk_ASN1_VALUE_find(sk, out_index, p) \
  510. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), (out_index), \
  511. CHECKED_CAST(void *, ASN1_VALUE *, p))
  512. #define sk_ASN1_VALUE_shift(sk) \
  513. ((ASN1_VALUE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk)))
  514. #define sk_ASN1_VALUE_push(sk, p) \
  515. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  516. CHECKED_CAST(void *, ASN1_VALUE *, p))
  517. #define sk_ASN1_VALUE_pop(sk) \
  518. ((ASN1_VALUE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk)))
  519. #define sk_ASN1_VALUE_dup(sk) \
  520. ((STACK_OF(ASN1_VALUE) *)sk_dup( \
  521. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk)))
  522. #define sk_ASN1_VALUE_sort(sk) \
  523. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk))
  524. #define sk_ASN1_VALUE_is_sorted(sk) \
  525. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk))
  526. #define sk_ASN1_VALUE_set_cmp_func(sk, comp) \
  527. ((int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b))sk_set_cmp_func( \
  528. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  529. CHECKED_CAST(stack_cmp_func, \
  530. int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b), \
  531. comp)))
  532. #define sk_ASN1_VALUE_deep_copy(sk, copy_func, free_func) \
  533. ((STACK_OF(ASN1_VALUE) *)sk_deep_copy( \
  534. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk), \
  535. CHECKED_CAST(void *(*)(void *), ASN1_VALUE *(*)(ASN1_VALUE *), \
  536. copy_func), \
  537. CHECKED_CAST(void (*)(void *), void (*)(ASN1_VALUE *), free_func)))
  538. /* BIO */
  539. #define sk_BIO_new(comp) \
  540. ((STACK_OF(BIO) *)sk_new(CHECKED_CAST( \
  541. stack_cmp_func, int (*)(const BIO **a, const BIO **b), comp)))
  542. #define sk_BIO_new_null() ((STACK_OF(BIO) *)sk_new_null())
  543. #define sk_BIO_num(sk) \
  544. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk))
  545. #define sk_BIO_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk));
  546. #define sk_BIO_value(sk, i) \
  547. ((BIO *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk), \
  548. (i)))
  549. #define sk_BIO_set(sk, i, p) \
  550. ((BIO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (i), \
  551. CHECKED_CAST(void *, BIO *, p)))
  552. #define sk_BIO_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk))
  553. #define sk_BIO_pop_free(sk, free_func) \
  554. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  555. CHECKED_CAST(void (*)(void *), void (*)(BIO *), free_func))
  556. #define sk_BIO_insert(sk, p, where) \
  557. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  558. CHECKED_CAST(void *, BIO *, p), (where))
  559. #define sk_BIO_delete(sk, where) \
  560. ((BIO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (where)))
  561. #define sk_BIO_delete_ptr(sk, p) \
  562. ((BIO *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  563. CHECKED_CAST(void *, BIO *, p)))
  564. #define sk_BIO_find(sk, out_index, p) \
  565. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (out_index), \
  566. CHECKED_CAST(void *, BIO *, p))
  567. #define sk_BIO_shift(sk) \
  568. ((BIO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk)))
  569. #define sk_BIO_push(sk, p) \
  570. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  571. CHECKED_CAST(void *, BIO *, p))
  572. #define sk_BIO_pop(sk) \
  573. ((BIO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk)))
  574. #define sk_BIO_dup(sk) \
  575. ((STACK_OF(BIO) *)sk_dup( \
  576. CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk)))
  577. #define sk_BIO_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk))
  578. #define sk_BIO_is_sorted(sk) \
  579. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk))
  580. #define sk_BIO_set_cmp_func(sk, comp) \
  581. ((int (*)(const BIO **a, const BIO **b))sk_set_cmp_func( \
  582. CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  583. CHECKED_CAST(stack_cmp_func, int (*)(const BIO **a, const BIO **b), \
  584. comp)))
  585. #define sk_BIO_deep_copy(sk, copy_func, free_func) \
  586. ((STACK_OF(BIO) *)sk_deep_copy( \
  587. CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk), \
  588. CHECKED_CAST(void *(*)(void *), BIO *(*)(BIO *), copy_func), \
  589. CHECKED_CAST(void (*)(void *), void (*)(BIO *), free_func)))
  590. /* BY_DIR_ENTRY */
  591. #define sk_BY_DIR_ENTRY_new(comp) \
  592. ((STACK_OF(BY_DIR_ENTRY) *)sk_new(CHECKED_CAST( \
  593. stack_cmp_func, int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b), \
  594. comp)))
  595. #define sk_BY_DIR_ENTRY_new_null() ((STACK_OF(BY_DIR_ENTRY) *)sk_new_null())
  596. #define sk_BY_DIR_ENTRY_num(sk) \
  597. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk))
  598. #define sk_BY_DIR_ENTRY_zero(sk) \
  599. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk));
  600. #define sk_BY_DIR_ENTRY_value(sk, i) \
  601. ((BY_DIR_ENTRY *)sk_value( \
  602. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk), (i)))
  603. #define sk_BY_DIR_ENTRY_set(sk, i, p) \
  604. ((BY_DIR_ENTRY *)sk_set( \
  605. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (i), \
  606. CHECKED_CAST(void *, BY_DIR_ENTRY *, p)))
  607. #define sk_BY_DIR_ENTRY_free(sk) \
  608. sk_free(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk))
  609. #define sk_BY_DIR_ENTRY_pop_free(sk, free_func) \
  610. sk_pop_free( \
  611. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  612. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_ENTRY *), free_func))
  613. #define sk_BY_DIR_ENTRY_insert(sk, p, where) \
  614. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  615. CHECKED_CAST(void *, BY_DIR_ENTRY *, p), (where))
  616. #define sk_BY_DIR_ENTRY_delete(sk, where) \
  617. ((BY_DIR_ENTRY *)sk_delete( \
  618. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (where)))
  619. #define sk_BY_DIR_ENTRY_delete_ptr(sk, p) \
  620. ((BY_DIR_ENTRY *)sk_delete_ptr( \
  621. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  622. CHECKED_CAST(void *, BY_DIR_ENTRY *, p)))
  623. #define sk_BY_DIR_ENTRY_find(sk, out_index, p) \
  624. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (out_index), \
  625. CHECKED_CAST(void *, BY_DIR_ENTRY *, p))
  626. #define sk_BY_DIR_ENTRY_shift(sk) \
  627. ((BY_DIR_ENTRY *)sk_shift( \
  628. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk)))
  629. #define sk_BY_DIR_ENTRY_push(sk, p) \
  630. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  631. CHECKED_CAST(void *, BY_DIR_ENTRY *, p))
  632. #define sk_BY_DIR_ENTRY_pop(sk) \
  633. ((BY_DIR_ENTRY *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk)))
  634. #define sk_BY_DIR_ENTRY_dup(sk) \
  635. ((STACK_OF(BY_DIR_ENTRY) *)sk_dup( \
  636. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk)))
  637. #define sk_BY_DIR_ENTRY_sort(sk) \
  638. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk))
  639. #define sk_BY_DIR_ENTRY_is_sorted(sk) \
  640. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk))
  641. #define sk_BY_DIR_ENTRY_set_cmp_func(sk, comp) \
  642. ((int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b))sk_set_cmp_func( \
  643. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  644. CHECKED_CAST(stack_cmp_func, \
  645. int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b), \
  646. comp)))
  647. #define sk_BY_DIR_ENTRY_deep_copy(sk, copy_func, free_func) \
  648. ((STACK_OF(BY_DIR_ENTRY) *)sk_deep_copy( \
  649. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk), \
  650. CHECKED_CAST(void *(*)(void *), BY_DIR_ENTRY *(*)(BY_DIR_ENTRY *), \
  651. copy_func), \
  652. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_ENTRY *), free_func)))
  653. /* BY_DIR_HASH */
  654. #define sk_BY_DIR_HASH_new(comp) \
  655. ((STACK_OF(BY_DIR_HASH) *)sk_new(CHECKED_CAST( \
  656. stack_cmp_func, int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b), \
  657. comp)))
  658. #define sk_BY_DIR_HASH_new_null() ((STACK_OF(BY_DIR_HASH) *)sk_new_null())
  659. #define sk_BY_DIR_HASH_num(sk) \
  660. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk))
  661. #define sk_BY_DIR_HASH_zero(sk) \
  662. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk));
  663. #define sk_BY_DIR_HASH_value(sk, i) \
  664. ((BY_DIR_HASH *)sk_value( \
  665. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk), (i)))
  666. #define sk_BY_DIR_HASH_set(sk, i, p) \
  667. ((BY_DIR_HASH *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  668. (i), CHECKED_CAST(void *, BY_DIR_HASH *, p)))
  669. #define sk_BY_DIR_HASH_free(sk) \
  670. sk_free(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk))
  671. #define sk_BY_DIR_HASH_pop_free(sk, free_func) \
  672. sk_pop_free( \
  673. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  674. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_HASH *), free_func))
  675. #define sk_BY_DIR_HASH_insert(sk, p, where) \
  676. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  677. CHECKED_CAST(void *, BY_DIR_HASH *, p), (where))
  678. #define sk_BY_DIR_HASH_delete(sk, where) \
  679. ((BY_DIR_HASH *)sk_delete( \
  680. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), (where)))
  681. #define sk_BY_DIR_HASH_delete_ptr(sk, p) \
  682. ((BY_DIR_HASH *)sk_delete_ptr( \
  683. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  684. CHECKED_CAST(void *, BY_DIR_HASH *, p)))
  685. #define sk_BY_DIR_HASH_find(sk, out_index, p) \
  686. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), (out_index), \
  687. CHECKED_CAST(void *, BY_DIR_HASH *, p))
  688. #define sk_BY_DIR_HASH_shift(sk) \
  689. ((BY_DIR_HASH *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk)))
  690. #define sk_BY_DIR_HASH_push(sk, p) \
  691. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  692. CHECKED_CAST(void *, BY_DIR_HASH *, p))
  693. #define sk_BY_DIR_HASH_pop(sk) \
  694. ((BY_DIR_HASH *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk)))
  695. #define sk_BY_DIR_HASH_dup(sk) \
  696. ((STACK_OF(BY_DIR_HASH) *)sk_dup( \
  697. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk)))
  698. #define sk_BY_DIR_HASH_sort(sk) \
  699. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk))
  700. #define sk_BY_DIR_HASH_is_sorted(sk) \
  701. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk))
  702. #define sk_BY_DIR_HASH_set_cmp_func(sk, comp) \
  703. ((int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b))sk_set_cmp_func( \
  704. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  705. CHECKED_CAST(stack_cmp_func, \
  706. int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b), \
  707. comp)))
  708. #define sk_BY_DIR_HASH_deep_copy(sk, copy_func, free_func) \
  709. ((STACK_OF(BY_DIR_HASH) *)sk_deep_copy( \
  710. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk), \
  711. CHECKED_CAST(void *(*)(void *), BY_DIR_HASH *(*)(BY_DIR_HASH *), \
  712. copy_func), \
  713. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_HASH *), free_func)))
  714. /* CONF_VALUE */
  715. #define sk_CONF_VALUE_new(comp) \
  716. ((STACK_OF(CONF_VALUE) *)sk_new(CHECKED_CAST( \
  717. stack_cmp_func, int (*)(const CONF_VALUE **a, const CONF_VALUE **b), \
  718. comp)))
  719. #define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)sk_new_null())
  720. #define sk_CONF_VALUE_num(sk) \
  721. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk))
  722. #define sk_CONF_VALUE_zero(sk) \
  723. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk));
  724. #define sk_CONF_VALUE_value(sk, i) \
  725. ((CONF_VALUE *)sk_value( \
  726. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk), (i)))
  727. #define sk_CONF_VALUE_set(sk, i, p) \
  728. ((CONF_VALUE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  729. (i), CHECKED_CAST(void *, CONF_VALUE *, p)))
  730. #define sk_CONF_VALUE_free(sk) \
  731. sk_free(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk))
  732. #define sk_CONF_VALUE_pop_free(sk, free_func) \
  733. sk_pop_free( \
  734. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  735. CHECKED_CAST(void (*)(void *), void (*)(CONF_VALUE *), free_func))
  736. #define sk_CONF_VALUE_insert(sk, p, where) \
  737. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  738. CHECKED_CAST(void *, CONF_VALUE *, p), (where))
  739. #define sk_CONF_VALUE_delete(sk, where) \
  740. ((CONF_VALUE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  741. (where)))
  742. #define sk_CONF_VALUE_delete_ptr(sk, p) \
  743. ((CONF_VALUE *)sk_delete_ptr( \
  744. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  745. CHECKED_CAST(void *, CONF_VALUE *, p)))
  746. #define sk_CONF_VALUE_find(sk, out_index, p) \
  747. sk_find(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), (out_index), \
  748. CHECKED_CAST(void *, CONF_VALUE *, p))
  749. #define sk_CONF_VALUE_shift(sk) \
  750. ((CONF_VALUE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk)))
  751. #define sk_CONF_VALUE_push(sk, p) \
  752. sk_push(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  753. CHECKED_CAST(void *, CONF_VALUE *, p))
  754. #define sk_CONF_VALUE_pop(sk) \
  755. ((CONF_VALUE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk)))
  756. #define sk_CONF_VALUE_dup(sk) \
  757. ((STACK_OF(CONF_VALUE) *)sk_dup( \
  758. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk)))
  759. #define sk_CONF_VALUE_sort(sk) \
  760. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk))
  761. #define sk_CONF_VALUE_is_sorted(sk) \
  762. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk))
  763. #define sk_CONF_VALUE_set_cmp_func(sk, comp) \
  764. ((int (*)(const CONF_VALUE **a, const CONF_VALUE **b))sk_set_cmp_func( \
  765. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  766. CHECKED_CAST(stack_cmp_func, \
  767. int (*)(const CONF_VALUE **a, const CONF_VALUE **b), \
  768. comp)))
  769. #define sk_CONF_VALUE_deep_copy(sk, copy_func, free_func) \
  770. ((STACK_OF(CONF_VALUE) *)sk_deep_copy( \
  771. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk), \
  772. CHECKED_CAST(void *(*)(void *), CONF_VALUE *(*)(CONF_VALUE *), \
  773. copy_func), \
  774. CHECKED_CAST(void (*)(void *), void (*)(CONF_VALUE *), free_func)))
  775. /* CRYPTO_BUFFER */
  776. #define sk_CRYPTO_BUFFER_new(comp) \
  777. ((STACK_OF(CRYPTO_BUFFER) *)sk_new(CHECKED_CAST( \
  778. stack_cmp_func, \
  779. int (*)(const CRYPTO_BUFFER **a, const CRYPTO_BUFFER **b), comp)))
  780. #define sk_CRYPTO_BUFFER_new_null() ((STACK_OF(CRYPTO_BUFFER) *)sk_new_null())
  781. #define sk_CRYPTO_BUFFER_num(sk) \
  782. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_BUFFER) *, sk))
  783. #define sk_CRYPTO_BUFFER_zero(sk) \
  784. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk));
  785. #define sk_CRYPTO_BUFFER_value(sk, i) \
  786. ((CRYPTO_BUFFER *)sk_value( \
  787. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_BUFFER) *, sk), (i)))
  788. #define sk_CRYPTO_BUFFER_set(sk, i, p) \
  789. ((CRYPTO_BUFFER *)sk_set( \
  790. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), (i), \
  791. CHECKED_CAST(void *, CRYPTO_BUFFER *, p)))
  792. #define sk_CRYPTO_BUFFER_free(sk) \
  793. sk_free(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk))
  794. #define sk_CRYPTO_BUFFER_pop_free(sk, free_func) \
  795. sk_pop_free( \
  796. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), \
  797. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_BUFFER *), free_func))
  798. #define sk_CRYPTO_BUFFER_insert(sk, p, where) \
  799. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), \
  800. CHECKED_CAST(void *, CRYPTO_BUFFER *, p), (where))
  801. #define sk_CRYPTO_BUFFER_delete(sk, where) \
  802. ((CRYPTO_BUFFER *)sk_delete( \
  803. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), (where)))
  804. #define sk_CRYPTO_BUFFER_delete_ptr(sk, p) \
  805. ((CRYPTO_BUFFER *)sk_delete_ptr( \
  806. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), \
  807. CHECKED_CAST(void *, CRYPTO_BUFFER *, p)))
  808. #define sk_CRYPTO_BUFFER_find(sk, out_index, p) \
  809. sk_find(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), (out_index), \
  810. CHECKED_CAST(void *, CRYPTO_BUFFER *, p))
  811. #define sk_CRYPTO_BUFFER_shift(sk) \
  812. ((CRYPTO_BUFFER *)sk_shift( \
  813. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk)))
  814. #define sk_CRYPTO_BUFFER_push(sk, p) \
  815. sk_push(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), \
  816. CHECKED_CAST(void *, CRYPTO_BUFFER *, p))
  817. #define sk_CRYPTO_BUFFER_pop(sk) \
  818. ((CRYPTO_BUFFER *)sk_pop( \
  819. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk)))
  820. #define sk_CRYPTO_BUFFER_dup(sk) \
  821. ((STACK_OF(CRYPTO_BUFFER) *)sk_dup( \
  822. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_BUFFER) *, sk)))
  823. #define sk_CRYPTO_BUFFER_sort(sk) \
  824. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk))
  825. #define sk_CRYPTO_BUFFER_is_sorted(sk) \
  826. sk_is_sorted( \
  827. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_BUFFER) *, sk))
  828. #define sk_CRYPTO_BUFFER_set_cmp_func(sk, comp) \
  829. ((int (*)(const CRYPTO_BUFFER **a, const CRYPTO_BUFFER **b))sk_set_cmp_func( \
  830. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_BUFFER) *, sk), \
  831. CHECKED_CAST(stack_cmp_func, \
  832. int (*)(const CRYPTO_BUFFER **a, const CRYPTO_BUFFER **b), \
  833. comp)))
  834. #define sk_CRYPTO_BUFFER_deep_copy(sk, copy_func, free_func) \
  835. ((STACK_OF(CRYPTO_BUFFER) *)sk_deep_copy( \
  836. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_BUFFER) *, sk), \
  837. CHECKED_CAST(void *(*)(void *), CRYPTO_BUFFER *(*)(CRYPTO_BUFFER *), \
  838. copy_func), \
  839. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_BUFFER *), free_func)))
  840. /* CRYPTO_EX_DATA_FUNCS */
  841. #define sk_CRYPTO_EX_DATA_FUNCS_new(comp) \
  842. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_new(CHECKED_CAST( \
  843. stack_cmp_func, \
  844. int (*)(const CRYPTO_EX_DATA_FUNCS **a, const CRYPTO_EX_DATA_FUNCS **b), \
  845. comp)))
  846. #define sk_CRYPTO_EX_DATA_FUNCS_new_null() \
  847. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_new_null())
  848. #define sk_CRYPTO_EX_DATA_FUNCS_num(sk) \
  849. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  850. sk))
  851. #define sk_CRYPTO_EX_DATA_FUNCS_zero(sk) \
  852. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk));
  853. #define sk_CRYPTO_EX_DATA_FUNCS_value(sk, i) \
  854. ((CRYPTO_EX_DATA_FUNCS *)sk_value( \
  855. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  856. sk), \
  857. (i)))
  858. #define sk_CRYPTO_EX_DATA_FUNCS_set(sk, i, p) \
  859. ((CRYPTO_EX_DATA_FUNCS *)sk_set( \
  860. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), (i), \
  861. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p)))
  862. #define sk_CRYPTO_EX_DATA_FUNCS_free(sk) \
  863. sk_free(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  864. #define sk_CRYPTO_EX_DATA_FUNCS_pop_free(sk, free_func) \
  865. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  866. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_EX_DATA_FUNCS *), \
  867. free_func))
  868. #define sk_CRYPTO_EX_DATA_FUNCS_insert(sk, p, where) \
  869. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  870. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p), (where))
  871. #define sk_CRYPTO_EX_DATA_FUNCS_delete(sk, where) \
  872. ((CRYPTO_EX_DATA_FUNCS *)sk_delete( \
  873. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), (where)))
  874. #define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(sk, p) \
  875. ((CRYPTO_EX_DATA_FUNCS *)sk_delete_ptr( \
  876. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  877. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p)))
  878. #define sk_CRYPTO_EX_DATA_FUNCS_find(sk, out_index, p) \
  879. sk_find(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  880. (out_index), CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p))
  881. #define sk_CRYPTO_EX_DATA_FUNCS_shift(sk) \
  882. ((CRYPTO_EX_DATA_FUNCS *)sk_shift( \
  883. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  884. #define sk_CRYPTO_EX_DATA_FUNCS_push(sk, p) \
  885. sk_push(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  886. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p))
  887. #define sk_CRYPTO_EX_DATA_FUNCS_pop(sk) \
  888. ((CRYPTO_EX_DATA_FUNCS *)sk_pop( \
  889. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  890. #define sk_CRYPTO_EX_DATA_FUNCS_dup(sk) \
  891. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_dup(CHECKED_CAST( \
  892. const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  893. #define sk_CRYPTO_EX_DATA_FUNCS_sort(sk) \
  894. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  895. #define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(sk) \
  896. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  897. const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  898. #define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(sk, comp) \
  899. ((int (*)(const CRYPTO_EX_DATA_FUNCS **a, const CRYPTO_EX_DATA_FUNCS **b)) \
  900. sk_set_cmp_func( \
  901. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  902. CHECKED_CAST(stack_cmp_func, \
  903. int (*)(const CRYPTO_EX_DATA_FUNCS **a, \
  904. const CRYPTO_EX_DATA_FUNCS **b), \
  905. comp)))
  906. #define sk_CRYPTO_EX_DATA_FUNCS_deep_copy(sk, copy_func, free_func) \
  907. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_deep_copy( \
  908. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  909. sk), \
  910. CHECKED_CAST(void *(*)(void *), \
  911. CRYPTO_EX_DATA_FUNCS *(*)(CRYPTO_EX_DATA_FUNCS *), \
  912. copy_func), \
  913. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_EX_DATA_FUNCS *), \
  914. free_func)))
  915. /* DIST_POINT */
  916. #define sk_DIST_POINT_new(comp) \
  917. ((STACK_OF(DIST_POINT) *)sk_new(CHECKED_CAST( \
  918. stack_cmp_func, int (*)(const DIST_POINT **a, const DIST_POINT **b), \
  919. comp)))
  920. #define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)sk_new_null())
  921. #define sk_DIST_POINT_num(sk) \
  922. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk))
  923. #define sk_DIST_POINT_zero(sk) \
  924. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk));
  925. #define sk_DIST_POINT_value(sk, i) \
  926. ((DIST_POINT *)sk_value( \
  927. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk), (i)))
  928. #define sk_DIST_POINT_set(sk, i, p) \
  929. ((DIST_POINT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  930. (i), CHECKED_CAST(void *, DIST_POINT *, p)))
  931. #define sk_DIST_POINT_free(sk) \
  932. sk_free(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk))
  933. #define sk_DIST_POINT_pop_free(sk, free_func) \
  934. sk_pop_free( \
  935. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  936. CHECKED_CAST(void (*)(void *), void (*)(DIST_POINT *), free_func))
  937. #define sk_DIST_POINT_insert(sk, p, where) \
  938. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  939. CHECKED_CAST(void *, DIST_POINT *, p), (where))
  940. #define sk_DIST_POINT_delete(sk, where) \
  941. ((DIST_POINT *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  942. (where)))
  943. #define sk_DIST_POINT_delete_ptr(sk, p) \
  944. ((DIST_POINT *)sk_delete_ptr( \
  945. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  946. CHECKED_CAST(void *, DIST_POINT *, p)))
  947. #define sk_DIST_POINT_find(sk, out_index, p) \
  948. sk_find(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), (out_index), \
  949. CHECKED_CAST(void *, DIST_POINT *, p))
  950. #define sk_DIST_POINT_shift(sk) \
  951. ((DIST_POINT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk)))
  952. #define sk_DIST_POINT_push(sk, p) \
  953. sk_push(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  954. CHECKED_CAST(void *, DIST_POINT *, p))
  955. #define sk_DIST_POINT_pop(sk) \
  956. ((DIST_POINT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk)))
  957. #define sk_DIST_POINT_dup(sk) \
  958. ((STACK_OF(DIST_POINT) *)sk_dup( \
  959. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk)))
  960. #define sk_DIST_POINT_sort(sk) \
  961. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk))
  962. #define sk_DIST_POINT_is_sorted(sk) \
  963. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk))
  964. #define sk_DIST_POINT_set_cmp_func(sk, comp) \
  965. ((int (*)(const DIST_POINT **a, const DIST_POINT **b))sk_set_cmp_func( \
  966. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  967. CHECKED_CAST(stack_cmp_func, \
  968. int (*)(const DIST_POINT **a, const DIST_POINT **b), \
  969. comp)))
  970. #define sk_DIST_POINT_deep_copy(sk, copy_func, free_func) \
  971. ((STACK_OF(DIST_POINT) *)sk_deep_copy( \
  972. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk), \
  973. CHECKED_CAST(void *(*)(void *), DIST_POINT *(*)(DIST_POINT *), \
  974. copy_func), \
  975. CHECKED_CAST(void (*)(void *), void (*)(DIST_POINT *), free_func)))
  976. /* GENERAL_NAME */
  977. #define sk_GENERAL_NAME_new(comp) \
  978. ((STACK_OF(GENERAL_NAME) *)sk_new(CHECKED_CAST( \
  979. stack_cmp_func, int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b), \
  980. comp)))
  981. #define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)sk_new_null())
  982. #define sk_GENERAL_NAME_num(sk) \
  983. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk))
  984. #define sk_GENERAL_NAME_zero(sk) \
  985. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk));
  986. #define sk_GENERAL_NAME_value(sk, i) \
  987. ((GENERAL_NAME *)sk_value( \
  988. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk), (i)))
  989. #define sk_GENERAL_NAME_set(sk, i, p) \
  990. ((GENERAL_NAME *)sk_set( \
  991. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (i), \
  992. CHECKED_CAST(void *, GENERAL_NAME *, p)))
  993. #define sk_GENERAL_NAME_free(sk) \
  994. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk))
  995. #define sk_GENERAL_NAME_pop_free(sk, free_func) \
  996. sk_pop_free( \
  997. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  998. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAME *), free_func))
  999. #define sk_GENERAL_NAME_insert(sk, p, where) \
  1000. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  1001. CHECKED_CAST(void *, GENERAL_NAME *, p), (where))
  1002. #define sk_GENERAL_NAME_delete(sk, where) \
  1003. ((GENERAL_NAME *)sk_delete( \
  1004. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (where)))
  1005. #define sk_GENERAL_NAME_delete_ptr(sk, p) \
  1006. ((GENERAL_NAME *)sk_delete_ptr( \
  1007. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  1008. CHECKED_CAST(void *, GENERAL_NAME *, p)))
  1009. #define sk_GENERAL_NAME_find(sk, out_index, p) \
  1010. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (out_index), \
  1011. CHECKED_CAST(void *, GENERAL_NAME *, p))
  1012. #define sk_GENERAL_NAME_shift(sk) \
  1013. ((GENERAL_NAME *)sk_shift( \
  1014. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk)))
  1015. #define sk_GENERAL_NAME_push(sk, p) \
  1016. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  1017. CHECKED_CAST(void *, GENERAL_NAME *, p))
  1018. #define sk_GENERAL_NAME_pop(sk) \
  1019. ((GENERAL_NAME *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk)))
  1020. #define sk_GENERAL_NAME_dup(sk) \
  1021. ((STACK_OF(GENERAL_NAME) *)sk_dup( \
  1022. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk)))
  1023. #define sk_GENERAL_NAME_sort(sk) \
  1024. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk))
  1025. #define sk_GENERAL_NAME_is_sorted(sk) \
  1026. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk))
  1027. #define sk_GENERAL_NAME_set_cmp_func(sk, comp) \
  1028. ((int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b))sk_set_cmp_func( \
  1029. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  1030. CHECKED_CAST(stack_cmp_func, \
  1031. int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b), \
  1032. comp)))
  1033. #define sk_GENERAL_NAME_deep_copy(sk, copy_func, free_func) \
  1034. ((STACK_OF(GENERAL_NAME) *)sk_deep_copy( \
  1035. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk), \
  1036. CHECKED_CAST(void *(*)(void *), GENERAL_NAME *(*)(GENERAL_NAME *), \
  1037. copy_func), \
  1038. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAME *), free_func)))
  1039. /* GENERAL_NAMES */
  1040. #define sk_GENERAL_NAMES_new(comp) \
  1041. ((STACK_OF(GENERAL_NAMES) *)sk_new(CHECKED_CAST( \
  1042. stack_cmp_func, \
  1043. int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b), comp)))
  1044. #define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)sk_new_null())
  1045. #define sk_GENERAL_NAMES_num(sk) \
  1046. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk))
  1047. #define sk_GENERAL_NAMES_zero(sk) \
  1048. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk));
  1049. #define sk_GENERAL_NAMES_value(sk, i) \
  1050. ((GENERAL_NAMES *)sk_value( \
  1051. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk), (i)))
  1052. #define sk_GENERAL_NAMES_set(sk, i, p) \
  1053. ((GENERAL_NAMES *)sk_set( \
  1054. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (i), \
  1055. CHECKED_CAST(void *, GENERAL_NAMES *, p)))
  1056. #define sk_GENERAL_NAMES_free(sk) \
  1057. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk))
  1058. #define sk_GENERAL_NAMES_pop_free(sk, free_func) \
  1059. sk_pop_free( \
  1060. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1061. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAMES *), free_func))
  1062. #define sk_GENERAL_NAMES_insert(sk, p, where) \
  1063. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1064. CHECKED_CAST(void *, GENERAL_NAMES *, p), (where))
  1065. #define sk_GENERAL_NAMES_delete(sk, where) \
  1066. ((GENERAL_NAMES *)sk_delete( \
  1067. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (where)))
  1068. #define sk_GENERAL_NAMES_delete_ptr(sk, p) \
  1069. ((GENERAL_NAMES *)sk_delete_ptr( \
  1070. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1071. CHECKED_CAST(void *, GENERAL_NAMES *, p)))
  1072. #define sk_GENERAL_NAMES_find(sk, out_index, p) \
  1073. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (out_index), \
  1074. CHECKED_CAST(void *, GENERAL_NAMES *, p))
  1075. #define sk_GENERAL_NAMES_shift(sk) \
  1076. ((GENERAL_NAMES *)sk_shift( \
  1077. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk)))
  1078. #define sk_GENERAL_NAMES_push(sk, p) \
  1079. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1080. CHECKED_CAST(void *, GENERAL_NAMES *, p))
  1081. #define sk_GENERAL_NAMES_pop(sk) \
  1082. ((GENERAL_NAMES *)sk_pop( \
  1083. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk)))
  1084. #define sk_GENERAL_NAMES_dup(sk) \
  1085. ((STACK_OF(GENERAL_NAMES) *)sk_dup( \
  1086. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk)))
  1087. #define sk_GENERAL_NAMES_sort(sk) \
  1088. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk))
  1089. #define sk_GENERAL_NAMES_is_sorted(sk) \
  1090. sk_is_sorted( \
  1091. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk))
  1092. #define sk_GENERAL_NAMES_set_cmp_func(sk, comp) \
  1093. ((int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b))sk_set_cmp_func( \
  1094. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1095. CHECKED_CAST(stack_cmp_func, \
  1096. int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b), \
  1097. comp)))
  1098. #define sk_GENERAL_NAMES_deep_copy(sk, copy_func, free_func) \
  1099. ((STACK_OF(GENERAL_NAMES) *)sk_deep_copy( \
  1100. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk), \
  1101. CHECKED_CAST(void *(*)(void *), GENERAL_NAMES *(*)(GENERAL_NAMES *), \
  1102. copy_func), \
  1103. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAMES *), free_func)))
  1104. /* GENERAL_SUBTREE */
  1105. #define sk_GENERAL_SUBTREE_new(comp) \
  1106. ((STACK_OF(GENERAL_SUBTREE) *)sk_new(CHECKED_CAST( \
  1107. stack_cmp_func, \
  1108. int (*)(const GENERAL_SUBTREE **a, const GENERAL_SUBTREE **b), comp)))
  1109. #define sk_GENERAL_SUBTREE_new_null() \
  1110. ((STACK_OF(GENERAL_SUBTREE) *)sk_new_null())
  1111. #define sk_GENERAL_SUBTREE_num(sk) \
  1112. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk))
  1113. #define sk_GENERAL_SUBTREE_zero(sk) \
  1114. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk));
  1115. #define sk_GENERAL_SUBTREE_value(sk, i) \
  1116. ((GENERAL_SUBTREE *)sk_value( \
  1117. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk), \
  1118. (i)))
  1119. #define sk_GENERAL_SUBTREE_set(sk, i, p) \
  1120. ((GENERAL_SUBTREE *)sk_set( \
  1121. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), (i), \
  1122. CHECKED_CAST(void *, GENERAL_SUBTREE *, p)))
  1123. #define sk_GENERAL_SUBTREE_free(sk) \
  1124. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk))
  1125. #define sk_GENERAL_SUBTREE_pop_free(sk, free_func) \
  1126. sk_pop_free( \
  1127. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1128. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_SUBTREE *), free_func))
  1129. #define sk_GENERAL_SUBTREE_insert(sk, p, where) \
  1130. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1131. CHECKED_CAST(void *, GENERAL_SUBTREE *, p), (where))
  1132. #define sk_GENERAL_SUBTREE_delete(sk, where) \
  1133. ((GENERAL_SUBTREE *)sk_delete( \
  1134. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), (where)))
  1135. #define sk_GENERAL_SUBTREE_delete_ptr(sk, p) \
  1136. ((GENERAL_SUBTREE *)sk_delete_ptr( \
  1137. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1138. CHECKED_CAST(void *, GENERAL_SUBTREE *, p)))
  1139. #define sk_GENERAL_SUBTREE_find(sk, out_index, p) \
  1140. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1141. (out_index), CHECKED_CAST(void *, GENERAL_SUBTREE *, p))
  1142. #define sk_GENERAL_SUBTREE_shift(sk) \
  1143. ((GENERAL_SUBTREE *)sk_shift( \
  1144. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk)))
  1145. #define sk_GENERAL_SUBTREE_push(sk, p) \
  1146. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1147. CHECKED_CAST(void *, GENERAL_SUBTREE *, p))
  1148. #define sk_GENERAL_SUBTREE_pop(sk) \
  1149. ((GENERAL_SUBTREE *)sk_pop( \
  1150. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk)))
  1151. #define sk_GENERAL_SUBTREE_dup(sk) \
  1152. ((STACK_OF(GENERAL_SUBTREE) *)sk_dup( \
  1153. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk)))
  1154. #define sk_GENERAL_SUBTREE_sort(sk) \
  1155. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk))
  1156. #define sk_GENERAL_SUBTREE_is_sorted(sk) \
  1157. sk_is_sorted( \
  1158. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk))
  1159. #define sk_GENERAL_SUBTREE_set_cmp_func(sk, comp) \
  1160. ((int (*)(const GENERAL_SUBTREE **a, const GENERAL_SUBTREE **b)) \
  1161. sk_set_cmp_func( \
  1162. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1163. CHECKED_CAST(stack_cmp_func, int (*)(const GENERAL_SUBTREE **a, \
  1164. const GENERAL_SUBTREE **b), \
  1165. comp)))
  1166. #define sk_GENERAL_SUBTREE_deep_copy(sk, copy_func, free_func) \
  1167. ((STACK_OF(GENERAL_SUBTREE) *)sk_deep_copy( \
  1168. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk), \
  1169. CHECKED_CAST(void *(*)(void *), GENERAL_SUBTREE *(*)(GENERAL_SUBTREE *), \
  1170. copy_func), \
  1171. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_SUBTREE *), free_func)))
  1172. /* POLICYINFO */
  1173. #define sk_POLICYINFO_new(comp) \
  1174. ((STACK_OF(POLICYINFO) *)sk_new(CHECKED_CAST( \
  1175. stack_cmp_func, int (*)(const POLICYINFO **a, const POLICYINFO **b), \
  1176. comp)))
  1177. #define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)sk_new_null())
  1178. #define sk_POLICYINFO_num(sk) \
  1179. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk))
  1180. #define sk_POLICYINFO_zero(sk) \
  1181. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk));
  1182. #define sk_POLICYINFO_value(sk, i) \
  1183. ((POLICYINFO *)sk_value( \
  1184. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk), (i)))
  1185. #define sk_POLICYINFO_set(sk, i, p) \
  1186. ((POLICYINFO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1187. (i), CHECKED_CAST(void *, POLICYINFO *, p)))
  1188. #define sk_POLICYINFO_free(sk) \
  1189. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk))
  1190. #define sk_POLICYINFO_pop_free(sk, free_func) \
  1191. sk_pop_free( \
  1192. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1193. CHECKED_CAST(void (*)(void *), void (*)(POLICYINFO *), free_func))
  1194. #define sk_POLICYINFO_insert(sk, p, where) \
  1195. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1196. CHECKED_CAST(void *, POLICYINFO *, p), (where))
  1197. #define sk_POLICYINFO_delete(sk, where) \
  1198. ((POLICYINFO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1199. (where)))
  1200. #define sk_POLICYINFO_delete_ptr(sk, p) \
  1201. ((POLICYINFO *)sk_delete_ptr( \
  1202. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1203. CHECKED_CAST(void *, POLICYINFO *, p)))
  1204. #define sk_POLICYINFO_find(sk, out_index, p) \
  1205. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), (out_index), \
  1206. CHECKED_CAST(void *, POLICYINFO *, p))
  1207. #define sk_POLICYINFO_shift(sk) \
  1208. ((POLICYINFO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk)))
  1209. #define sk_POLICYINFO_push(sk, p) \
  1210. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1211. CHECKED_CAST(void *, POLICYINFO *, p))
  1212. #define sk_POLICYINFO_pop(sk) \
  1213. ((POLICYINFO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk)))
  1214. #define sk_POLICYINFO_dup(sk) \
  1215. ((STACK_OF(POLICYINFO) *)sk_dup( \
  1216. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk)))
  1217. #define sk_POLICYINFO_sort(sk) \
  1218. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk))
  1219. #define sk_POLICYINFO_is_sorted(sk) \
  1220. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk))
  1221. #define sk_POLICYINFO_set_cmp_func(sk, comp) \
  1222. ((int (*)(const POLICYINFO **a, const POLICYINFO **b))sk_set_cmp_func( \
  1223. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1224. CHECKED_CAST(stack_cmp_func, \
  1225. int (*)(const POLICYINFO **a, const POLICYINFO **b), \
  1226. comp)))
  1227. #define sk_POLICYINFO_deep_copy(sk, copy_func, free_func) \
  1228. ((STACK_OF(POLICYINFO) *)sk_deep_copy( \
  1229. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk), \
  1230. CHECKED_CAST(void *(*)(void *), POLICYINFO *(*)(POLICYINFO *), \
  1231. copy_func), \
  1232. CHECKED_CAST(void (*)(void *), void (*)(POLICYINFO *), free_func)))
  1233. /* POLICYQUALINFO */
  1234. #define sk_POLICYQUALINFO_new(comp) \
  1235. ((STACK_OF(POLICYQUALINFO) *)sk_new(CHECKED_CAST( \
  1236. stack_cmp_func, \
  1237. int (*)(const POLICYQUALINFO **a, const POLICYQUALINFO **b), comp)))
  1238. #define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)sk_new_null())
  1239. #define sk_POLICYQUALINFO_num(sk) \
  1240. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk))
  1241. #define sk_POLICYQUALINFO_zero(sk) \
  1242. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk));
  1243. #define sk_POLICYQUALINFO_value(sk, i) \
  1244. ((POLICYQUALINFO *)sk_value( \
  1245. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk), \
  1246. (i)))
  1247. #define sk_POLICYQUALINFO_set(sk, i, p) \
  1248. ((POLICYQUALINFO *)sk_set( \
  1249. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (i), \
  1250. CHECKED_CAST(void *, POLICYQUALINFO *, p)))
  1251. #define sk_POLICYQUALINFO_free(sk) \
  1252. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk))
  1253. #define sk_POLICYQUALINFO_pop_free(sk, free_func) \
  1254. sk_pop_free( \
  1255. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1256. CHECKED_CAST(void (*)(void *), void (*)(POLICYQUALINFO *), free_func))
  1257. #define sk_POLICYQUALINFO_insert(sk, p, where) \
  1258. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1259. CHECKED_CAST(void *, POLICYQUALINFO *, p), (where))
  1260. #define sk_POLICYQUALINFO_delete(sk, where) \
  1261. ((POLICYQUALINFO *)sk_delete( \
  1262. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (where)))
  1263. #define sk_POLICYQUALINFO_delete_ptr(sk, p) \
  1264. ((POLICYQUALINFO *)sk_delete_ptr( \
  1265. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1266. CHECKED_CAST(void *, POLICYQUALINFO *, p)))
  1267. #define sk_POLICYQUALINFO_find(sk, out_index, p) \
  1268. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (out_index), \
  1269. CHECKED_CAST(void *, POLICYQUALINFO *, p))
  1270. #define sk_POLICYQUALINFO_shift(sk) \
  1271. ((POLICYQUALINFO *)sk_shift( \
  1272. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk)))
  1273. #define sk_POLICYQUALINFO_push(sk, p) \
  1274. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1275. CHECKED_CAST(void *, POLICYQUALINFO *, p))
  1276. #define sk_POLICYQUALINFO_pop(sk) \
  1277. ((POLICYQUALINFO *)sk_pop( \
  1278. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk)))
  1279. #define sk_POLICYQUALINFO_dup(sk) \
  1280. ((STACK_OF(POLICYQUALINFO) *)sk_dup( \
  1281. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk)))
  1282. #define sk_POLICYQUALINFO_sort(sk) \
  1283. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk))
  1284. #define sk_POLICYQUALINFO_is_sorted(sk) \
  1285. sk_is_sorted( \
  1286. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk))
  1287. #define sk_POLICYQUALINFO_set_cmp_func(sk, comp) \
  1288. ((int (*)(const POLICYQUALINFO **a, const POLICYQUALINFO **b)) \
  1289. sk_set_cmp_func( \
  1290. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1291. CHECKED_CAST(stack_cmp_func, int (*)(const POLICYQUALINFO **a, \
  1292. const POLICYQUALINFO **b), \
  1293. comp)))
  1294. #define sk_POLICYQUALINFO_deep_copy(sk, copy_func, free_func) \
  1295. ((STACK_OF(POLICYQUALINFO) *)sk_deep_copy( \
  1296. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk), \
  1297. CHECKED_CAST(void *(*)(void *), POLICYQUALINFO *(*)(POLICYQUALINFO *), \
  1298. copy_func), \
  1299. CHECKED_CAST(void (*)(void *), void (*)(POLICYQUALINFO *), free_func)))
  1300. /* POLICY_MAPPING */
  1301. #define sk_POLICY_MAPPING_new(comp) \
  1302. ((STACK_OF(POLICY_MAPPING) *)sk_new(CHECKED_CAST( \
  1303. stack_cmp_func, \
  1304. int (*)(const POLICY_MAPPING **a, const POLICY_MAPPING **b), comp)))
  1305. #define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)sk_new_null())
  1306. #define sk_POLICY_MAPPING_num(sk) \
  1307. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk))
  1308. #define sk_POLICY_MAPPING_zero(sk) \
  1309. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk));
  1310. #define sk_POLICY_MAPPING_value(sk, i) \
  1311. ((POLICY_MAPPING *)sk_value( \
  1312. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk), \
  1313. (i)))
  1314. #define sk_POLICY_MAPPING_set(sk, i, p) \
  1315. ((POLICY_MAPPING *)sk_set( \
  1316. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (i), \
  1317. CHECKED_CAST(void *, POLICY_MAPPING *, p)))
  1318. #define sk_POLICY_MAPPING_free(sk) \
  1319. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk))
  1320. #define sk_POLICY_MAPPING_pop_free(sk, free_func) \
  1321. sk_pop_free( \
  1322. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1323. CHECKED_CAST(void (*)(void *), void (*)(POLICY_MAPPING *), free_func))
  1324. #define sk_POLICY_MAPPING_insert(sk, p, where) \
  1325. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1326. CHECKED_CAST(void *, POLICY_MAPPING *, p), (where))
  1327. #define sk_POLICY_MAPPING_delete(sk, where) \
  1328. ((POLICY_MAPPING *)sk_delete( \
  1329. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (where)))
  1330. #define sk_POLICY_MAPPING_delete_ptr(sk, p) \
  1331. ((POLICY_MAPPING *)sk_delete_ptr( \
  1332. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1333. CHECKED_CAST(void *, POLICY_MAPPING *, p)))
  1334. #define sk_POLICY_MAPPING_find(sk, out_index, p) \
  1335. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (out_index), \
  1336. CHECKED_CAST(void *, POLICY_MAPPING *, p))
  1337. #define sk_POLICY_MAPPING_shift(sk) \
  1338. ((POLICY_MAPPING *)sk_shift( \
  1339. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk)))
  1340. #define sk_POLICY_MAPPING_push(sk, p) \
  1341. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1342. CHECKED_CAST(void *, POLICY_MAPPING *, p))
  1343. #define sk_POLICY_MAPPING_pop(sk) \
  1344. ((POLICY_MAPPING *)sk_pop( \
  1345. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk)))
  1346. #define sk_POLICY_MAPPING_dup(sk) \
  1347. ((STACK_OF(POLICY_MAPPING) *)sk_dup( \
  1348. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk)))
  1349. #define sk_POLICY_MAPPING_sort(sk) \
  1350. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk))
  1351. #define sk_POLICY_MAPPING_is_sorted(sk) \
  1352. sk_is_sorted( \
  1353. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk))
  1354. #define sk_POLICY_MAPPING_set_cmp_func(sk, comp) \
  1355. ((int (*)(const POLICY_MAPPING **a, const POLICY_MAPPING **b)) \
  1356. sk_set_cmp_func( \
  1357. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1358. CHECKED_CAST(stack_cmp_func, int (*)(const POLICY_MAPPING **a, \
  1359. const POLICY_MAPPING **b), \
  1360. comp)))
  1361. #define sk_POLICY_MAPPING_deep_copy(sk, copy_func, free_func) \
  1362. ((STACK_OF(POLICY_MAPPING) *)sk_deep_copy( \
  1363. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk), \
  1364. CHECKED_CAST(void *(*)(void *), POLICY_MAPPING *(*)(POLICY_MAPPING *), \
  1365. copy_func), \
  1366. CHECKED_CAST(void (*)(void *), void (*)(POLICY_MAPPING *), free_func)))
  1367. /* RSA_additional_prime */
  1368. #define sk_RSA_additional_prime_new(comp) \
  1369. ((STACK_OF(RSA_additional_prime) *)sk_new(CHECKED_CAST( \
  1370. stack_cmp_func, \
  1371. int (*)(const RSA_additional_prime **a, const RSA_additional_prime **b), \
  1372. comp)))
  1373. #define sk_RSA_additional_prime_new_null() \
  1374. ((STACK_OF(RSA_additional_prime) *)sk_new_null())
  1375. #define sk_RSA_additional_prime_num(sk) \
  1376. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1377. sk))
  1378. #define sk_RSA_additional_prime_zero(sk) \
  1379. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk));
  1380. #define sk_RSA_additional_prime_value(sk, i) \
  1381. ((RSA_additional_prime *)sk_value( \
  1382. CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1383. sk), \
  1384. (i)))
  1385. #define sk_RSA_additional_prime_set(sk, i, p) \
  1386. ((RSA_additional_prime *)sk_set( \
  1387. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), (i), \
  1388. CHECKED_CAST(void *, RSA_additional_prime *, p)))
  1389. #define sk_RSA_additional_prime_free(sk) \
  1390. sk_free(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk))
  1391. #define sk_RSA_additional_prime_pop_free(sk, free_func) \
  1392. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1393. CHECKED_CAST(void (*)(void *), void (*)(RSA_additional_prime *), \
  1394. free_func))
  1395. #define sk_RSA_additional_prime_insert(sk, p, where) \
  1396. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1397. CHECKED_CAST(void *, RSA_additional_prime *, p), (where))
  1398. #define sk_RSA_additional_prime_delete(sk, where) \
  1399. ((RSA_additional_prime *)sk_delete( \
  1400. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), (where)))
  1401. #define sk_RSA_additional_prime_delete_ptr(sk, p) \
  1402. ((RSA_additional_prime *)sk_delete_ptr( \
  1403. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1404. CHECKED_CAST(void *, RSA_additional_prime *, p)))
  1405. #define sk_RSA_additional_prime_find(sk, out_index, p) \
  1406. sk_find(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1407. (out_index), CHECKED_CAST(void *, RSA_additional_prime *, p))
  1408. #define sk_RSA_additional_prime_shift(sk) \
  1409. ((RSA_additional_prime *)sk_shift( \
  1410. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk)))
  1411. #define sk_RSA_additional_prime_push(sk, p) \
  1412. sk_push(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1413. CHECKED_CAST(void *, RSA_additional_prime *, p))
  1414. #define sk_RSA_additional_prime_pop(sk) \
  1415. ((RSA_additional_prime *)sk_pop( \
  1416. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk)))
  1417. #define sk_RSA_additional_prime_dup(sk) \
  1418. ((STACK_OF(RSA_additional_prime) *)sk_dup(CHECKED_CAST( \
  1419. const _STACK *, const STACK_OF(RSA_additional_prime) *, sk)))
  1420. #define sk_RSA_additional_prime_sort(sk) \
  1421. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk))
  1422. #define sk_RSA_additional_prime_is_sorted(sk) \
  1423. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1424. const STACK_OF(RSA_additional_prime) *, sk))
  1425. #define sk_RSA_additional_prime_set_cmp_func(sk, comp) \
  1426. ((int (*)(const RSA_additional_prime **a, const RSA_additional_prime **b)) \
  1427. sk_set_cmp_func( \
  1428. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1429. CHECKED_CAST(stack_cmp_func, \
  1430. int (*)(const RSA_additional_prime **a, \
  1431. const RSA_additional_prime **b), \
  1432. comp)))
  1433. #define sk_RSA_additional_prime_deep_copy(sk, copy_func, free_func) \
  1434. ((STACK_OF(RSA_additional_prime) *)sk_deep_copy( \
  1435. CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1436. sk), \
  1437. CHECKED_CAST(void *(*)(void *), \
  1438. RSA_additional_prime *(*)(RSA_additional_prime *), \
  1439. copy_func), \
  1440. CHECKED_CAST(void (*)(void *), void (*)(RSA_additional_prime *), \
  1441. free_func)))
  1442. /* SSL_COMP */
  1443. #define sk_SSL_COMP_new(comp) \
  1444. ((STACK_OF(SSL_COMP) *)sk_new(CHECKED_CAST( \
  1445. stack_cmp_func, int (*)(const SSL_COMP **a, const SSL_COMP **b), comp)))
  1446. #define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)sk_new_null())
  1447. #define sk_SSL_COMP_num(sk) \
  1448. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk))
  1449. #define sk_SSL_COMP_zero(sk) \
  1450. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk));
  1451. #define sk_SSL_COMP_value(sk, i) \
  1452. ((SSL_COMP *)sk_value( \
  1453. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk), (i)))
  1454. #define sk_SSL_COMP_set(sk, i, p) \
  1455. ((SSL_COMP *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), (i), \
  1456. CHECKED_CAST(void *, SSL_COMP *, p)))
  1457. #define sk_SSL_COMP_free(sk) \
  1458. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk))
  1459. #define sk_SSL_COMP_pop_free(sk, free_func) \
  1460. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1461. CHECKED_CAST(void (*)(void *), void (*)(SSL_COMP *), free_func))
  1462. #define sk_SSL_COMP_insert(sk, p, where) \
  1463. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1464. CHECKED_CAST(void *, SSL_COMP *, p), (where))
  1465. #define sk_SSL_COMP_delete(sk, where) \
  1466. ((SSL_COMP *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1467. (where)))
  1468. #define sk_SSL_COMP_delete_ptr(sk, p) \
  1469. ((SSL_COMP *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1470. CHECKED_CAST(void *, SSL_COMP *, p)))
  1471. #define sk_SSL_COMP_find(sk, out_index, p) \
  1472. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), (out_index), \
  1473. CHECKED_CAST(void *, SSL_COMP *, p))
  1474. #define sk_SSL_COMP_shift(sk) \
  1475. ((SSL_COMP *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk)))
  1476. #define sk_SSL_COMP_push(sk, p) \
  1477. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1478. CHECKED_CAST(void *, SSL_COMP *, p))
  1479. #define sk_SSL_COMP_pop(sk) \
  1480. ((SSL_COMP *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk)))
  1481. #define sk_SSL_COMP_dup(sk) \
  1482. ((STACK_OF(SSL_COMP) *)sk_dup( \
  1483. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk)))
  1484. #define sk_SSL_COMP_sort(sk) \
  1485. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk))
  1486. #define sk_SSL_COMP_is_sorted(sk) \
  1487. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk))
  1488. #define sk_SSL_COMP_set_cmp_func(sk, comp) \
  1489. ((int (*)(const SSL_COMP **a, const SSL_COMP **b))sk_set_cmp_func( \
  1490. CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1491. CHECKED_CAST(stack_cmp_func, \
  1492. int (*)(const SSL_COMP **a, const SSL_COMP **b), comp)))
  1493. #define sk_SSL_COMP_deep_copy(sk, copy_func, free_func) \
  1494. ((STACK_OF(SSL_COMP) *)sk_deep_copy( \
  1495. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk), \
  1496. CHECKED_CAST(void *(*)(void *), SSL_COMP *(*)(SSL_COMP *), copy_func), \
  1497. CHECKED_CAST(void (*)(void *), void (*)(SSL_COMP *), free_func)))
  1498. /* SSL_CUSTOM_EXTENSION */
  1499. #define sk_SSL_CUSTOM_EXTENSION_new(comp) \
  1500. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_new(CHECKED_CAST( \
  1501. stack_cmp_func, \
  1502. int (*)(const SSL_CUSTOM_EXTENSION **a, const SSL_CUSTOM_EXTENSION **b), \
  1503. comp)))
  1504. #define sk_SSL_CUSTOM_EXTENSION_new_null() \
  1505. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_new_null())
  1506. #define sk_SSL_CUSTOM_EXTENSION_num(sk) \
  1507. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1508. sk))
  1509. #define sk_SSL_CUSTOM_EXTENSION_zero(sk) \
  1510. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk));
  1511. #define sk_SSL_CUSTOM_EXTENSION_value(sk, i) \
  1512. ((SSL_CUSTOM_EXTENSION *)sk_value( \
  1513. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1514. sk), \
  1515. (i)))
  1516. #define sk_SSL_CUSTOM_EXTENSION_set(sk, i, p) \
  1517. ((SSL_CUSTOM_EXTENSION *)sk_set( \
  1518. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), (i), \
  1519. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p)))
  1520. #define sk_SSL_CUSTOM_EXTENSION_free(sk) \
  1521. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1522. #define sk_SSL_CUSTOM_EXTENSION_pop_free(sk, free_func) \
  1523. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1524. CHECKED_CAST(void (*)(void *), void (*)(SSL_CUSTOM_EXTENSION *), \
  1525. free_func))
  1526. #define sk_SSL_CUSTOM_EXTENSION_insert(sk, p, where) \
  1527. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1528. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p), (where))
  1529. #define sk_SSL_CUSTOM_EXTENSION_delete(sk, where) \
  1530. ((SSL_CUSTOM_EXTENSION *)sk_delete( \
  1531. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), (where)))
  1532. #define sk_SSL_CUSTOM_EXTENSION_delete_ptr(sk, p) \
  1533. ((SSL_CUSTOM_EXTENSION *)sk_delete_ptr( \
  1534. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1535. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p)))
  1536. #define sk_SSL_CUSTOM_EXTENSION_find(sk, out_index, p) \
  1537. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1538. (out_index), CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p))
  1539. #define sk_SSL_CUSTOM_EXTENSION_shift(sk) \
  1540. ((SSL_CUSTOM_EXTENSION *)sk_shift( \
  1541. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1542. #define sk_SSL_CUSTOM_EXTENSION_push(sk, p) \
  1543. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1544. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p))
  1545. #define sk_SSL_CUSTOM_EXTENSION_pop(sk) \
  1546. ((SSL_CUSTOM_EXTENSION *)sk_pop( \
  1547. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1548. #define sk_SSL_CUSTOM_EXTENSION_dup(sk) \
  1549. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_dup(CHECKED_CAST( \
  1550. const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1551. #define sk_SSL_CUSTOM_EXTENSION_sort(sk) \
  1552. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1553. #define sk_SSL_CUSTOM_EXTENSION_is_sorted(sk) \
  1554. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1555. const STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1556. #define sk_SSL_CUSTOM_EXTENSION_set_cmp_func(sk, comp) \
  1557. ((int (*)(const SSL_CUSTOM_EXTENSION **a, const SSL_CUSTOM_EXTENSION **b)) \
  1558. sk_set_cmp_func( \
  1559. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1560. CHECKED_CAST(stack_cmp_func, \
  1561. int (*)(const SSL_CUSTOM_EXTENSION **a, \
  1562. const SSL_CUSTOM_EXTENSION **b), \
  1563. comp)))
  1564. #define sk_SSL_CUSTOM_EXTENSION_deep_copy(sk, copy_func, free_func) \
  1565. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_deep_copy( \
  1566. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1567. sk), \
  1568. CHECKED_CAST(void *(*)(void *), \
  1569. SSL_CUSTOM_EXTENSION *(*)(SSL_CUSTOM_EXTENSION *), \
  1570. copy_func), \
  1571. CHECKED_CAST(void (*)(void *), void (*)(SSL_CUSTOM_EXTENSION *), \
  1572. free_func)))
  1573. /* STACK_OF_X509_NAME_ENTRY */
  1574. #define sk_STACK_OF_X509_NAME_ENTRY_new(comp) \
  1575. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_new(CHECKED_CAST( \
  1576. stack_cmp_func, int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1577. const STACK_OF_X509_NAME_ENTRY **b), \
  1578. comp)))
  1579. #define sk_STACK_OF_X509_NAME_ENTRY_new_null() \
  1580. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_new_null())
  1581. #define sk_STACK_OF_X509_NAME_ENTRY_num(sk) \
  1582. sk_num(CHECKED_CAST(const _STACK *, \
  1583. const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1584. #define sk_STACK_OF_X509_NAME_ENTRY_zero(sk) \
  1585. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk));
  1586. #define sk_STACK_OF_X509_NAME_ENTRY_value(sk, i) \
  1587. ((STACK_OF_X509_NAME_ENTRY *)sk_value( \
  1588. CHECKED_CAST(const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, \
  1589. sk), \
  1590. (i)))
  1591. #define sk_STACK_OF_X509_NAME_ENTRY_set(sk, i, p) \
  1592. ((STACK_OF_X509_NAME_ENTRY *)sk_set( \
  1593. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), (i), \
  1594. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p)))
  1595. #define sk_STACK_OF_X509_NAME_ENTRY_free(sk) \
  1596. sk_free(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1597. #define sk_STACK_OF_X509_NAME_ENTRY_pop_free(sk, free_func) \
  1598. sk_pop_free( \
  1599. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1600. CHECKED_CAST(void (*)(void *), void (*)(STACK_OF_X509_NAME_ENTRY *), \
  1601. free_func))
  1602. #define sk_STACK_OF_X509_NAME_ENTRY_insert(sk, p, where) \
  1603. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1604. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p), (where))
  1605. #define sk_STACK_OF_X509_NAME_ENTRY_delete(sk, where) \
  1606. ((STACK_OF_X509_NAME_ENTRY *)sk_delete( \
  1607. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1608. (where)))
  1609. #define sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(sk, p) \
  1610. ((STACK_OF_X509_NAME_ENTRY *)sk_delete_ptr( \
  1611. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1612. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p)))
  1613. #define sk_STACK_OF_X509_NAME_ENTRY_find(sk, out_index, p) \
  1614. sk_find(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1615. (out_index), CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p))
  1616. #define sk_STACK_OF_X509_NAME_ENTRY_shift(sk) \
  1617. ((STACK_OF_X509_NAME_ENTRY *)sk_shift( \
  1618. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1619. #define sk_STACK_OF_X509_NAME_ENTRY_push(sk, p) \
  1620. sk_push(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1621. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p))
  1622. #define sk_STACK_OF_X509_NAME_ENTRY_pop(sk) \
  1623. ((STACK_OF_X509_NAME_ENTRY *)sk_pop( \
  1624. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1625. #define sk_STACK_OF_X509_NAME_ENTRY_dup(sk) \
  1626. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_dup(CHECKED_CAST( \
  1627. const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1628. #define sk_STACK_OF_X509_NAME_ENTRY_sort(sk) \
  1629. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1630. #define sk_STACK_OF_X509_NAME_ENTRY_is_sorted(sk) \
  1631. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1632. const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1633. #define sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(sk, comp) \
  1634. ((int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1635. const STACK_OF_X509_NAME_ENTRY **b)) \
  1636. sk_set_cmp_func( \
  1637. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1638. CHECKED_CAST(stack_cmp_func, \
  1639. int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1640. const STACK_OF_X509_NAME_ENTRY **b), \
  1641. comp)))
  1642. #define sk_STACK_OF_X509_NAME_ENTRY_deep_copy(sk, copy_func, free_func) \
  1643. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_deep_copy( \
  1644. CHECKED_CAST(const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, \
  1645. sk), \
  1646. CHECKED_CAST(void *(*)(void *), \
  1647. STACK_OF_X509_NAME_ENTRY *(*)(STACK_OF_X509_NAME_ENTRY *), \
  1648. copy_func), \
  1649. CHECKED_CAST(void (*)(void *), void (*)(STACK_OF_X509_NAME_ENTRY *), \
  1650. free_func)))
  1651. /* SXNETID */
  1652. #define sk_SXNETID_new(comp) \
  1653. ((STACK_OF(SXNETID) *)sk_new(CHECKED_CAST( \
  1654. stack_cmp_func, int (*)(const SXNETID **a, const SXNETID **b), comp)))
  1655. #define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)sk_new_null())
  1656. #define sk_SXNETID_num(sk) \
  1657. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk))
  1658. #define sk_SXNETID_zero(sk) \
  1659. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk));
  1660. #define sk_SXNETID_value(sk, i) \
  1661. ((SXNETID *)sk_value( \
  1662. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk), (i)))
  1663. #define sk_SXNETID_set(sk, i, p) \
  1664. ((SXNETID *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), (i), \
  1665. CHECKED_CAST(void *, SXNETID *, p)))
  1666. #define sk_SXNETID_free(sk) \
  1667. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk))
  1668. #define sk_SXNETID_pop_free(sk, free_func) \
  1669. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1670. CHECKED_CAST(void (*)(void *), void (*)(SXNETID *), free_func))
  1671. #define sk_SXNETID_insert(sk, p, where) \
  1672. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1673. CHECKED_CAST(void *, SXNETID *, p), (where))
  1674. #define sk_SXNETID_delete(sk, where) \
  1675. ((SXNETID *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1676. (where)))
  1677. #define sk_SXNETID_delete_ptr(sk, p) \
  1678. ((SXNETID *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1679. CHECKED_CAST(void *, SXNETID *, p)))
  1680. #define sk_SXNETID_find(sk, out_index, p) \
  1681. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), (out_index), \
  1682. CHECKED_CAST(void *, SXNETID *, p))
  1683. #define sk_SXNETID_shift(sk) \
  1684. ((SXNETID *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk)))
  1685. #define sk_SXNETID_push(sk, p) \
  1686. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1687. CHECKED_CAST(void *, SXNETID *, p))
  1688. #define sk_SXNETID_pop(sk) \
  1689. ((SXNETID *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk)))
  1690. #define sk_SXNETID_dup(sk) \
  1691. ((STACK_OF(SXNETID) *)sk_dup( \
  1692. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk)))
  1693. #define sk_SXNETID_sort(sk) \
  1694. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk))
  1695. #define sk_SXNETID_is_sorted(sk) \
  1696. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk))
  1697. #define sk_SXNETID_set_cmp_func(sk, comp) \
  1698. ((int (*)(const SXNETID **a, const SXNETID **b))sk_set_cmp_func( \
  1699. CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1700. CHECKED_CAST(stack_cmp_func, \
  1701. int (*)(const SXNETID **a, const SXNETID **b), comp)))
  1702. #define sk_SXNETID_deep_copy(sk, copy_func, free_func) \
  1703. ((STACK_OF(SXNETID) *)sk_deep_copy( \
  1704. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk), \
  1705. CHECKED_CAST(void *(*)(void *), SXNETID *(*)(SXNETID *), copy_func), \
  1706. CHECKED_CAST(void (*)(void *), void (*)(SXNETID *), free_func)))
  1707. /* X509 */
  1708. #define sk_X509_new(comp) \
  1709. ((STACK_OF(X509) *)sk_new(CHECKED_CAST( \
  1710. stack_cmp_func, int (*)(const X509 **a, const X509 **b), comp)))
  1711. #define sk_X509_new_null() ((STACK_OF(X509) *)sk_new_null())
  1712. #define sk_X509_num(sk) \
  1713. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk))
  1714. #define sk_X509_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk));
  1715. #define sk_X509_value(sk, i) \
  1716. ((X509 *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk), \
  1717. (i)))
  1718. #define sk_X509_set(sk, i, p) \
  1719. ((X509 *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (i), \
  1720. CHECKED_CAST(void *, X509 *, p)))
  1721. #define sk_X509_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk))
  1722. #define sk_X509_pop_free(sk, free_func) \
  1723. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1724. CHECKED_CAST(void (*)(void *), void (*)(X509 *), free_func))
  1725. #define sk_X509_insert(sk, p, where) \
  1726. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1727. CHECKED_CAST(void *, X509 *, p), (where))
  1728. #define sk_X509_delete(sk, where) \
  1729. ((X509 *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (where)))
  1730. #define sk_X509_delete_ptr(sk, p) \
  1731. ((X509 *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1732. CHECKED_CAST(void *, X509 *, p)))
  1733. #define sk_X509_find(sk, out_index, p) \
  1734. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (out_index), \
  1735. CHECKED_CAST(void *, X509 *, p))
  1736. #define sk_X509_shift(sk) \
  1737. ((X509 *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk)))
  1738. #define sk_X509_push(sk, p) \
  1739. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1740. CHECKED_CAST(void *, X509 *, p))
  1741. #define sk_X509_pop(sk) \
  1742. ((X509 *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk)))
  1743. #define sk_X509_dup(sk) \
  1744. ((STACK_OF(X509) *)sk_dup( \
  1745. CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk)))
  1746. #define sk_X509_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk))
  1747. #define sk_X509_is_sorted(sk) \
  1748. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk))
  1749. #define sk_X509_set_cmp_func(sk, comp) \
  1750. ((int (*)(const X509 **a, const X509 **b))sk_set_cmp_func( \
  1751. CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1752. CHECKED_CAST(stack_cmp_func, int (*)(const X509 **a, const X509 **b), \
  1753. comp)))
  1754. #define sk_X509_deep_copy(sk, copy_func, free_func) \
  1755. ((STACK_OF(X509) *)sk_deep_copy( \
  1756. CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk), \
  1757. CHECKED_CAST(void *(*)(void *), X509 *(*)(X509 *), copy_func), \
  1758. CHECKED_CAST(void (*)(void *), void (*)(X509 *), free_func)))
  1759. /* X509V3_EXT_METHOD */
  1760. #define sk_X509V3_EXT_METHOD_new(comp) \
  1761. ((STACK_OF(X509V3_EXT_METHOD) *)sk_new(CHECKED_CAST( \
  1762. stack_cmp_func, \
  1763. int (*)(const X509V3_EXT_METHOD **a, const X509V3_EXT_METHOD **b), \
  1764. comp)))
  1765. #define sk_X509V3_EXT_METHOD_new_null() \
  1766. ((STACK_OF(X509V3_EXT_METHOD) *)sk_new_null())
  1767. #define sk_X509V3_EXT_METHOD_num(sk) \
  1768. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk))
  1769. #define sk_X509V3_EXT_METHOD_zero(sk) \
  1770. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk));
  1771. #define sk_X509V3_EXT_METHOD_value(sk, i) \
  1772. ((X509V3_EXT_METHOD *)sk_value( \
  1773. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1774. (i)))
  1775. #define sk_X509V3_EXT_METHOD_set(sk, i, p) \
  1776. ((X509V3_EXT_METHOD *)sk_set( \
  1777. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), (i), \
  1778. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p)))
  1779. #define sk_X509V3_EXT_METHOD_free(sk) \
  1780. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk))
  1781. #define sk_X509V3_EXT_METHOD_pop_free(sk, free_func) \
  1782. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1783. CHECKED_CAST(void (*)(void *), void (*)(X509V3_EXT_METHOD *), \
  1784. free_func))
  1785. #define sk_X509V3_EXT_METHOD_insert(sk, p, where) \
  1786. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1787. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p), (where))
  1788. #define sk_X509V3_EXT_METHOD_delete(sk, where) \
  1789. ((X509V3_EXT_METHOD *)sk_delete( \
  1790. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), (where)))
  1791. #define sk_X509V3_EXT_METHOD_delete_ptr(sk, p) \
  1792. ((X509V3_EXT_METHOD *)sk_delete_ptr( \
  1793. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1794. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p)))
  1795. #define sk_X509V3_EXT_METHOD_find(sk, out_index, p) \
  1796. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1797. (out_index), CHECKED_CAST(void *, X509V3_EXT_METHOD *, p))
  1798. #define sk_X509V3_EXT_METHOD_shift(sk) \
  1799. ((X509V3_EXT_METHOD *)sk_shift( \
  1800. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1801. #define sk_X509V3_EXT_METHOD_push(sk, p) \
  1802. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1803. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p))
  1804. #define sk_X509V3_EXT_METHOD_pop(sk) \
  1805. ((X509V3_EXT_METHOD *)sk_pop( \
  1806. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1807. #define sk_X509V3_EXT_METHOD_dup(sk) \
  1808. ((STACK_OF(X509V3_EXT_METHOD) *)sk_dup( \
  1809. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1810. #define sk_X509V3_EXT_METHOD_sort(sk) \
  1811. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk))
  1812. #define sk_X509V3_EXT_METHOD_is_sorted(sk) \
  1813. sk_is_sorted( \
  1814. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk))
  1815. #define sk_X509V3_EXT_METHOD_set_cmp_func(sk, comp) \
  1816. ((int (*)(const X509V3_EXT_METHOD **a, const X509V3_EXT_METHOD **b)) \
  1817. sk_set_cmp_func( \
  1818. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1819. CHECKED_CAST(stack_cmp_func, int (*)(const X509V3_EXT_METHOD **a, \
  1820. const X509V3_EXT_METHOD **b), \
  1821. comp)))
  1822. #define sk_X509V3_EXT_METHOD_deep_copy(sk, copy_func, free_func) \
  1823. ((STACK_OF(X509V3_EXT_METHOD) *)sk_deep_copy( \
  1824. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1825. CHECKED_CAST(void *(*)(void *), \
  1826. X509V3_EXT_METHOD *(*)(X509V3_EXT_METHOD *), copy_func), \
  1827. CHECKED_CAST(void (*)(void *), void (*)(X509V3_EXT_METHOD *), \
  1828. free_func)))
  1829. /* X509_ALGOR */
  1830. #define sk_X509_ALGOR_new(comp) \
  1831. ((STACK_OF(X509_ALGOR) *)sk_new(CHECKED_CAST( \
  1832. stack_cmp_func, int (*)(const X509_ALGOR **a, const X509_ALGOR **b), \
  1833. comp)))
  1834. #define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)sk_new_null())
  1835. #define sk_X509_ALGOR_num(sk) \
  1836. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk))
  1837. #define sk_X509_ALGOR_zero(sk) \
  1838. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk));
  1839. #define sk_X509_ALGOR_value(sk, i) \
  1840. ((X509_ALGOR *)sk_value( \
  1841. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk), (i)))
  1842. #define sk_X509_ALGOR_set(sk, i, p) \
  1843. ((X509_ALGOR *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1844. (i), CHECKED_CAST(void *, X509_ALGOR *, p)))
  1845. #define sk_X509_ALGOR_free(sk) \
  1846. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk))
  1847. #define sk_X509_ALGOR_pop_free(sk, free_func) \
  1848. sk_pop_free( \
  1849. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1850. CHECKED_CAST(void (*)(void *), void (*)(X509_ALGOR *), free_func))
  1851. #define sk_X509_ALGOR_insert(sk, p, where) \
  1852. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1853. CHECKED_CAST(void *, X509_ALGOR *, p), (where))
  1854. #define sk_X509_ALGOR_delete(sk, where) \
  1855. ((X509_ALGOR *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1856. (where)))
  1857. #define sk_X509_ALGOR_delete_ptr(sk, p) \
  1858. ((X509_ALGOR *)sk_delete_ptr( \
  1859. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1860. CHECKED_CAST(void *, X509_ALGOR *, p)))
  1861. #define sk_X509_ALGOR_find(sk, out_index, p) \
  1862. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), (out_index), \
  1863. CHECKED_CAST(void *, X509_ALGOR *, p))
  1864. #define sk_X509_ALGOR_shift(sk) \
  1865. ((X509_ALGOR *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk)))
  1866. #define sk_X509_ALGOR_push(sk, p) \
  1867. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1868. CHECKED_CAST(void *, X509_ALGOR *, p))
  1869. #define sk_X509_ALGOR_pop(sk) \
  1870. ((X509_ALGOR *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk)))
  1871. #define sk_X509_ALGOR_dup(sk) \
  1872. ((STACK_OF(X509_ALGOR) *)sk_dup( \
  1873. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk)))
  1874. #define sk_X509_ALGOR_sort(sk) \
  1875. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk))
  1876. #define sk_X509_ALGOR_is_sorted(sk) \
  1877. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk))
  1878. #define sk_X509_ALGOR_set_cmp_func(sk, comp) \
  1879. ((int (*)(const X509_ALGOR **a, const X509_ALGOR **b))sk_set_cmp_func( \
  1880. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1881. CHECKED_CAST(stack_cmp_func, \
  1882. int (*)(const X509_ALGOR **a, const X509_ALGOR **b), \
  1883. comp)))
  1884. #define sk_X509_ALGOR_deep_copy(sk, copy_func, free_func) \
  1885. ((STACK_OF(X509_ALGOR) *)sk_deep_copy( \
  1886. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk), \
  1887. CHECKED_CAST(void *(*)(void *), X509_ALGOR *(*)(X509_ALGOR *), \
  1888. copy_func), \
  1889. CHECKED_CAST(void (*)(void *), void (*)(X509_ALGOR *), free_func)))
  1890. /* X509_ATTRIBUTE */
  1891. #define sk_X509_ATTRIBUTE_new(comp) \
  1892. ((STACK_OF(X509_ATTRIBUTE) *)sk_new(CHECKED_CAST( \
  1893. stack_cmp_func, \
  1894. int (*)(const X509_ATTRIBUTE **a, const X509_ATTRIBUTE **b), comp)))
  1895. #define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)sk_new_null())
  1896. #define sk_X509_ATTRIBUTE_num(sk) \
  1897. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk))
  1898. #define sk_X509_ATTRIBUTE_zero(sk) \
  1899. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk));
  1900. #define sk_X509_ATTRIBUTE_value(sk, i) \
  1901. ((X509_ATTRIBUTE *)sk_value( \
  1902. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk), \
  1903. (i)))
  1904. #define sk_X509_ATTRIBUTE_set(sk, i, p) \
  1905. ((X509_ATTRIBUTE *)sk_set( \
  1906. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (i), \
  1907. CHECKED_CAST(void *, X509_ATTRIBUTE *, p)))
  1908. #define sk_X509_ATTRIBUTE_free(sk) \
  1909. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk))
  1910. #define sk_X509_ATTRIBUTE_pop_free(sk, free_func) \
  1911. sk_pop_free( \
  1912. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1913. CHECKED_CAST(void (*)(void *), void (*)(X509_ATTRIBUTE *), free_func))
  1914. #define sk_X509_ATTRIBUTE_insert(sk, p, where) \
  1915. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1916. CHECKED_CAST(void *, X509_ATTRIBUTE *, p), (where))
  1917. #define sk_X509_ATTRIBUTE_delete(sk, where) \
  1918. ((X509_ATTRIBUTE *)sk_delete( \
  1919. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (where)))
  1920. #define sk_X509_ATTRIBUTE_delete_ptr(sk, p) \
  1921. ((X509_ATTRIBUTE *)sk_delete_ptr( \
  1922. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1923. CHECKED_CAST(void *, X509_ATTRIBUTE *, p)))
  1924. #define sk_X509_ATTRIBUTE_find(sk, out_index, p) \
  1925. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (out_index), \
  1926. CHECKED_CAST(void *, X509_ATTRIBUTE *, p))
  1927. #define sk_X509_ATTRIBUTE_shift(sk) \
  1928. ((X509_ATTRIBUTE *)sk_shift( \
  1929. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk)))
  1930. #define sk_X509_ATTRIBUTE_push(sk, p) \
  1931. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1932. CHECKED_CAST(void *, X509_ATTRIBUTE *, p))
  1933. #define sk_X509_ATTRIBUTE_pop(sk) \
  1934. ((X509_ATTRIBUTE *)sk_pop( \
  1935. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk)))
  1936. #define sk_X509_ATTRIBUTE_dup(sk) \
  1937. ((STACK_OF(X509_ATTRIBUTE) *)sk_dup( \
  1938. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk)))
  1939. #define sk_X509_ATTRIBUTE_sort(sk) \
  1940. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk))
  1941. #define sk_X509_ATTRIBUTE_is_sorted(sk) \
  1942. sk_is_sorted( \
  1943. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk))
  1944. #define sk_X509_ATTRIBUTE_set_cmp_func(sk, comp) \
  1945. ((int (*)(const X509_ATTRIBUTE **a, const X509_ATTRIBUTE **b)) \
  1946. sk_set_cmp_func( \
  1947. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1948. CHECKED_CAST(stack_cmp_func, int (*)(const X509_ATTRIBUTE **a, \
  1949. const X509_ATTRIBUTE **b), \
  1950. comp)))
  1951. #define sk_X509_ATTRIBUTE_deep_copy(sk, copy_func, free_func) \
  1952. ((STACK_OF(X509_ATTRIBUTE) *)sk_deep_copy( \
  1953. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk), \
  1954. CHECKED_CAST(void *(*)(void *), X509_ATTRIBUTE *(*)(X509_ATTRIBUTE *), \
  1955. copy_func), \
  1956. CHECKED_CAST(void (*)(void *), void (*)(X509_ATTRIBUTE *), free_func)))
  1957. /* X509_CRL */
  1958. #define sk_X509_CRL_new(comp) \
  1959. ((STACK_OF(X509_CRL) *)sk_new(CHECKED_CAST( \
  1960. stack_cmp_func, int (*)(const X509_CRL **a, const X509_CRL **b), comp)))
  1961. #define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)sk_new_null())
  1962. #define sk_X509_CRL_num(sk) \
  1963. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk))
  1964. #define sk_X509_CRL_zero(sk) \
  1965. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk));
  1966. #define sk_X509_CRL_value(sk, i) \
  1967. ((X509_CRL *)sk_value( \
  1968. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk), (i)))
  1969. #define sk_X509_CRL_set(sk, i, p) \
  1970. ((X509_CRL *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), (i), \
  1971. CHECKED_CAST(void *, X509_CRL *, p)))
  1972. #define sk_X509_CRL_free(sk) \
  1973. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk))
  1974. #define sk_X509_CRL_pop_free(sk, free_func) \
  1975. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1976. CHECKED_CAST(void (*)(void *), void (*)(X509_CRL *), free_func))
  1977. #define sk_X509_CRL_insert(sk, p, where) \
  1978. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1979. CHECKED_CAST(void *, X509_CRL *, p), (where))
  1980. #define sk_X509_CRL_delete(sk, where) \
  1981. ((X509_CRL *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1982. (where)))
  1983. #define sk_X509_CRL_delete_ptr(sk, p) \
  1984. ((X509_CRL *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1985. CHECKED_CAST(void *, X509_CRL *, p)))
  1986. #define sk_X509_CRL_find(sk, out_index, p) \
  1987. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), (out_index), \
  1988. CHECKED_CAST(void *, X509_CRL *, p))
  1989. #define sk_X509_CRL_shift(sk) \
  1990. ((X509_CRL *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk)))
  1991. #define sk_X509_CRL_push(sk, p) \
  1992. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1993. CHECKED_CAST(void *, X509_CRL *, p))
  1994. #define sk_X509_CRL_pop(sk) \
  1995. ((X509_CRL *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk)))
  1996. #define sk_X509_CRL_dup(sk) \
  1997. ((STACK_OF(X509_CRL) *)sk_dup( \
  1998. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk)))
  1999. #define sk_X509_CRL_sort(sk) \
  2000. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk))
  2001. #define sk_X509_CRL_is_sorted(sk) \
  2002. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk))
  2003. #define sk_X509_CRL_set_cmp_func(sk, comp) \
  2004. ((int (*)(const X509_CRL **a, const X509_CRL **b))sk_set_cmp_func( \
  2005. CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  2006. CHECKED_CAST(stack_cmp_func, \
  2007. int (*)(const X509_CRL **a, const X509_CRL **b), comp)))
  2008. #define sk_X509_CRL_deep_copy(sk, copy_func, free_func) \
  2009. ((STACK_OF(X509_CRL) *)sk_deep_copy( \
  2010. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk), \
  2011. CHECKED_CAST(void *(*)(void *), X509_CRL *(*)(X509_CRL *), copy_func), \
  2012. CHECKED_CAST(void (*)(void *), void (*)(X509_CRL *), free_func)))
  2013. /* X509_EXTENSION */
  2014. #define sk_X509_EXTENSION_new(comp) \
  2015. ((STACK_OF(X509_EXTENSION) *)sk_new(CHECKED_CAST( \
  2016. stack_cmp_func, \
  2017. int (*)(const X509_EXTENSION **a, const X509_EXTENSION **b), comp)))
  2018. #define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)sk_new_null())
  2019. #define sk_X509_EXTENSION_num(sk) \
  2020. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk))
  2021. #define sk_X509_EXTENSION_zero(sk) \
  2022. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk));
  2023. #define sk_X509_EXTENSION_value(sk, i) \
  2024. ((X509_EXTENSION *)sk_value( \
  2025. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk), \
  2026. (i)))
  2027. #define sk_X509_EXTENSION_set(sk, i, p) \
  2028. ((X509_EXTENSION *)sk_set( \
  2029. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (i), \
  2030. CHECKED_CAST(void *, X509_EXTENSION *, p)))
  2031. #define sk_X509_EXTENSION_free(sk) \
  2032. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk))
  2033. #define sk_X509_EXTENSION_pop_free(sk, free_func) \
  2034. sk_pop_free( \
  2035. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2036. CHECKED_CAST(void (*)(void *), void (*)(X509_EXTENSION *), free_func))
  2037. #define sk_X509_EXTENSION_insert(sk, p, where) \
  2038. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2039. CHECKED_CAST(void *, X509_EXTENSION *, p), (where))
  2040. #define sk_X509_EXTENSION_delete(sk, where) \
  2041. ((X509_EXTENSION *)sk_delete( \
  2042. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (where)))
  2043. #define sk_X509_EXTENSION_delete_ptr(sk, p) \
  2044. ((X509_EXTENSION *)sk_delete_ptr( \
  2045. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2046. CHECKED_CAST(void *, X509_EXTENSION *, p)))
  2047. #define sk_X509_EXTENSION_find(sk, out_index, p) \
  2048. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (out_index), \
  2049. CHECKED_CAST(void *, X509_EXTENSION *, p))
  2050. #define sk_X509_EXTENSION_shift(sk) \
  2051. ((X509_EXTENSION *)sk_shift( \
  2052. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk)))
  2053. #define sk_X509_EXTENSION_push(sk, p) \
  2054. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2055. CHECKED_CAST(void *, X509_EXTENSION *, p))
  2056. #define sk_X509_EXTENSION_pop(sk) \
  2057. ((X509_EXTENSION *)sk_pop( \
  2058. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk)))
  2059. #define sk_X509_EXTENSION_dup(sk) \
  2060. ((STACK_OF(X509_EXTENSION) *)sk_dup( \
  2061. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk)))
  2062. #define sk_X509_EXTENSION_sort(sk) \
  2063. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk))
  2064. #define sk_X509_EXTENSION_is_sorted(sk) \
  2065. sk_is_sorted( \
  2066. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk))
  2067. #define sk_X509_EXTENSION_set_cmp_func(sk, comp) \
  2068. ((int (*)(const X509_EXTENSION **a, const X509_EXTENSION **b)) \
  2069. sk_set_cmp_func( \
  2070. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2071. CHECKED_CAST(stack_cmp_func, int (*)(const X509_EXTENSION **a, \
  2072. const X509_EXTENSION **b), \
  2073. comp)))
  2074. #define sk_X509_EXTENSION_deep_copy(sk, copy_func, free_func) \
  2075. ((STACK_OF(X509_EXTENSION) *)sk_deep_copy( \
  2076. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk), \
  2077. CHECKED_CAST(void *(*)(void *), X509_EXTENSION *(*)(X509_EXTENSION *), \
  2078. copy_func), \
  2079. CHECKED_CAST(void (*)(void *), void (*)(X509_EXTENSION *), free_func)))
  2080. /* X509_INFO */
  2081. #define sk_X509_INFO_new(comp) \
  2082. ((STACK_OF(X509_INFO) *)sk_new( \
  2083. CHECKED_CAST(stack_cmp_func, \
  2084. int (*)(const X509_INFO **a, const X509_INFO **b), comp)))
  2085. #define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)sk_new_null())
  2086. #define sk_X509_INFO_num(sk) \
  2087. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk))
  2088. #define sk_X509_INFO_zero(sk) \
  2089. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk));
  2090. #define sk_X509_INFO_value(sk, i) \
  2091. ((X509_INFO *)sk_value( \
  2092. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk), (i)))
  2093. #define sk_X509_INFO_set(sk, i, p) \
  2094. ((X509_INFO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), (i), \
  2095. CHECKED_CAST(void *, X509_INFO *, p)))
  2096. #define sk_X509_INFO_free(sk) \
  2097. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk))
  2098. #define sk_X509_INFO_pop_free(sk, free_func) \
  2099. sk_pop_free( \
  2100. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2101. CHECKED_CAST(void (*)(void *), void (*)(X509_INFO *), free_func))
  2102. #define sk_X509_INFO_insert(sk, p, where) \
  2103. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2104. CHECKED_CAST(void *, X509_INFO *, p), (where))
  2105. #define sk_X509_INFO_delete(sk, where) \
  2106. ((X509_INFO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2107. (where)))
  2108. #define sk_X509_INFO_delete_ptr(sk, p) \
  2109. ((X509_INFO *)sk_delete_ptr( \
  2110. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2111. CHECKED_CAST(void *, X509_INFO *, p)))
  2112. #define sk_X509_INFO_find(sk, out_index, p) \
  2113. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), (out_index), \
  2114. CHECKED_CAST(void *, X509_INFO *, p))
  2115. #define sk_X509_INFO_shift(sk) \
  2116. ((X509_INFO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk)))
  2117. #define sk_X509_INFO_push(sk, p) \
  2118. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2119. CHECKED_CAST(void *, X509_INFO *, p))
  2120. #define sk_X509_INFO_pop(sk) \
  2121. ((X509_INFO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk)))
  2122. #define sk_X509_INFO_dup(sk) \
  2123. ((STACK_OF(X509_INFO) *)sk_dup( \
  2124. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk)))
  2125. #define sk_X509_INFO_sort(sk) \
  2126. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk))
  2127. #define sk_X509_INFO_is_sorted(sk) \
  2128. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk))
  2129. #define sk_X509_INFO_set_cmp_func(sk, comp) \
  2130. ((int (*)(const X509_INFO **a, const X509_INFO **b))sk_set_cmp_func( \
  2131. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2132. CHECKED_CAST(stack_cmp_func, \
  2133. int (*)(const X509_INFO **a, const X509_INFO **b), comp)))
  2134. #define sk_X509_INFO_deep_copy(sk, copy_func, free_func) \
  2135. ((STACK_OF(X509_INFO) *)sk_deep_copy( \
  2136. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk), \
  2137. CHECKED_CAST(void *(*)(void *), X509_INFO *(*)(X509_INFO *), copy_func), \
  2138. CHECKED_CAST(void (*)(void *), void (*)(X509_INFO *), free_func)))
  2139. /* X509_LOOKUP */
  2140. #define sk_X509_LOOKUP_new(comp) \
  2141. ((STACK_OF(X509_LOOKUP) *)sk_new(CHECKED_CAST( \
  2142. stack_cmp_func, int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b), \
  2143. comp)))
  2144. #define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)sk_new_null())
  2145. #define sk_X509_LOOKUP_num(sk) \
  2146. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk))
  2147. #define sk_X509_LOOKUP_zero(sk) \
  2148. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk));
  2149. #define sk_X509_LOOKUP_value(sk, i) \
  2150. ((X509_LOOKUP *)sk_value( \
  2151. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk), (i)))
  2152. #define sk_X509_LOOKUP_set(sk, i, p) \
  2153. ((X509_LOOKUP *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2154. (i), CHECKED_CAST(void *, X509_LOOKUP *, p)))
  2155. #define sk_X509_LOOKUP_free(sk) \
  2156. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk))
  2157. #define sk_X509_LOOKUP_pop_free(sk, free_func) \
  2158. sk_pop_free( \
  2159. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2160. CHECKED_CAST(void (*)(void *), void (*)(X509_LOOKUP *), free_func))
  2161. #define sk_X509_LOOKUP_insert(sk, p, where) \
  2162. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2163. CHECKED_CAST(void *, X509_LOOKUP *, p), (where))
  2164. #define sk_X509_LOOKUP_delete(sk, where) \
  2165. ((X509_LOOKUP *)sk_delete( \
  2166. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), (where)))
  2167. #define sk_X509_LOOKUP_delete_ptr(sk, p) \
  2168. ((X509_LOOKUP *)sk_delete_ptr( \
  2169. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2170. CHECKED_CAST(void *, X509_LOOKUP *, p)))
  2171. #define sk_X509_LOOKUP_find(sk, out_index, p) \
  2172. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), (out_index), \
  2173. CHECKED_CAST(void *, X509_LOOKUP *, p))
  2174. #define sk_X509_LOOKUP_shift(sk) \
  2175. ((X509_LOOKUP *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk)))
  2176. #define sk_X509_LOOKUP_push(sk, p) \
  2177. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2178. CHECKED_CAST(void *, X509_LOOKUP *, p))
  2179. #define sk_X509_LOOKUP_pop(sk) \
  2180. ((X509_LOOKUP *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk)))
  2181. #define sk_X509_LOOKUP_dup(sk) \
  2182. ((STACK_OF(X509_LOOKUP) *)sk_dup( \
  2183. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk)))
  2184. #define sk_X509_LOOKUP_sort(sk) \
  2185. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk))
  2186. #define sk_X509_LOOKUP_is_sorted(sk) \
  2187. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk))
  2188. #define sk_X509_LOOKUP_set_cmp_func(sk, comp) \
  2189. ((int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b))sk_set_cmp_func( \
  2190. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2191. CHECKED_CAST(stack_cmp_func, \
  2192. int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b), \
  2193. comp)))
  2194. #define sk_X509_LOOKUP_deep_copy(sk, copy_func, free_func) \
  2195. ((STACK_OF(X509_LOOKUP) *)sk_deep_copy( \
  2196. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk), \
  2197. CHECKED_CAST(void *(*)(void *), X509_LOOKUP *(*)(X509_LOOKUP *), \
  2198. copy_func), \
  2199. CHECKED_CAST(void (*)(void *), void (*)(X509_LOOKUP *), free_func)))
  2200. /* X509_NAME */
  2201. #define sk_X509_NAME_new(comp) \
  2202. ((STACK_OF(X509_NAME) *)sk_new( \
  2203. CHECKED_CAST(stack_cmp_func, \
  2204. int (*)(const X509_NAME **a, const X509_NAME **b), comp)))
  2205. #define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)sk_new_null())
  2206. #define sk_X509_NAME_num(sk) \
  2207. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk))
  2208. #define sk_X509_NAME_zero(sk) \
  2209. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk));
  2210. #define sk_X509_NAME_value(sk, i) \
  2211. ((X509_NAME *)sk_value( \
  2212. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk), (i)))
  2213. #define sk_X509_NAME_set(sk, i, p) \
  2214. ((X509_NAME *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), (i), \
  2215. CHECKED_CAST(void *, X509_NAME *, p)))
  2216. #define sk_X509_NAME_free(sk) \
  2217. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk))
  2218. #define sk_X509_NAME_pop_free(sk, free_func) \
  2219. sk_pop_free( \
  2220. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2221. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME *), free_func))
  2222. #define sk_X509_NAME_insert(sk, p, where) \
  2223. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2224. CHECKED_CAST(void *, X509_NAME *, p), (where))
  2225. #define sk_X509_NAME_delete(sk, where) \
  2226. ((X509_NAME *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2227. (where)))
  2228. #define sk_X509_NAME_delete_ptr(sk, p) \
  2229. ((X509_NAME *)sk_delete_ptr( \
  2230. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2231. CHECKED_CAST(void *, X509_NAME *, p)))
  2232. #define sk_X509_NAME_find(sk, out_index, p) \
  2233. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), (out_index), \
  2234. CHECKED_CAST(void *, X509_NAME *, p))
  2235. #define sk_X509_NAME_shift(sk) \
  2236. ((X509_NAME *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk)))
  2237. #define sk_X509_NAME_push(sk, p) \
  2238. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2239. CHECKED_CAST(void *, X509_NAME *, p))
  2240. #define sk_X509_NAME_pop(sk) \
  2241. ((X509_NAME *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk)))
  2242. #define sk_X509_NAME_dup(sk) \
  2243. ((STACK_OF(X509_NAME) *)sk_dup( \
  2244. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk)))
  2245. #define sk_X509_NAME_sort(sk) \
  2246. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk))
  2247. #define sk_X509_NAME_is_sorted(sk) \
  2248. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk))
  2249. #define sk_X509_NAME_set_cmp_func(sk, comp) \
  2250. ((int (*)(const X509_NAME **a, const X509_NAME **b))sk_set_cmp_func( \
  2251. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2252. CHECKED_CAST(stack_cmp_func, \
  2253. int (*)(const X509_NAME **a, const X509_NAME **b), comp)))
  2254. #define sk_X509_NAME_deep_copy(sk, copy_func, free_func) \
  2255. ((STACK_OF(X509_NAME) *)sk_deep_copy( \
  2256. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk), \
  2257. CHECKED_CAST(void *(*)(void *), X509_NAME *(*)(X509_NAME *), copy_func), \
  2258. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME *), free_func)))
  2259. /* X509_NAME_ENTRY */
  2260. #define sk_X509_NAME_ENTRY_new(comp) \
  2261. ((STACK_OF(X509_NAME_ENTRY) *)sk_new(CHECKED_CAST( \
  2262. stack_cmp_func, \
  2263. int (*)(const X509_NAME_ENTRY **a, const X509_NAME_ENTRY **b), comp)))
  2264. #define sk_X509_NAME_ENTRY_new_null() \
  2265. ((STACK_OF(X509_NAME_ENTRY) *)sk_new_null())
  2266. #define sk_X509_NAME_ENTRY_num(sk) \
  2267. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk))
  2268. #define sk_X509_NAME_ENTRY_zero(sk) \
  2269. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk));
  2270. #define sk_X509_NAME_ENTRY_value(sk, i) \
  2271. ((X509_NAME_ENTRY *)sk_value( \
  2272. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk), \
  2273. (i)))
  2274. #define sk_X509_NAME_ENTRY_set(sk, i, p) \
  2275. ((X509_NAME_ENTRY *)sk_set( \
  2276. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), (i), \
  2277. CHECKED_CAST(void *, X509_NAME_ENTRY *, p)))
  2278. #define sk_X509_NAME_ENTRY_free(sk) \
  2279. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk))
  2280. #define sk_X509_NAME_ENTRY_pop_free(sk, free_func) \
  2281. sk_pop_free( \
  2282. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2283. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME_ENTRY *), free_func))
  2284. #define sk_X509_NAME_ENTRY_insert(sk, p, where) \
  2285. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2286. CHECKED_CAST(void *, X509_NAME_ENTRY *, p), (where))
  2287. #define sk_X509_NAME_ENTRY_delete(sk, where) \
  2288. ((X509_NAME_ENTRY *)sk_delete( \
  2289. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), (where)))
  2290. #define sk_X509_NAME_ENTRY_delete_ptr(sk, p) \
  2291. ((X509_NAME_ENTRY *)sk_delete_ptr( \
  2292. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2293. CHECKED_CAST(void *, X509_NAME_ENTRY *, p)))
  2294. #define sk_X509_NAME_ENTRY_find(sk, out_index, p) \
  2295. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2296. (out_index), CHECKED_CAST(void *, X509_NAME_ENTRY *, p))
  2297. #define sk_X509_NAME_ENTRY_shift(sk) \
  2298. ((X509_NAME_ENTRY *)sk_shift( \
  2299. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk)))
  2300. #define sk_X509_NAME_ENTRY_push(sk, p) \
  2301. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2302. CHECKED_CAST(void *, X509_NAME_ENTRY *, p))
  2303. #define sk_X509_NAME_ENTRY_pop(sk) \
  2304. ((X509_NAME_ENTRY *)sk_pop( \
  2305. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk)))
  2306. #define sk_X509_NAME_ENTRY_dup(sk) \
  2307. ((STACK_OF(X509_NAME_ENTRY) *)sk_dup( \
  2308. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk)))
  2309. #define sk_X509_NAME_ENTRY_sort(sk) \
  2310. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk))
  2311. #define sk_X509_NAME_ENTRY_is_sorted(sk) \
  2312. sk_is_sorted( \
  2313. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk))
  2314. #define sk_X509_NAME_ENTRY_set_cmp_func(sk, comp) \
  2315. ((int (*)(const X509_NAME_ENTRY **a, const X509_NAME_ENTRY **b)) \
  2316. sk_set_cmp_func( \
  2317. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2318. CHECKED_CAST(stack_cmp_func, int (*)(const X509_NAME_ENTRY **a, \
  2319. const X509_NAME_ENTRY **b), \
  2320. comp)))
  2321. #define sk_X509_NAME_ENTRY_deep_copy(sk, copy_func, free_func) \
  2322. ((STACK_OF(X509_NAME_ENTRY) *)sk_deep_copy( \
  2323. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk), \
  2324. CHECKED_CAST(void *(*)(void *), X509_NAME_ENTRY *(*)(X509_NAME_ENTRY *), \
  2325. copy_func), \
  2326. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME_ENTRY *), free_func)))
  2327. /* X509_OBJECT */
  2328. #define sk_X509_OBJECT_new(comp) \
  2329. ((STACK_OF(X509_OBJECT) *)sk_new(CHECKED_CAST( \
  2330. stack_cmp_func, int (*)(const X509_OBJECT **a, const X509_OBJECT **b), \
  2331. comp)))
  2332. #define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)sk_new_null())
  2333. #define sk_X509_OBJECT_num(sk) \
  2334. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk))
  2335. #define sk_X509_OBJECT_zero(sk) \
  2336. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk));
  2337. #define sk_X509_OBJECT_value(sk, i) \
  2338. ((X509_OBJECT *)sk_value( \
  2339. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk), (i)))
  2340. #define sk_X509_OBJECT_set(sk, i, p) \
  2341. ((X509_OBJECT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2342. (i), CHECKED_CAST(void *, X509_OBJECT *, p)))
  2343. #define sk_X509_OBJECT_free(sk) \
  2344. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk))
  2345. #define sk_X509_OBJECT_pop_free(sk, free_func) \
  2346. sk_pop_free( \
  2347. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2348. CHECKED_CAST(void (*)(void *), void (*)(X509_OBJECT *), free_func))
  2349. #define sk_X509_OBJECT_insert(sk, p, where) \
  2350. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2351. CHECKED_CAST(void *, X509_OBJECT *, p), (where))
  2352. #define sk_X509_OBJECT_delete(sk, where) \
  2353. ((X509_OBJECT *)sk_delete( \
  2354. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), (where)))
  2355. #define sk_X509_OBJECT_delete_ptr(sk, p) \
  2356. ((X509_OBJECT *)sk_delete_ptr( \
  2357. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2358. CHECKED_CAST(void *, X509_OBJECT *, p)))
  2359. #define sk_X509_OBJECT_find(sk, out_index, p) \
  2360. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), (out_index), \
  2361. CHECKED_CAST(void *, X509_OBJECT *, p))
  2362. #define sk_X509_OBJECT_shift(sk) \
  2363. ((X509_OBJECT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk)))
  2364. #define sk_X509_OBJECT_push(sk, p) \
  2365. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2366. CHECKED_CAST(void *, X509_OBJECT *, p))
  2367. #define sk_X509_OBJECT_pop(sk) \
  2368. ((X509_OBJECT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk)))
  2369. #define sk_X509_OBJECT_dup(sk) \
  2370. ((STACK_OF(X509_OBJECT) *)sk_dup( \
  2371. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk)))
  2372. #define sk_X509_OBJECT_sort(sk) \
  2373. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk))
  2374. #define sk_X509_OBJECT_is_sorted(sk) \
  2375. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk))
  2376. #define sk_X509_OBJECT_set_cmp_func(sk, comp) \
  2377. ((int (*)(const X509_OBJECT **a, const X509_OBJECT **b))sk_set_cmp_func( \
  2378. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2379. CHECKED_CAST(stack_cmp_func, \
  2380. int (*)(const X509_OBJECT **a, const X509_OBJECT **b), \
  2381. comp)))
  2382. #define sk_X509_OBJECT_deep_copy(sk, copy_func, free_func) \
  2383. ((STACK_OF(X509_OBJECT) *)sk_deep_copy( \
  2384. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk), \
  2385. CHECKED_CAST(void *(*)(void *), X509_OBJECT *(*)(X509_OBJECT *), \
  2386. copy_func), \
  2387. CHECKED_CAST(void (*)(void *), void (*)(X509_OBJECT *), free_func)))
  2388. /* X509_POLICY_DATA */
  2389. #define sk_X509_POLICY_DATA_new(comp) \
  2390. ((STACK_OF(X509_POLICY_DATA) *)sk_new(CHECKED_CAST( \
  2391. stack_cmp_func, \
  2392. int (*)(const X509_POLICY_DATA **a, const X509_POLICY_DATA **b), comp)))
  2393. #define sk_X509_POLICY_DATA_new_null() \
  2394. ((STACK_OF(X509_POLICY_DATA) *)sk_new_null())
  2395. #define sk_X509_POLICY_DATA_num(sk) \
  2396. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk))
  2397. #define sk_X509_POLICY_DATA_zero(sk) \
  2398. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk));
  2399. #define sk_X509_POLICY_DATA_value(sk, i) \
  2400. ((X509_POLICY_DATA *)sk_value( \
  2401. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk), \
  2402. (i)))
  2403. #define sk_X509_POLICY_DATA_set(sk, i, p) \
  2404. ((X509_POLICY_DATA *)sk_set( \
  2405. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), (i), \
  2406. CHECKED_CAST(void *, X509_POLICY_DATA *, p)))
  2407. #define sk_X509_POLICY_DATA_free(sk) \
  2408. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk))
  2409. #define sk_X509_POLICY_DATA_pop_free(sk, free_func) \
  2410. sk_pop_free( \
  2411. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2412. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_DATA *), free_func))
  2413. #define sk_X509_POLICY_DATA_insert(sk, p, where) \
  2414. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2415. CHECKED_CAST(void *, X509_POLICY_DATA *, p), (where))
  2416. #define sk_X509_POLICY_DATA_delete(sk, where) \
  2417. ((X509_POLICY_DATA *)sk_delete( \
  2418. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), (where)))
  2419. #define sk_X509_POLICY_DATA_delete_ptr(sk, p) \
  2420. ((X509_POLICY_DATA *)sk_delete_ptr( \
  2421. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2422. CHECKED_CAST(void *, X509_POLICY_DATA *, p)))
  2423. #define sk_X509_POLICY_DATA_find(sk, out_index, p) \
  2424. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2425. (out_index), CHECKED_CAST(void *, X509_POLICY_DATA *, p))
  2426. #define sk_X509_POLICY_DATA_shift(sk) \
  2427. ((X509_POLICY_DATA *)sk_shift( \
  2428. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk)))
  2429. #define sk_X509_POLICY_DATA_push(sk, p) \
  2430. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2431. CHECKED_CAST(void *, X509_POLICY_DATA *, p))
  2432. #define sk_X509_POLICY_DATA_pop(sk) \
  2433. ((X509_POLICY_DATA *)sk_pop( \
  2434. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk)))
  2435. #define sk_X509_POLICY_DATA_dup(sk) \
  2436. ((STACK_OF(X509_POLICY_DATA) *)sk_dup( \
  2437. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk)))
  2438. #define sk_X509_POLICY_DATA_sort(sk) \
  2439. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk))
  2440. #define sk_X509_POLICY_DATA_is_sorted(sk) \
  2441. sk_is_sorted( \
  2442. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk))
  2443. #define sk_X509_POLICY_DATA_set_cmp_func(sk, comp) \
  2444. ((int (*)(const X509_POLICY_DATA **a, const X509_POLICY_DATA **b)) \
  2445. sk_set_cmp_func( \
  2446. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2447. CHECKED_CAST(stack_cmp_func, int (*)(const X509_POLICY_DATA **a, \
  2448. const X509_POLICY_DATA **b), \
  2449. comp)))
  2450. #define sk_X509_POLICY_DATA_deep_copy(sk, copy_func, free_func) \
  2451. ((STACK_OF(X509_POLICY_DATA) *)sk_deep_copy( \
  2452. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk), \
  2453. CHECKED_CAST(void *(*)(void *), \
  2454. X509_POLICY_DATA *(*)(X509_POLICY_DATA *), copy_func), \
  2455. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_DATA *), \
  2456. free_func)))
  2457. /* X509_POLICY_NODE */
  2458. #define sk_X509_POLICY_NODE_new(comp) \
  2459. ((STACK_OF(X509_POLICY_NODE) *)sk_new(CHECKED_CAST( \
  2460. stack_cmp_func, \
  2461. int (*)(const X509_POLICY_NODE **a, const X509_POLICY_NODE **b), comp)))
  2462. #define sk_X509_POLICY_NODE_new_null() \
  2463. ((STACK_OF(X509_POLICY_NODE) *)sk_new_null())
  2464. #define sk_X509_POLICY_NODE_num(sk) \
  2465. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk))
  2466. #define sk_X509_POLICY_NODE_zero(sk) \
  2467. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk));
  2468. #define sk_X509_POLICY_NODE_value(sk, i) \
  2469. ((X509_POLICY_NODE *)sk_value( \
  2470. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk), \
  2471. (i)))
  2472. #define sk_X509_POLICY_NODE_set(sk, i, p) \
  2473. ((X509_POLICY_NODE *)sk_set( \
  2474. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), (i), \
  2475. CHECKED_CAST(void *, X509_POLICY_NODE *, p)))
  2476. #define sk_X509_POLICY_NODE_free(sk) \
  2477. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk))
  2478. #define sk_X509_POLICY_NODE_pop_free(sk, free_func) \
  2479. sk_pop_free( \
  2480. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2481. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_NODE *), free_func))
  2482. #define sk_X509_POLICY_NODE_insert(sk, p, where) \
  2483. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2484. CHECKED_CAST(void *, X509_POLICY_NODE *, p), (where))
  2485. #define sk_X509_POLICY_NODE_delete(sk, where) \
  2486. ((X509_POLICY_NODE *)sk_delete( \
  2487. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), (where)))
  2488. #define sk_X509_POLICY_NODE_delete_ptr(sk, p) \
  2489. ((X509_POLICY_NODE *)sk_delete_ptr( \
  2490. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2491. CHECKED_CAST(void *, X509_POLICY_NODE *, p)))
  2492. #define sk_X509_POLICY_NODE_find(sk, out_index, p) \
  2493. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2494. (out_index), CHECKED_CAST(void *, X509_POLICY_NODE *, p))
  2495. #define sk_X509_POLICY_NODE_shift(sk) \
  2496. ((X509_POLICY_NODE *)sk_shift( \
  2497. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk)))
  2498. #define sk_X509_POLICY_NODE_push(sk, p) \
  2499. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2500. CHECKED_CAST(void *, X509_POLICY_NODE *, p))
  2501. #define sk_X509_POLICY_NODE_pop(sk) \
  2502. ((X509_POLICY_NODE *)sk_pop( \
  2503. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk)))
  2504. #define sk_X509_POLICY_NODE_dup(sk) \
  2505. ((STACK_OF(X509_POLICY_NODE) *)sk_dup( \
  2506. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk)))
  2507. #define sk_X509_POLICY_NODE_sort(sk) \
  2508. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk))
  2509. #define sk_X509_POLICY_NODE_is_sorted(sk) \
  2510. sk_is_sorted( \
  2511. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk))
  2512. #define sk_X509_POLICY_NODE_set_cmp_func(sk, comp) \
  2513. ((int (*)(const X509_POLICY_NODE **a, const X509_POLICY_NODE **b)) \
  2514. sk_set_cmp_func( \
  2515. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2516. CHECKED_CAST(stack_cmp_func, int (*)(const X509_POLICY_NODE **a, \
  2517. const X509_POLICY_NODE **b), \
  2518. comp)))
  2519. #define sk_X509_POLICY_NODE_deep_copy(sk, copy_func, free_func) \
  2520. ((STACK_OF(X509_POLICY_NODE) *)sk_deep_copy( \
  2521. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk), \
  2522. CHECKED_CAST(void *(*)(void *), \
  2523. X509_POLICY_NODE *(*)(X509_POLICY_NODE *), copy_func), \
  2524. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_NODE *), \
  2525. free_func)))
  2526. /* X509_PURPOSE */
  2527. #define sk_X509_PURPOSE_new(comp) \
  2528. ((STACK_OF(X509_PURPOSE) *)sk_new(CHECKED_CAST( \
  2529. stack_cmp_func, int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b), \
  2530. comp)))
  2531. #define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)sk_new_null())
  2532. #define sk_X509_PURPOSE_num(sk) \
  2533. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk))
  2534. #define sk_X509_PURPOSE_zero(sk) \
  2535. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk));
  2536. #define sk_X509_PURPOSE_value(sk, i) \
  2537. ((X509_PURPOSE *)sk_value( \
  2538. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk), (i)))
  2539. #define sk_X509_PURPOSE_set(sk, i, p) \
  2540. ((X509_PURPOSE *)sk_set( \
  2541. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (i), \
  2542. CHECKED_CAST(void *, X509_PURPOSE *, p)))
  2543. #define sk_X509_PURPOSE_free(sk) \
  2544. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk))
  2545. #define sk_X509_PURPOSE_pop_free(sk, free_func) \
  2546. sk_pop_free( \
  2547. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2548. CHECKED_CAST(void (*)(void *), void (*)(X509_PURPOSE *), free_func))
  2549. #define sk_X509_PURPOSE_insert(sk, p, where) \
  2550. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2551. CHECKED_CAST(void *, X509_PURPOSE *, p), (where))
  2552. #define sk_X509_PURPOSE_delete(sk, where) \
  2553. ((X509_PURPOSE *)sk_delete( \
  2554. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (where)))
  2555. #define sk_X509_PURPOSE_delete_ptr(sk, p) \
  2556. ((X509_PURPOSE *)sk_delete_ptr( \
  2557. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2558. CHECKED_CAST(void *, X509_PURPOSE *, p)))
  2559. #define sk_X509_PURPOSE_find(sk, out_index, p) \
  2560. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (out_index), \
  2561. CHECKED_CAST(void *, X509_PURPOSE *, p))
  2562. #define sk_X509_PURPOSE_shift(sk) \
  2563. ((X509_PURPOSE *)sk_shift( \
  2564. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk)))
  2565. #define sk_X509_PURPOSE_push(sk, p) \
  2566. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2567. CHECKED_CAST(void *, X509_PURPOSE *, p))
  2568. #define sk_X509_PURPOSE_pop(sk) \
  2569. ((X509_PURPOSE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk)))
  2570. #define sk_X509_PURPOSE_dup(sk) \
  2571. ((STACK_OF(X509_PURPOSE) *)sk_dup( \
  2572. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk)))
  2573. #define sk_X509_PURPOSE_sort(sk) \
  2574. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk))
  2575. #define sk_X509_PURPOSE_is_sorted(sk) \
  2576. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk))
  2577. #define sk_X509_PURPOSE_set_cmp_func(sk, comp) \
  2578. ((int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b))sk_set_cmp_func( \
  2579. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2580. CHECKED_CAST(stack_cmp_func, \
  2581. int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b), \
  2582. comp)))
  2583. #define sk_X509_PURPOSE_deep_copy(sk, copy_func, free_func) \
  2584. ((STACK_OF(X509_PURPOSE) *)sk_deep_copy( \
  2585. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk), \
  2586. CHECKED_CAST(void *(*)(void *), X509_PURPOSE *(*)(X509_PURPOSE *), \
  2587. copy_func), \
  2588. CHECKED_CAST(void (*)(void *), void (*)(X509_PURPOSE *), free_func)))
  2589. /* X509_REVOKED */
  2590. #define sk_X509_REVOKED_new(comp) \
  2591. ((STACK_OF(X509_REVOKED) *)sk_new(CHECKED_CAST( \
  2592. stack_cmp_func, int (*)(const X509_REVOKED **a, const X509_REVOKED **b), \
  2593. comp)))
  2594. #define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)sk_new_null())
  2595. #define sk_X509_REVOKED_num(sk) \
  2596. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk))
  2597. #define sk_X509_REVOKED_zero(sk) \
  2598. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk));
  2599. #define sk_X509_REVOKED_value(sk, i) \
  2600. ((X509_REVOKED *)sk_value( \
  2601. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk), (i)))
  2602. #define sk_X509_REVOKED_set(sk, i, p) \
  2603. ((X509_REVOKED *)sk_set( \
  2604. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (i), \
  2605. CHECKED_CAST(void *, X509_REVOKED *, p)))
  2606. #define sk_X509_REVOKED_free(sk) \
  2607. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk))
  2608. #define sk_X509_REVOKED_pop_free(sk, free_func) \
  2609. sk_pop_free( \
  2610. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2611. CHECKED_CAST(void (*)(void *), void (*)(X509_REVOKED *), free_func))
  2612. #define sk_X509_REVOKED_insert(sk, p, where) \
  2613. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2614. CHECKED_CAST(void *, X509_REVOKED *, p), (where))
  2615. #define sk_X509_REVOKED_delete(sk, where) \
  2616. ((X509_REVOKED *)sk_delete( \
  2617. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (where)))
  2618. #define sk_X509_REVOKED_delete_ptr(sk, p) \
  2619. ((X509_REVOKED *)sk_delete_ptr( \
  2620. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2621. CHECKED_CAST(void *, X509_REVOKED *, p)))
  2622. #define sk_X509_REVOKED_find(sk, out_index, p) \
  2623. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (out_index), \
  2624. CHECKED_CAST(void *, X509_REVOKED *, p))
  2625. #define sk_X509_REVOKED_shift(sk) \
  2626. ((X509_REVOKED *)sk_shift( \
  2627. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk)))
  2628. #define sk_X509_REVOKED_push(sk, p) \
  2629. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2630. CHECKED_CAST(void *, X509_REVOKED *, p))
  2631. #define sk_X509_REVOKED_pop(sk) \
  2632. ((X509_REVOKED *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk)))
  2633. #define sk_X509_REVOKED_dup(sk) \
  2634. ((STACK_OF(X509_REVOKED) *)sk_dup( \
  2635. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk)))
  2636. #define sk_X509_REVOKED_sort(sk) \
  2637. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk))
  2638. #define sk_X509_REVOKED_is_sorted(sk) \
  2639. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk))
  2640. #define sk_X509_REVOKED_set_cmp_func(sk, comp) \
  2641. ((int (*)(const X509_REVOKED **a, const X509_REVOKED **b))sk_set_cmp_func( \
  2642. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2643. CHECKED_CAST(stack_cmp_func, \
  2644. int (*)(const X509_REVOKED **a, const X509_REVOKED **b), \
  2645. comp)))
  2646. #define sk_X509_REVOKED_deep_copy(sk, copy_func, free_func) \
  2647. ((STACK_OF(X509_REVOKED) *)sk_deep_copy( \
  2648. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk), \
  2649. CHECKED_CAST(void *(*)(void *), X509_REVOKED *(*)(X509_REVOKED *), \
  2650. copy_func), \
  2651. CHECKED_CAST(void (*)(void *), void (*)(X509_REVOKED *), free_func)))
  2652. /* X509_TRUST */
  2653. #define sk_X509_TRUST_new(comp) \
  2654. ((STACK_OF(X509_TRUST) *)sk_new(CHECKED_CAST( \
  2655. stack_cmp_func, int (*)(const X509_TRUST **a, const X509_TRUST **b), \
  2656. comp)))
  2657. #define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)sk_new_null())
  2658. #define sk_X509_TRUST_num(sk) \
  2659. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk))
  2660. #define sk_X509_TRUST_zero(sk) \
  2661. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk));
  2662. #define sk_X509_TRUST_value(sk, i) \
  2663. ((X509_TRUST *)sk_value( \
  2664. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk), (i)))
  2665. #define sk_X509_TRUST_set(sk, i, p) \
  2666. ((X509_TRUST *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2667. (i), CHECKED_CAST(void *, X509_TRUST *, p)))
  2668. #define sk_X509_TRUST_free(sk) \
  2669. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk))
  2670. #define sk_X509_TRUST_pop_free(sk, free_func) \
  2671. sk_pop_free( \
  2672. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2673. CHECKED_CAST(void (*)(void *), void (*)(X509_TRUST *), free_func))
  2674. #define sk_X509_TRUST_insert(sk, p, where) \
  2675. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2676. CHECKED_CAST(void *, X509_TRUST *, p), (where))
  2677. #define sk_X509_TRUST_delete(sk, where) \
  2678. ((X509_TRUST *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2679. (where)))
  2680. #define sk_X509_TRUST_delete_ptr(sk, p) \
  2681. ((X509_TRUST *)sk_delete_ptr( \
  2682. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2683. CHECKED_CAST(void *, X509_TRUST *, p)))
  2684. #define sk_X509_TRUST_find(sk, out_index, p) \
  2685. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), (out_index), \
  2686. CHECKED_CAST(void *, X509_TRUST *, p))
  2687. #define sk_X509_TRUST_shift(sk) \
  2688. ((X509_TRUST *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk)))
  2689. #define sk_X509_TRUST_push(sk, p) \
  2690. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2691. CHECKED_CAST(void *, X509_TRUST *, p))
  2692. #define sk_X509_TRUST_pop(sk) \
  2693. ((X509_TRUST *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk)))
  2694. #define sk_X509_TRUST_dup(sk) \
  2695. ((STACK_OF(X509_TRUST) *)sk_dup( \
  2696. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk)))
  2697. #define sk_X509_TRUST_sort(sk) \
  2698. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk))
  2699. #define sk_X509_TRUST_is_sorted(sk) \
  2700. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk))
  2701. #define sk_X509_TRUST_set_cmp_func(sk, comp) \
  2702. ((int (*)(const X509_TRUST **a, const X509_TRUST **b))sk_set_cmp_func( \
  2703. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2704. CHECKED_CAST(stack_cmp_func, \
  2705. int (*)(const X509_TRUST **a, const X509_TRUST **b), \
  2706. comp)))
  2707. #define sk_X509_TRUST_deep_copy(sk, copy_func, free_func) \
  2708. ((STACK_OF(X509_TRUST) *)sk_deep_copy( \
  2709. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk), \
  2710. CHECKED_CAST(void *(*)(void *), X509_TRUST *(*)(X509_TRUST *), \
  2711. copy_func), \
  2712. CHECKED_CAST(void (*)(void *), void (*)(X509_TRUST *), free_func)))
  2713. /* X509_VERIFY_PARAM */
  2714. #define sk_X509_VERIFY_PARAM_new(comp) \
  2715. ((STACK_OF(X509_VERIFY_PARAM) *)sk_new(CHECKED_CAST( \
  2716. stack_cmp_func, \
  2717. int (*)(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b), \
  2718. comp)))
  2719. #define sk_X509_VERIFY_PARAM_new_null() \
  2720. ((STACK_OF(X509_VERIFY_PARAM) *)sk_new_null())
  2721. #define sk_X509_VERIFY_PARAM_num(sk) \
  2722. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk))
  2723. #define sk_X509_VERIFY_PARAM_zero(sk) \
  2724. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk));
  2725. #define sk_X509_VERIFY_PARAM_value(sk, i) \
  2726. ((X509_VERIFY_PARAM *)sk_value( \
  2727. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2728. (i)))
  2729. #define sk_X509_VERIFY_PARAM_set(sk, i, p) \
  2730. ((X509_VERIFY_PARAM *)sk_set( \
  2731. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), (i), \
  2732. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p)))
  2733. #define sk_X509_VERIFY_PARAM_free(sk) \
  2734. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk))
  2735. #define sk_X509_VERIFY_PARAM_pop_free(sk, free_func) \
  2736. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2737. CHECKED_CAST(void (*)(void *), void (*)(X509_VERIFY_PARAM *), \
  2738. free_func))
  2739. #define sk_X509_VERIFY_PARAM_insert(sk, p, where) \
  2740. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2741. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p), (where))
  2742. #define sk_X509_VERIFY_PARAM_delete(sk, where) \
  2743. ((X509_VERIFY_PARAM *)sk_delete( \
  2744. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), (where)))
  2745. #define sk_X509_VERIFY_PARAM_delete_ptr(sk, p) \
  2746. ((X509_VERIFY_PARAM *)sk_delete_ptr( \
  2747. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2748. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p)))
  2749. #define sk_X509_VERIFY_PARAM_find(sk, out_index, p) \
  2750. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2751. (out_index), CHECKED_CAST(void *, X509_VERIFY_PARAM *, p))
  2752. #define sk_X509_VERIFY_PARAM_shift(sk) \
  2753. ((X509_VERIFY_PARAM *)sk_shift( \
  2754. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2755. #define sk_X509_VERIFY_PARAM_push(sk, p) \
  2756. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2757. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p))
  2758. #define sk_X509_VERIFY_PARAM_pop(sk) \
  2759. ((X509_VERIFY_PARAM *)sk_pop( \
  2760. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2761. #define sk_X509_VERIFY_PARAM_dup(sk) \
  2762. ((STACK_OF(X509_VERIFY_PARAM) *)sk_dup( \
  2763. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2764. #define sk_X509_VERIFY_PARAM_sort(sk) \
  2765. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk))
  2766. #define sk_X509_VERIFY_PARAM_is_sorted(sk) \
  2767. sk_is_sorted( \
  2768. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk))
  2769. #define sk_X509_VERIFY_PARAM_set_cmp_func(sk, comp) \
  2770. ((int (*)(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b)) \
  2771. sk_set_cmp_func( \
  2772. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2773. CHECKED_CAST(stack_cmp_func, int (*)(const X509_VERIFY_PARAM **a, \
  2774. const X509_VERIFY_PARAM **b), \
  2775. comp)))
  2776. #define sk_X509_VERIFY_PARAM_deep_copy(sk, copy_func, free_func) \
  2777. ((STACK_OF(X509_VERIFY_PARAM) *)sk_deep_copy( \
  2778. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2779. CHECKED_CAST(void *(*)(void *), \
  2780. X509_VERIFY_PARAM *(*)(X509_VERIFY_PARAM *), copy_func), \
  2781. CHECKED_CAST(void (*)(void *), void (*)(X509_VERIFY_PARAM *), \
  2782. free_func)))
  2783. /* void */
  2784. #define sk_void_new(comp) \
  2785. ((STACK_OF(void) *)sk_new(CHECKED_CAST( \
  2786. stack_cmp_func, int (*)(const void **a, const void **b), comp)))
  2787. #define sk_void_new_null() ((STACK_OF(void) *)sk_new_null())
  2788. #define sk_void_num(sk) \
  2789. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk))
  2790. #define sk_void_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk));
  2791. #define sk_void_value(sk, i) \
  2792. ((void *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk), \
  2793. (i)))
  2794. #define sk_void_set(sk, i, p) \
  2795. ((void *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (i), \
  2796. CHECKED_CAST(void *, void *, p)))
  2797. #define sk_void_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk))
  2798. #define sk_void_pop_free(sk, free_func) \
  2799. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2800. CHECKED_CAST(void (*)(void *), void (*)(void *), free_func))
  2801. #define sk_void_insert(sk, p, where) \
  2802. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2803. CHECKED_CAST(void *, void *, p), (where))
  2804. #define sk_void_delete(sk, where) \
  2805. ((void *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (where)))
  2806. #define sk_void_delete_ptr(sk, p) \
  2807. ((void *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2808. CHECKED_CAST(void *, void *, p)))
  2809. #define sk_void_find(sk, out_index, p) \
  2810. sk_find(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (out_index), \
  2811. CHECKED_CAST(void *, void *, p))
  2812. #define sk_void_shift(sk) \
  2813. ((void *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk)))
  2814. #define sk_void_push(sk, p) \
  2815. sk_push(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2816. CHECKED_CAST(void *, void *, p))
  2817. #define sk_void_pop(sk) \
  2818. ((void *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk)))
  2819. #define sk_void_dup(sk) \
  2820. ((STACK_OF(void) *)sk_dup( \
  2821. CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk)))
  2822. #define sk_void_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk))
  2823. #define sk_void_is_sorted(sk) \
  2824. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk))
  2825. #define sk_void_set_cmp_func(sk, comp) \
  2826. ((int (*)(const void **a, const void **b))sk_set_cmp_func( \
  2827. CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2828. CHECKED_CAST(stack_cmp_func, int (*)(const void **a, const void **b), \
  2829. comp)))
  2830. #define sk_void_deep_copy(sk, copy_func, free_func) \
  2831. ((STACK_OF(void) *)sk_deep_copy( \
  2832. CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk), \
  2833. CHECKED_CAST(void *(*)(void *), void *(*)(void *), copy_func), \
  2834. CHECKED_CAST(void (*)(void *), void (*)(void *), free_func)))
  2835. /* SRTP_PROTECTION_PROFILE */
  2836. #define sk_SRTP_PROTECTION_PROFILE_new(comp) \
  2837. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_new(CHECKED_CAST( \
  2838. stack_cmp_func, int (*)(const const SRTP_PROTECTION_PROFILE **a, \
  2839. const const SRTP_PROTECTION_PROFILE **b), \
  2840. comp)))
  2841. #define sk_SRTP_PROTECTION_PROFILE_new_null() \
  2842. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_new_null())
  2843. #define sk_SRTP_PROTECTION_PROFILE_num(sk) \
  2844. sk_num(CHECKED_CAST(const _STACK *, \
  2845. const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2846. #define sk_SRTP_PROTECTION_PROFILE_zero(sk) \
  2847. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk));
  2848. #define sk_SRTP_PROTECTION_PROFILE_value(sk, i) \
  2849. ((const SRTP_PROTECTION_PROFILE *)sk_value( \
  2850. CHECKED_CAST(const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, \
  2851. sk), \
  2852. (i)))
  2853. #define sk_SRTP_PROTECTION_PROFILE_set(sk, i, p) \
  2854. ((const SRTP_PROTECTION_PROFILE *)sk_set( \
  2855. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), (i), \
  2856. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p)))
  2857. #define sk_SRTP_PROTECTION_PROFILE_free(sk) \
  2858. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2859. #define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, free_func) \
  2860. sk_pop_free( \
  2861. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2862. CHECKED_CAST(void (*)(void *), \
  2863. void (*)(const SRTP_PROTECTION_PROFILE *), free_func))
  2864. #define sk_SRTP_PROTECTION_PROFILE_insert(sk, p, where) \
  2865. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2866. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p), (where))
  2867. #define sk_SRTP_PROTECTION_PROFILE_delete(sk, where) \
  2868. ((const SRTP_PROTECTION_PROFILE *)sk_delete( \
  2869. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2870. (where)))
  2871. #define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, p) \
  2872. ((const SRTP_PROTECTION_PROFILE *)sk_delete_ptr( \
  2873. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2874. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p)))
  2875. #define sk_SRTP_PROTECTION_PROFILE_find(sk, out_index, p) \
  2876. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2877. (out_index), \
  2878. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p))
  2879. #define sk_SRTP_PROTECTION_PROFILE_shift(sk) \
  2880. ((const SRTP_PROTECTION_PROFILE *)sk_shift( \
  2881. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2882. #define sk_SRTP_PROTECTION_PROFILE_push(sk, p) \
  2883. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2884. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p))
  2885. #define sk_SRTP_PROTECTION_PROFILE_pop(sk) \
  2886. ((const SRTP_PROTECTION_PROFILE *)sk_pop( \
  2887. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2888. #define sk_SRTP_PROTECTION_PROFILE_dup(sk) \
  2889. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_dup(CHECKED_CAST( \
  2890. const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2891. #define sk_SRTP_PROTECTION_PROFILE_sort(sk) \
  2892. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2893. #define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) \
  2894. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  2895. const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2896. #define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, comp) \
  2897. ((int (*)(const SRTP_PROTECTION_PROFILE **a, \
  2898. const SRTP_PROTECTION_PROFILE **b)) \
  2899. sk_set_cmp_func( \
  2900. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2901. CHECKED_CAST(stack_cmp_func, \
  2902. int (*)(const SRTP_PROTECTION_PROFILE **a, \
  2903. const SRTP_PROTECTION_PROFILE **b), \
  2904. comp)))
  2905. #define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copy_func, free_func) \
  2906. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_deep_copy( \
  2907. CHECKED_CAST(const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, \
  2908. sk), \
  2909. CHECKED_CAST( \
  2910. void *(*)(void *), \
  2911. const SRTP_PROTECTION_PROFILE *(*)(const SRTP_PROTECTION_PROFILE *), \
  2912. copy_func), \
  2913. CHECKED_CAST(void (*)(void *), \
  2914. void (*)(const SRTP_PROTECTION_PROFILE *), free_func)))
  2915. /* SSL_CIPHER */
  2916. #define sk_SSL_CIPHER_new(comp) \
  2917. ((STACK_OF(SSL_CIPHER) *)sk_new(CHECKED_CAST( \
  2918. stack_cmp_func, \
  2919. int (*)(const const SSL_CIPHER **a, const const SSL_CIPHER **b), comp)))
  2920. #define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)sk_new_null())
  2921. #define sk_SSL_CIPHER_num(sk) \
  2922. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk))
  2923. #define sk_SSL_CIPHER_zero(sk) \
  2924. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk));
  2925. #define sk_SSL_CIPHER_value(sk, i) \
  2926. ((const SSL_CIPHER *)sk_value( \
  2927. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk), (i)))
  2928. #define sk_SSL_CIPHER_set(sk, i, p) \
  2929. ((const SSL_CIPHER *)sk_set( \
  2930. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (i), \
  2931. CHECKED_CAST(void *, const SSL_CIPHER *, p)))
  2932. #define sk_SSL_CIPHER_free(sk) \
  2933. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk))
  2934. #define sk_SSL_CIPHER_pop_free(sk, free_func) \
  2935. sk_pop_free( \
  2936. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2937. CHECKED_CAST(void (*)(void *), void (*)(const SSL_CIPHER *), free_func))
  2938. #define sk_SSL_CIPHER_insert(sk, p, where) \
  2939. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2940. CHECKED_CAST(void *, const SSL_CIPHER *, p), (where))
  2941. #define sk_SSL_CIPHER_delete(sk, where) \
  2942. ((const SSL_CIPHER *)sk_delete( \
  2943. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (where)))
  2944. #define sk_SSL_CIPHER_delete_ptr(sk, p) \
  2945. ((const SSL_CIPHER *)sk_delete_ptr( \
  2946. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2947. CHECKED_CAST(void *, const SSL_CIPHER *, p)))
  2948. #define sk_SSL_CIPHER_find(sk, out_index, p) \
  2949. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (out_index), \
  2950. CHECKED_CAST(void *, const SSL_CIPHER *, p))
  2951. #define sk_SSL_CIPHER_shift(sk) \
  2952. ((const SSL_CIPHER *)sk_shift( \
  2953. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk)))
  2954. #define sk_SSL_CIPHER_push(sk, p) \
  2955. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2956. CHECKED_CAST(void *, const SSL_CIPHER *, p))
  2957. #define sk_SSL_CIPHER_pop(sk) \
  2958. ((const SSL_CIPHER *)sk_pop( \
  2959. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk)))
  2960. #define sk_SSL_CIPHER_dup(sk) \
  2961. ((STACK_OF(SSL_CIPHER) *)sk_dup( \
  2962. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk)))
  2963. #define sk_SSL_CIPHER_sort(sk) \
  2964. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk))
  2965. #define sk_SSL_CIPHER_is_sorted(sk) \
  2966. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk))
  2967. #define sk_SSL_CIPHER_set_cmp_func(sk, comp) \
  2968. ((int (*)(const SSL_CIPHER **a, const SSL_CIPHER **b))sk_set_cmp_func( \
  2969. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2970. CHECKED_CAST(stack_cmp_func, \
  2971. int (*)(const SSL_CIPHER **a, const SSL_CIPHER **b), \
  2972. comp)))
  2973. #define sk_SSL_CIPHER_deep_copy(sk, copy_func, free_func) \
  2974. ((STACK_OF(SSL_CIPHER) *)sk_deep_copy( \
  2975. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk), \
  2976. CHECKED_CAST(void *(*)(void *), \
  2977. const SSL_CIPHER *(*)(const SSL_CIPHER *), copy_func), \
  2978. CHECKED_CAST(void (*)(void *), void (*)(const SSL_CIPHER *), \
  2979. free_func)))
  2980. /* OPENSSL_STRING */
  2981. #define sk_OPENSSL_STRING_new(comp) \
  2982. ((STACK_OF(OPENSSL_STRING) *)sk_new(CHECKED_CAST( \
  2983. stack_cmp_func, \
  2984. int (*)(const OPENSSL_STRING *a, const OPENSSL_STRING *b), comp)))
  2985. #define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)sk_new_null())
  2986. #define sk_OPENSSL_STRING_num(sk) \
  2987. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk))
  2988. #define sk_OPENSSL_STRING_zero(sk) \
  2989. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk));
  2990. #define sk_OPENSSL_STRING_value(sk, i) \
  2991. ((OPENSSL_STRING)sk_value( \
  2992. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk), \
  2993. (i)))
  2994. #define sk_OPENSSL_STRING_set(sk, i, p) \
  2995. ((OPENSSL_STRING)sk_set( \
  2996. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (i), \
  2997. CHECKED_CAST(void *, OPENSSL_STRING, p)))
  2998. #define sk_OPENSSL_STRING_free(sk) \
  2999. sk_free(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk))
  3000. #define sk_OPENSSL_STRING_pop_free(sk, free_func) \
  3001. sk_pop_free( \
  3002. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  3003. CHECKED_CAST(void (*)(void *), void (*)(OPENSSL_STRING), free_func))
  3004. #define sk_OPENSSL_STRING_insert(sk, p, where) \
  3005. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  3006. CHECKED_CAST(void *, OPENSSL_STRING, p), (where))
  3007. #define sk_OPENSSL_STRING_delete(sk, where) \
  3008. ((OPENSSL_STRING)sk_delete( \
  3009. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (where)))
  3010. #define sk_OPENSSL_STRING_delete_ptr(sk, p) \
  3011. ((OPENSSL_STRING)sk_delete_ptr( \
  3012. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  3013. CHECKED_CAST(void *, OPENSSL_STRING, p)))
  3014. #define sk_OPENSSL_STRING_find(sk, out_index, p) \
  3015. sk_find(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (out_index), \
  3016. CHECKED_CAST(void *, OPENSSL_STRING, p))
  3017. #define sk_OPENSSL_STRING_shift(sk) \
  3018. ((OPENSSL_STRING)sk_shift( \
  3019. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk)))
  3020. #define sk_OPENSSL_STRING_push(sk, p) \
  3021. sk_push(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  3022. CHECKED_CAST(void *, OPENSSL_STRING, p))
  3023. #define sk_OPENSSL_STRING_pop(sk) \
  3024. ((OPENSSL_STRING)sk_pop( \
  3025. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk)))
  3026. #define sk_OPENSSL_STRING_dup(sk) \
  3027. ((STACK_OF(OPENSSL_STRING) *)sk_dup( \
  3028. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk)))
  3029. #define sk_OPENSSL_STRING_sort(sk) \
  3030. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk))
  3031. #define sk_OPENSSL_STRING_is_sorted(sk) \
  3032. sk_is_sorted( \
  3033. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk))
  3034. #define sk_OPENSSL_STRING_set_cmp_func(sk, comp) \
  3035. ((int (*)(const OPENSSL_STRING **a, const OPENSSL_STRING **b)) \
  3036. sk_set_cmp_func( \
  3037. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  3038. CHECKED_CAST(stack_cmp_func, int (*)(const OPENSSL_STRING **a, \
  3039. const OPENSSL_STRING **b), \
  3040. comp)))
  3041. #define sk_OPENSSL_STRING_deep_copy(sk, copy_func, free_func) \
  3042. ((STACK_OF(OPENSSL_STRING) *)sk_deep_copy( \
  3043. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk), \
  3044. CHECKED_CAST(void *(*)(void *), OPENSSL_STRING (*)(OPENSSL_STRING), \
  3045. copy_func), \
  3046. CHECKED_CAST(void (*)(void *), void (*)(OPENSSL_STRING), free_func)))