docs/Writerside/topics/properties.h.md

Wed, 26 Feb 2025 23:01:27 +0100

author
Mike Becker <universe@uap-core.de>
date
Wed, 26 Feb 2025 23:01:27 +0100
changeset 1229
9899043d7e39
parent 1190
a7b913d5d589
permissions
-rw-r--r--

basic structure for properties docu

relates to #451

1143
0559812df10c assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents: 1142
diff changeset
1 # Properties
1142
9437530176bc add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
2
1229
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
3 The UCX properties parser can be used to parse line-separated key/value strings.
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
4
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
5 <warning>
1229
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
6 New Feature - documentation work in progress!
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
7 </warning>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
8
1229
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
9
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
10 ## Basic Parsing
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
11
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
12 ```C
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
13 #include <cx/properties.h>
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
14
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
15 typedef struct cx_properties_config_s {
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
16 char delimiter;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
17 char comment1;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
18 char comment2;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
19 char comment3;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
20 // reserved for future use - not implemented in UCX 3.1
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
21 char continuation;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
22 } CxPropertiesConfig;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
23
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
24 void cxPropertiesInit(CxProperties *prop, CxPropertiesConfig config);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
25
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
26 void cxPropertiesInitDefault(CxProperties *prop);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
27
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
28 void cxPropertiesDestroy(CxProperties *prop);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
29
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
30 void cxPropertiesReset(CxProperties *prop);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
31
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
32 int cxPropertiesFilln(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
33 const char *buf, size_t len);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
34
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
35 // where S is one of cxstring, cxmutstr, char*, const char*
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
36 int cxPropertiesFill(CxProperties *prop, S string);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
37
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
38 CxPropertiesStatus cxPropertiesNext(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
39 cxstring *key, cxstring *value);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
40
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
41 void cxPropertiesUseStack(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
42 char *buf, size_t capacity);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
43 ```
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
44
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
45 ### List of Status Codes
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
46
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
47 ## Sources and Sinks
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
48
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
49 ```C
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
50 #include <cx/properties.h>
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
51
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
52 CxPropertiesSource
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
53 cxPropertiesStringSource(cxstring str);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
54
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
55 CxPropertiesSource
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
56 cxPropertiesCstrSource(const char *str);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
57
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
58 CxPropertiesSource
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
59 cxPropertiesCstrnSource(const char *str, size_t len);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
60
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
61 CxPropertiesSource
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
62 cxPropertiesFileSource(FILE *file, size_t chunk_size);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
63
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
64 CxPropertiesSink
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
65 cxPropertiesMapSink(CxMap *map);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
66
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
67 CxPropertiesStatus
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
68 cxPropertiesLoad(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
69 CxPropertiesSink sink, CxPropertiesSource source);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
70 ```
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
71
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
72 ### Creating own Sources and Sinks
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
73
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
74 ```C
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
75 #include <cx/properties.h>
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
76
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
77 typedef int(*cx_properties_read_init_func)(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
78 CxPropertiesSource *src);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
79
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
80 typedef int(*cx_properties_read_func)(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
81 CxPropertiesSource *src, cxstring *target);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
82
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
83 typedef void(*cx_properties_read_clean_func)(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
84 CxPropertiesSource *src);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
85
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
86 typedef int(*cx_properties_sink_func)(CxProperties *prop,
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
87 CxPropertiesSink *sink, cxstring key, cxstring value);
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
88
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
89 typedef struct cx_properties_source_s {
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
90 void *src;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
91 void *data_ptr;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
92 size_t data_size;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
93 cx_properties_read_func read_func;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
94 cx_properties_read_init_func read_init_func;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
95 cx_properties_read_clean_func read_clean_func;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
96 } CxPropertiesSource;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
97
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
98 typedef struct cx_properties_sink_s {
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
99 void *sink;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
100 void *data;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
101 cx_properties_sink_func sink_func;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
102 } CxPropertiesSink;
9899043d7e39 basic structure for properties docu
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
103 ```
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
104
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
105 <seealso>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
106 <category ref="apidoc">
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
107 <a href="https://ucx.sourceforge.io/api/properties_8h.html">properties.h</a>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
108 </category>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
109 </seealso>

mercurial