FossilOrigin-Name: 0d6e3747e416a3d4657f1bc6beb9d8c74ef5cca62a13637df26d7aa357ae37b5
This commit is contained in:
7u83@mail.ru 2015-04-19 21:28:26 +00:00
parent 381c910eec
commit 001d36e25a
3 changed files with 95 additions and 0 deletions

39
src/capwap/mavl_foreach.c Normal file
View File

@ -0,0 +1,39 @@
/*
This file is part of libcapwap.
libcapwap 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 3 of the License, or
(at your option) any later version.
libcapwap 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.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mavl.h"
int mavl_foreach_rl(struct mavlnode *n, int (*callback)(void *,void *),void *cbpriv)
{
if (!n)
return 1;
if (!mavl_foreach_rl(n->right,callback,cbpriv))
return 0;
if (!callback(cbpriv,n->data))
return 0;
return mavl_foreach_rl(n->left,callback,cbpriv);
}
void mavl_foreach(struct mavl *t, int (*callback)(void *,void *),void * cbpriv,int dir)
{
if (dir)
mavl_foreach_lr(t->root,callback,cbpriv);
else
mavl_foreach_rl(t->root,callback,cbpriv);
}

View File

@ -0,0 +1,17 @@
#include "mavl.h"
int mavl_foreach_lr(struct mavlnode *n, int (*callback)(void *,void *),void *cbpriv)
{
if (!n)
return 1;
if (!mavl_foreach_lr(n->left,callback,cbpriv))
return 0;
if (!callback(cbpriv,n->data))
return 0;
return mavl_foreach_lr(n->right,callback,cbpriv);
}

View File

@ -0,0 +1,39 @@
/*
This file is part of libcapwap.
libcapwap 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 3 of the License, or
(at your option) any later version.
libcapwap 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.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include "mavl.h"
struct mavlnode * mavl_get_node(struct mavl *t ,void *data)
{
struct mavlnode *n = t->root;
while(n){
int rc=t->cmp(data,n->data);
if (rc==0)
return n;
if (rc<0)
n=n->left;
else
n=n->right;
}
return NULL;
}