add kowhai_[de]serialize_nodes() to serialise the tree in a flat
jason file where the tree path is encoded in a string .. this is
more useful for editing by hand in a file, or if you just want to
write part of a tree, ie writing every instance of bar in foo, but
only bar not the other surrounding elements of foo, ie:
element:
struct
{
int untouched1;
int bar;
int untouched2;
} foo[4];
note that this api does not rebuild a kowhai_tree from scratch given
the serialised file, instead it merges the data it has into an
existing tree with a similar structure (see kowahi_node_not_found_t
callback for merging options) .. also it requires (cannot be NULL)
as kowahi_get_symbol_t callback to convert a symbol string to a node
id and a kowahi_get_symbol_name_t (like the tree api) ... if human
readable symbol strings are not used you can just printf and scanf
the numbers into the tree, if symbol names are used they must not
include '.' or '[' or ']' characters (these are special delimiters
in path encoding.
renamed kowhai[de]serialize() -> kowhai[de]serialize_tree() ...
functionality remains unchanged (done just to make clear what type
of serialization is being performed, ie not nodes)
add new error types for new api's
replace a union type for all kowhai type that was being redefined
over and over with a named union called anytype_t
unit test updated for api name changes and cover all foreseeable
error conditions on new kowhai_[de]serialize() api, and of course
the successful condition of serializing and de-serializing a kowahi
tee's nodes is done
summary of changes: