summaryrefslogtreecommitdiff
path: root/src/ternary.h
diff options
context:
space:
mode:
authorRobert James Kaes <rjkaes@users.sourceforge.net>2000-09-12 00:10:28 +0000
committerRobert James Kaes <rjkaes@users.sourceforge.net>2000-09-12 00:10:28 +0000
commit2b5c6be1d514b64dfa34bb272a1b6d740b684ad6 (patch)
treec0d4d3a010e0f883ad1a0770acbdc68c6e833e20 /src/ternary.h
parentde6f42d9fa4532782051ecc6dcac6768014bac69 (diff)
downloadtinyproxy-2b5c6be1d514b64dfa34bb272a1b6d740b684ad6.tar.gz
tinyproxy-2b5c6be1d514b64dfa34bb272a1b6d740b684ad6.zip
Generalized the ternary code which was already being used in anonymous.*
now it can be used (and is used) in both anonymous and dnscache
Diffstat (limited to 'src/ternary.h')
-rw-r--r--src/ternary.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/ternary.h b/src/ternary.h
new file mode 100644
index 0000000..032889d
--- /dev/null
+++ b/src/ternary.h
@@ -0,0 +1,63 @@
+/* $Id: ternary.h,v 1.1 2000-09-12 00:10:28 rjkaes Exp $
+ *
+ * See 'ternary.c' for a detailed description.
+ *
+ * Copyright (C) 2000 Robert James Kaes (rjkaes@flarenet.com)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+
+#ifndef _TINYPROXY_TERNARY_H_
+#define _TINYPROXY_TERNARY_H_
+
+/*
+ * Holds our token for a ternary tree.
+ */
+typedef long int TERNARY;
+
+/*
+ * Macros for testing for errors from the various functions.
+ */
+#define TE_ISERROR(x) ((x) < 0) /* true if x is tlib error code */
+#define TE_NONE 0 /* no errors */
+
+/*
+ * Contains any error messages from the functions.
+ */
+extern char te_errbuf[256];
+
+/*
+ * Macros to fill in te_errbuf
+ */
+#define ERRBUF(str) strncpy(te_errbuf, str, sizeof(te_errbuf))
+#define ERRBUF2(str,n) sprintf(te_errbuf, str, n)
+#define ERRBUF3(str,n,m) sprintf(te_errbuf, str, n, m)
+
+/*
+ * Error return codes
+ */
+#define TE_BADTOKEN -3 /* back token for the trees */
+#define TE_EMPTY -4 /* there is no data found */
+#define TE_TOOFULL -5 /* the buffers are filled */
+#define TE_NOROOM -6 /* can't allocate space (sys err) */
+#define TE_TOOMANYTS -7 /* too many trees in use */
+#define TE_INTINCON -8 /* internal inconsistency */
+
+/*
+ * Library functions.
+ */
+extern TERNARY ternary_new(void);
+extern int ternary_destroy(TERNARY tno, void (*freeptr)(void *));
+
+extern int ternary_insert(TERNARY tno, const char *s, void *data);
+extern int ternary_search(TERNARY tno, const char *s, void **data);
+
+#endif