forked from enlightenment/efl
parent
3a10b7f782
commit
9494785cb7
|
@ -22,6 +22,7 @@ eina_inline_list.x \
|
|||
eina_accessor.h \
|
||||
eina_convert.h \
|
||||
eina_rbtree.h \
|
||||
eina_inline_rbtree.x \
|
||||
eina_iterator.h
|
||||
|
||||
installed_mainheaderdir = $(prefix)/include/eina-@VMAJ@
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/* EINA - EFL data type library
|
||||
* Copyright (C) 2002-2008 Carsten Haitzler, Vincent Torri, Jorge Luis Zapata Muga
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library;
|
||||
* if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef EINA_RBTREE_INLINE_H_
|
||||
#define EINA_RBTREE_INLINE_H_
|
||||
|
||||
static inline Eina_Rbtree *
|
||||
eina_rbtree_inline_lookup(Eina_Rbtree *root, const void *key, int length, Eina_Rbtree_Cmp_Key_Cb cmp)
|
||||
{
|
||||
int result;
|
||||
|
||||
while (root)
|
||||
{
|
||||
result = cmp(root, key, length);
|
||||
if (result == 0) return root;
|
||||
|
||||
root = root->son[result < 0 ? 0 : 1];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -49,10 +49,13 @@ typedef int (*Eina_Rbtree_Cmp_Key_Cb)(const Eina_Rbtree *node, const void *key,
|
|||
|
||||
EAPI Eina_Rbtree *eina_rbtree_inline_insert(Eina_Rbtree *root, Eina_Rbtree *node, Eina_Rbtree_Cmp_Node_Cb cmp);
|
||||
EAPI Eina_Rbtree *eina_rbtree_inline_remove(Eina_Rbtree *root, Eina_Rbtree *node, Eina_Rbtree_Cmp_Node_Cb cmp);
|
||||
EAPI Eina_Rbtree *eina_rbtree_inline_lookup(Eina_Rbtree *root, const void *key, int length, Eina_Rbtree_Cmp_Key_Cb cmp);
|
||||
|
||||
static inline Eina_Rbtree *eina_rbtree_inline_lookup(Eina_Rbtree *root, const void *key, int length, Eina_Rbtree_Cmp_Key_Cb cmp);
|
||||
|
||||
EAPI Eina_Iterator *eina_rbtree_iterator_prefix(const Eina_Rbtree *root);
|
||||
EAPI Eina_Iterator *eina_rbtree_iterator_infix(const Eina_Rbtree *root);
|
||||
EAPI Eina_Iterator *eina_rbtree_iterator_postfix(const Eina_Rbtree *root);
|
||||
|
||||
#include "eina_inline_rbtree.x"
|
||||
|
||||
#endif
|
||||
|
|
|
@ -429,22 +429,6 @@ eina_rbtree_inline_remove(Eina_Rbtree *root, Eina_Rbtree *node, Eina_Rbtree_Cmp_
|
|||
return root;
|
||||
}
|
||||
|
||||
EAPI Eina_Rbtree *
|
||||
eina_rbtree_inline_lookup(Eina_Rbtree *root, const void *key, int length, Eina_Rbtree_Cmp_Key_Cb cmp)
|
||||
{
|
||||
int result;
|
||||
|
||||
while (root)
|
||||
{
|
||||
result = cmp(root, key, length);
|
||||
if (result == 0) return root;
|
||||
|
||||
root = root->son[result < 0 ? 0 : 1];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI Eina_Iterator *
|
||||
eina_rbtree_iterator_prefix(const Eina_Rbtree *root)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue