Wed, 26 Feb 2025 23:01:27 +0100
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> |