int (*comp)();
} STACK;
-#define sk_num(sk) ((sk)->num)
-#define sk_value(sk,n) ((sk)->data[n])
#define sk_new_null() sk_new(NULL)
+#define M_sk_num(sk) ((sk) ? (sk)->num:-1)
+#define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL)
+
+int sk_num(STACK *);
+char *sk_value(STACK *, int);
+
+char *sk_set(STACK *, int, char *);
+
STACK *sk_new(int (*cmp)());
void sk_free(STACK *);
void sk_pop_free(STACK *st, void (*func)());
void sk_zero(STACK *st);
int (*sk_set_cmp_func(STACK *sk, int (*c)()))();
STACK *sk_dup(STACK *st);
+void sk_sort(STACK *st);
#ifdef __cplusplus
}