/*
* Elastic Binary Trees - exported functions for Indirect String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
*
* 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
/* Consult ebistree.h for more details about those functions */
#include "ebistree.h"
-#include "ebimtree.h"
/* Find the first occurence of a zero-terminated string <x> in the tree <root>.
* It's the caller's reponsibility to use this function only on trees which
return __ebis_lookup(root, x);
}
-/* Find the first occurence of a length <len> string <x> in the tree <root>.
- * It's the caller's reponsibility to use this function only on trees which
- * only contain zero-terminated strings, and that no null character is present
- * in string <x> in the first <len> chars. If none can be found, return NULL.
- */
-REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len)
-{
- struct ebpt_node *node;
-
- node = ebim_lookup(root, x, len);
- if (!node || ((const char *)node->key)[len] != 0)
- return NULL;
- return node;
-}
-
/* Insert ebpt_node <new> into subtree starting at node root <root>. Only
* new->key needs be set with the zero-terminated string key. The ebpt_node is
* returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
/*
* Elastic Binary Trees - macros to manipulate Indirect String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
*
* 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
#include <string.h>
#include "ebtree.h"
#include "ebpttree.h"
+#include "ebimtree.h"
/* These functions and macros rely on Pointer nodes and use the <key> entry as
* a pointer to an indirect key. Most operations are performed using ebpt_*.
* in ebistree.c, which simply relies on their inline version.
*/
REGPRM2 struct ebpt_node *ebis_lookup(struct eb_root *root, const char *x);
-REGPRM3 struct ebpt_node *ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len);
REGPRM2 struct ebpt_node *ebis_insert(struct eb_root *root, struct ebpt_node *new);
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+static forceinline struct ebpt_node *
+ebis_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+ struct ebpt_node *node;
+
+ node = ebim_lookup(root, x, len);
+ if (!node || ((const char *)node->key)[len] != 0)
+ return NULL;
+ return node;
+}
+
/* Find the first occurence of a zero-terminated string <x> in the tree <root>.
* It's the caller's reponsibility to use this function only on trees which
* only contain zero-terminated strings. If none can be found, return NULL.
/*
* Elastic Binary Trees - exported functions for String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
*
* 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
return __ebst_lookup(root, x);
}
-/* Find the first occurence of a length <len> string <x> in the tree <root>.
- * It's the caller's reponsibility to use this function only on trees which
- * only contain zero-terminated strings, and that no null character is present
- * in string <x> in the first <len> chars. If none can be found, return NULL.
- */
-REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len)
-{
- struct ebmb_node *node;
-
- node = ebmb_lookup(root, x, len);
- if (!node || node->key[len] != 0)
- return NULL;
- return node;
-}
-
/* Insert ebmb_node <new> into subtree starting at node root <root>. Only
* new->key needs be set with the zero-terminated string key. The ebmb_node is
* returned. If root->b[EB_RGHT]==1, the tree may only contain unique keys. The
/*
* Elastic Binary Trees - macros to manipulate String data nodes.
- * Version 6.0
- * (C) 2002-2010 - Willy Tarreau <w@1wt.eu>
+ * Version 6.0.5
+ * (C) 2002-2011 - Willy Tarreau <w@1wt.eu>
*
* 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
* in ebsttree.c, which simply relies on their inline version.
*/
REGPRM2 struct ebmb_node *ebst_lookup(struct eb_root *root, const char *x);
-REGPRM3 struct ebmb_node *ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len);
REGPRM2 struct ebmb_node *ebst_insert(struct eb_root *root, struct ebmb_node *new);
+/* Find the first occurence of a length <len> string <x> in the tree <root>.
+ * It's the caller's reponsibility to use this function only on trees which
+ * only contain zero-terminated strings, and that no null character is present
+ * in string <x> in the first <len> chars. If none can be found, return NULL.
+ */
+static forceinline struct ebmb_node *
+ebst_lookup_len(struct eb_root *root, const char *x, unsigned int len)
+{
+ struct ebmb_node *node;
+
+ node = ebmb_lookup(root, x, len);
+ if (!node || node->key[len] != 0)
+ return NULL;
+ return node;
+}
+
/* Find the first occurence of a zero-terminated string <x> in the tree <root>.
* It's the caller's reponsibility to use this function only on trees which
* only contain zero-terminated strings. If none can be found, return NULL.