aboutsummaryrefslogtreecommitdiff
path: root/development/libs/libbowl/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'development/libs/libbowl/README.md')
-rw-r--r--development/libs/libbowl/README.md73
1 files changed, 73 insertions, 0 deletions
diff --git a/development/libs/libbowl/README.md b/development/libs/libbowl/README.md
new file mode 100644
index 000000000000..bd9ac7bddb0a
--- /dev/null
+++ b/development/libs/libbowl/README.md
@@ -0,0 +1,73 @@
+libbowl [![][badge]][badge-link]
+=======
+
+The last C datastructure library you will ever use. Provides a
+versalite API to build nested, serial and hashed structure nodes.
+
+Check out the [issue tracker][issues]
+
+I hope you enjoy ❤
+
+[badge]: https://builds.sr.ht/~spacekookie/libbowl.svg
+[badge-link]: https://builds.sr.ht/~spacekookie/libbowl?
+[issues]: https://todo.sr.ht/~spacekookie/libbowl
+
+Exampple
+--------
+
+The root structure in `libbowl` is a `bowl`. It can either be a leaf
+node, containing some data (`bowl_data`, which can be many types),
+or be a structure node, either in `ARRAY`, `LINK` or `HASH` mode.
+
+Each `libbowl` function returns a status code and uses reverse-input
+pointers to communicate results. A convenience `DEBUG` macro is included.
+
+```C
+bowl *list;
+int r = bowl_malloc(&list, ARRAY);
+if(r) { printf("Failed to malloc!\n"); exit(2); }
+
+// `DEBUG` does the same thing as the above `if`
+bowl *number;
+DEBUG (data_malloc(&number, INTEGER, 1312))
+
+// Finally append data into list
+DEBUG (bowl_append(list, number))
+```
+
+Generally, `data` prefixed functions are convenience wrappers around
+allocating a `bowl`, setting it's type to `LEAF`, and inserting some
+data into it (performing at least 2 allocation calls).
+
+Freeing a `bowl` structure is as easy as calling free on the top node.
+
+```C
+// ...
+DEBUG (bowl_free(list))
+```
+
+How to build
+------------
+
+Build dependencies
+
+- gcc (`4.0+`)
+- cmake (`2.18+`)
+
+An out-of-source build is recommended. You can specify the linking
+behaviour with `-DLINK_DYNAMIC=1`. Optionally you can disable tests
+with `-DRUN_TESTS=0`.
+
+```
+$ mkdir build; cd build
+$ cmake .. -DLINK_DYNAMIC=1 -DRUN_TESTS=1
+$ make
+```
+
+License
+-------
+
+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
+the Free Software Foundation; either version 3 of the License, or (at
+your option) any later version.