[OPTIM] ebtree: inline ebst_lookup_len and ebis_lookup_len
(from ebtree 6.0.5) Both of them are very short and rely on another non-inlined lookup function, so it's pointless to have them as pure functions, it wastes space. (cherry picked from commit 1e68d6fef815f759304d4cc0e65f957689e19a7a)
This commit is contained in:
parent
ce3d44a06a
commit
e1ee956399
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
@ -21,7 +21,6 @@
|
|||
/* 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
|
||||
|
@ -32,21 +31,6 @@ REGPRM2 struct ebpt_node *ebis_lookup(struct eb_root *root, const char *x)
|
|||
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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
@ -23,6 +23,7 @@
|
|||
#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_*.
|
||||
|
@ -32,9 +33,24 @@
|
|||
* 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.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
@ -31,21 +31,6 @@ REGPRM2 struct ebmb_node *ebst_lookup(struct eb_root *root, const char *x)
|
|||
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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
|
@ -30,9 +30,24 @@
|
|||
* 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.
|
||||
|
|
Loading…
Reference in New Issue