59 #ifndef HEADER_STACK_H
60 #define HEADER_STACK_H
73 int (*comp)(
const void *,
const void *);
76 #define M_sk_num(sk) ((sk) ? (sk)->num:-1)
77 #define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL)
79 int sk_num(
const _STACK *);
80 void *sk_value(
const _STACK *,
int);
82 void *sk_set(
_STACK *,
int,
void *);
84 _STACK *sk_new(
int (*cmp)(
const void *,
const void *));
87 void sk_pop_free(
_STACK *st,
void (*func)(
void *));
88 int sk_insert(
_STACK *sk,
void *data,
int where);
89 void *sk_delete(
_STACK *st,
int loc);
90 void *sk_delete_ptr(
_STACK *st,
void *p);
91 int sk_find(
_STACK *st,
void *data);
92 int sk_find_ex(
_STACK *st,
void *data);
93 int sk_push(
_STACK *st,
void *data);
94 int sk_unshift(
_STACK *st,
void *data);
95 void *sk_shift(
_STACK *st);
98 int (*sk_set_cmp_func(
_STACK *sk,
int (*c)(
const void *,
const void *)))
99 (
const void *,
const void *);
102 int sk_is_sorted(
const _STACK *st);