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