+#define _POSIX_C_SOURCE 200809L
/*
Andersson tree library
} \
} while(0)
+int jsw_afind_strcmp(const void *a, const void *b) {
+ return strcmp(a, b);
+}
+
static jsw_anode_t *new_node ( jsw_atree_t *tree, void *data )
{
jsw_anode_t *rn = malloc ( sizeof *rn );
return rn;
}
+jsw_atree_t *jsw_anew_str(void) {
+ return jsw_anew(jsw_afind_strcmp, (dup_f)strdup, (rel_f)free);
+}
+
jsw_atree_t *jsw_anew ( cmp_f cmp, dup_f dup, rel_f rel )
{
jsw_atree_t *rt = malloc ( sizeof *rt );
return rt;
}
-void jsw_adelete ( jsw_atree_t *tree )
-{
- jsw_anode_t *it = tree->root;
- jsw_anode_t *save;
+void jsw_adelete(jsw_atree_t *tree) {
+ jsw_anode_t *it;
+ jsw_anode_t *save;
+
+ if (!tree) {
+ return;
+ }
+
+ it = tree->root;
+
/* Destruction by rotation */
while ( it != tree->nil ) {