Home | History | Annotate | Line # | Download | only in openssl
stack.h revision 1.1.1.1
      1 /*
      2  * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
      3  *
      4  * Licensed under the OpenSSL license (the "License").  You may not use
      5  * this file except in compliance with the License.  You can obtain a copy
      6  * in the file LICENSE in the source distribution or at
      7  * https://www.openssl.org/source/license.html
      8  */
      9 
     10 #ifndef HEADER_STACK_H
     11 # define HEADER_STACK_H
     12 
     13 #ifdef  __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */
     18 
     19 typedef int (*OPENSSL_sk_compfunc)(const void *, const void *);
     20 typedef void (*OPENSSL_sk_freefunc)(void *);
     21 typedef void *(*OPENSSL_sk_copyfunc)(const void *);
     22 
     23 int OPENSSL_sk_num(const OPENSSL_STACK *);
     24 void *OPENSSL_sk_value(const OPENSSL_STACK *, int);
     25 
     26 void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data);
     27 
     28 OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp);
     29 OPENSSL_STACK *OPENSSL_sk_new_null(void);
     30 OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n);
     31 int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n);
     32 void OPENSSL_sk_free(OPENSSL_STACK *);
     33 void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *));
     34 OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *,
     35                                     OPENSSL_sk_copyfunc c,
     36                                     OPENSSL_sk_freefunc f);
     37 int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where);
     38 void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc);
     39 void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p);
     40 int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data);
     41 int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data);
     42 int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data);
     43 int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data);
     44 void *OPENSSL_sk_shift(OPENSSL_STACK *st);
     45 void *OPENSSL_sk_pop(OPENSSL_STACK *st);
     46 void OPENSSL_sk_zero(OPENSSL_STACK *st);
     47 OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk,
     48                                             OPENSSL_sk_compfunc cmp);
     49 OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st);
     50 void OPENSSL_sk_sort(OPENSSL_STACK *st);
     51 int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st);
     52 
     53 # if OPENSSL_API_COMPAT < 0x10100000L
     54 #  define _STACK OPENSSL_STACK
     55 #  define sk_num OPENSSL_sk_num
     56 #  define sk_value OPENSSL_sk_value
     57 #  define sk_set OPENSSL_sk_set
     58 #  define sk_new OPENSSL_sk_new
     59 #  define sk_new_null OPENSSL_sk_new_null
     60 #  define sk_free OPENSSL_sk_free
     61 #  define sk_pop_free OPENSSL_sk_pop_free
     62 #  define sk_deep_copy OPENSSL_sk_deep_copy
     63 #  define sk_insert OPENSSL_sk_insert
     64 #  define sk_delete OPENSSL_sk_delete
     65 #  define sk_delete_ptr OPENSSL_sk_delete_ptr
     66 #  define sk_find OPENSSL_sk_find
     67 #  define sk_find_ex OPENSSL_sk_find_ex
     68 #  define sk_push OPENSSL_sk_push
     69 #  define sk_unshift OPENSSL_sk_unshift
     70 #  define sk_shift OPENSSL_sk_shift
     71 #  define sk_pop OPENSSL_sk_pop
     72 #  define sk_zero OPENSSL_sk_zero
     73 #  define sk_set_cmp_func OPENSSL_sk_set_cmp_func
     74 #  define sk_dup OPENSSL_sk_dup
     75 #  define sk_sort OPENSSL_sk_sort
     76 #  define sk_is_sorted OPENSSL_sk_is_sorted
     77 # endif
     78 
     79 #ifdef  __cplusplus
     80 }
     81 #endif
     82 
     83 #endif
     84