aboutsummaryrefslogtreecommitdiff
path: root/lib/eztree.c
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2016-08-28 16:31:16 +0200
committerKatharina Fey <kookie@spacekookie.de>2019-06-04 20:21:03 +0200
commita0f0220726f84dc62f49b593481a00f005e3443e (patch)
tree60417ee05f836c95ad47fcef068ced21f2c59d9a /lib/eztree.c
parent75481c8cb77067cda4c9fb6499d72764f7e84a24 (diff)
First version of the "eztree" api. It provides more straight-forward ways to use libdyntree (in a less safe way however!)
eztree_* functions do not provide error chec
Diffstat (limited to 'lib/eztree.c')
-rw-r--r--lib/eztree.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/eztree.c b/lib/eztree.c
new file mode 100644
index 0000000..ba8506a
--- /dev/null
+++ b/lib/eztree.c
@@ -0,0 +1,77 @@
+// Include eztree header file
+#include <dtree/eztree.h>
+
+dtree *eztree_new_literal(const char *string)
+{
+ dtree *node;
+ dtree_malloc(&node);
+ dtree_addliteral(node, string);
+ return node;
+}
+
+
+dtree *eztree_new_numeric(const long num)
+{
+ dtree *node;
+ dtree_malloc(&node);
+ dtree_addnumeral(node, num);
+ return node;
+}
+
+
+dtree *eztree_new_pair(const char *kdata, void *vdata, short type)
+{
+ dtree *root, *key, *val;
+
+ /* Allocate nodes */
+ dtree_malloc(&root);
+ dtree_addpair(root, &key, &val);
+
+ /* Fill the data */
+ dtree_addliteral(key, kdata);
+ switch(type) {
+ case EZTREE_LITERAL:
+ dtree_addliteral(val, (char*) vdata);
+ break;
+
+ case EZTREE_NUMERIC:
+ // FIXME: This might be dangerous on 32bit
+ dtree_addnumeral(val, (long) vdata);
+ break;
+
+ case EZTREE_NESTED:
+ {
+ dtree *tmp;
+ dtree_addlist(val, &tmp);
+
+ /* Manually override data */
+ memcpy(val->payload.list[0], vdata, sizeof(vdata));
+ break;
+ }
+
+ default: break;
+ }
+
+ return root;
+}
+
+//
+//dtree *eztree_new_list(dtree **list, size_t size)
+//{
+// /* Prepare our buffer */
+// memset(list, 0, sizeof(dtree*) * size);
+//
+// /* Prepare root node */
+// dtree *root;
+// dtree_malloc(&root);
+//
+// /* Add apropriate number of children to root node */
+// int i;
+// for(i = 0; i < size; i++) {
+// dtree *tmp;
+// dtree_addlist(root, &tmp);
+// list[i] = tmp;
+// }
+//
+// return root;
+//} \ No newline at end of file