#include <ctype.h>
#include <float.h>
#include <stdlib.h>
+#include "algorithm.h"
#include "alloc.h"
#include "error.h"
#include "expr.h"
union any_node *);
static int type_check (union any_node **n, int type, int flags);
+static algo_compare_func compare_functions;
static void init_func_tab (void);
-static int cmp_func (const void *a, const void *b);
#if DEBUGGING
static void debug_print_tree (union any_node *, int);
struct function f;
f.s = fname;
- fp = bsearch (&f, func_tab, func_count, sizeof *func_tab, cmp_func);
+ fp = binary_search (func_tab, func_count, sizeof *func_tab, &f,
+ compare_functions, NULL);
}
if (!fp)
{"SUBSTR", OP_SUBSTR, generic_str_func, "ssn/n"},
};
+/* An algo_compare_func that compares functions A and B based on
+ their names. */
static int
-cmp_func (const void *a, const void *b)
+compare_functions (const void *a_, const void *b_, void *aux unused)
{
- return strcmp (*(char **) a, *(char **) b);
+ const struct function *a = a_;
+ const struct function *b = b_;
+
+ return strcmp (a->s, b->s);
}
static void
}
func_count = sizeof func_tab / sizeof *func_tab;
- qsort (func_tab, func_count, sizeof *func_tab, cmp_func);
+ sort (func_tab, func_count, sizeof *func_tab, compare_functions, NULL);
}
\f
/* Debug output. */