Type aware properties improvements
Intro
Improve celix properties so that properties can be stored and loaded to/from file with type information and encode (serialize) to/from netstring with type information.
Store / Load
Ensure that properties stored using celix_properties_store contain type information if the entry is not a string (i.e. long, double, boolean or version) and that properties loaded using celix_properties_load, celix_properties_loadWithStream or celix_properties_loadFromString used the optional type information to load a type aware properties set.
Properties netstring encoding
Add some util functions that can encode/decode a celix properties set to/from a netstring sequence.
The properties can be a netstring sequence where the content is:
- a number of properties entries in the netstring sequence, where every entry has 3 netstring entries
- a string key
- a dfi descriptor type (
t(string),J(long),D(double) orZ(boolean)lcelix_version_t;(celix version)) - a string representation of the value
Array support
Currently properties do not support a array of typed entries. Support for typed arrays for the following types (string, long, double, bool and celix_version_t) would be nice to have.
It will be nice to have array support. If we went one step further to support embedding properties, celix properties will become json.
In PR #727, element types for the array list were introduced.
To ensure the introduction of array list element types is backwards compatible, a potential element type value of CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINED was added. The support for the CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINED element type is intended to be temporary. This addition allows for a separate PR that focuses solely on refactoring Celix array list usage.
- [ ] Create a pull request to remove the
CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINEDarray list element type and thecelix_arrayList_createfunction. Additionally, refactor all instances where the undefined array list usage occurs.