From 001d36e25aa62b7968ce706c1b3fc500fa7b60c0 Mon Sep 17 00:00:00 2001
From: "7u83@mail.ru" <7u83@mail.ru@noemail.net>
Date: Sun, 19 Apr 2015 21:28:26 +0000
Subject: [PATCH] mavl...
FossilOrigin-Name: 0d6e3747e416a3d4657f1bc6beb9d8c74ef5cca62a13637df26d7aa357ae37b5
---
src/capwap/mavl_foreach.c | 39 ++++++++++++++++++++++++++++++++++++
src/capwap/mavl_foreach_lr.c | 17 ++++++++++++++++
src/capwap/mavl_get_node.c | 39 ++++++++++++++++++++++++++++++++++++
3 files changed, 95 insertions(+)
create mode 100644 src/capwap/mavl_foreach.c
create mode 100644 src/capwap/mavl_foreach_lr.c
create mode 100644 src/capwap/mavl_get_node.c
diff --git a/src/capwap/mavl_foreach.c b/src/capwap/mavl_foreach.c
new file mode 100644
index 00000000..49930ad7
--- /dev/null
+++ b/src/capwap/mavl_foreach.c
@@ -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 .
+
+*/
+
+#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);
+}
+
diff --git a/src/capwap/mavl_foreach_lr.c b/src/capwap/mavl_foreach_lr.c
new file mode 100644
index 00000000..cb1fbf5d
--- /dev/null
+++ b/src/capwap/mavl_foreach_lr.c
@@ -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);
+
+}
+
+
diff --git a/src/capwap/mavl_get_node.c b/src/capwap/mavl_get_node.c
new file mode 100644
index 00000000..e9aa543f
--- /dev/null
+++ b/src/capwap/mavl_get_node.c
@@ -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 .
+
+*/
+
+
+#include
+
+#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;
+}
+