Thu, 30 Oct 2025 19:26:47 +0100
add tests for cxListDifference() - resolves #751
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 1 | /* | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 3 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 4 | * Copyright 2024 Mike Becker, Olaf Wintermann All rights reserved. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 5 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 6 | * Redistribution and use in source and binary forms, with or without | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 7 | * modification, are permitted provided that the following conditions are met: | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 8 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 9 | * 1. Redistributions of source code must retain the above copyright | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 10 | * notice, this list of conditions and the following disclaimer. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 11 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 12 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 13 | * notice, this list of conditions and the following disclaimer in the | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 14 | * documentation and/or other materials provided with the distribution. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 15 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 26 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 27 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 28 | /** | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 29 | * @file properties.h | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 30 | * @brief Interface for parsing data from properties files. | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 31 | * @author Mike Becker | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 32 | * @author Olaf Wintermann | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 33 | * @copyright 2-Clause BSD License | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 34 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 35 | |
| 1069 
6565e7ef5ee3
fix include guard for properties.h
 Mike Becker <universe@uap-core.de> parents: 
1059diff
changeset | 36 | #ifndef UCX_PROPERTIES_H | 
| 
6565e7ef5ee3
fix include guard for properties.h
 Mike Becker <universe@uap-core.de> parents: 
1059diff
changeset | 37 | #define UCX_PROPERTIES_H | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 38 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 39 | #include "common.h" | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 40 | #include "string.h" | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 41 | #include "map.h" | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
1013diff
changeset | 42 | #include "buffer.h" | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 43 | |
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 44 | #include <stdio.h> | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
932diff
changeset | 45 | #include <string.h> | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 46 | |
| 932 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 47 | #ifdef __cplusplus | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 48 | extern "C" { | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 49 | #endif | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 50 | |
| 1036 
6d29532a76c3
add missing documentation for struct cx_properties_config_s
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 51 | /** | 
| 
6d29532a76c3
add missing documentation for struct cx_properties_config_s
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 52 | * Configures the expected characters for the properties parser. | 
| 
6d29532a76c3
add missing documentation for struct cx_properties_config_s
 Mike Becker <universe@uap-core.de> parents: 
1031diff
changeset | 53 | */ | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 54 | struct cx_properties_config_s { | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 55 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 56 | * The key/value delimiter that shall be used. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 57 | * This is '=' by default. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 58 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 59 | char delimiter; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 60 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 61 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 62 | * The first comment character. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 63 | * This is '#' by default. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 64 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 65 | char comment1; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 66 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 67 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 68 | * The second comment character. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 69 | * This is not set by default. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 70 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 71 | char comment2; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 72 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 73 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 74 | * The third comment character. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 75 | * This is not set by default. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 76 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 77 | char comment3; | 
| 1193 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 78 | |
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 79 | /* | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 80 | * The character, when appearing at the end of a line, continues that line. | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 81 | * This is '\' by default. | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 82 | */ | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 83 | /** | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 84 | * Reserved for future use. | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 85 | */ | 
| 
cfa44f3f5e3b
last minute fixes for issue #548
 Mike Becker <universe@uap-core.de> parents: 
1180diff
changeset | 86 | char continuation; | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 87 | }; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 88 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 89 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 90 | * Typedef for the properties config. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 91 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 92 | typedef struct cx_properties_config_s CxPropertiesConfig; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 93 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 94 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 95 | * Default properties configuration. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 96 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 97 | CX_EXPORT extern const CxPropertiesConfig cx_properties_config_default; | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 98 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 99 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 100 | * Status codes for the properties interface. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 101 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 102 | enum cx_properties_status { | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 103 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 104 | * Everything is fine. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 105 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 106 | CX_PROPERTIES_NO_ERROR, | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 107 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 108 | * The input buffer does not contain more data. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 109 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 110 | CX_PROPERTIES_NO_DATA, | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 111 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 112 | * The input ends unexpectedly. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 113 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 114 | * This either happens when the last line does not terminate with a line | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 115 | * break, or when the input ends with a parsed key but no value. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 116 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 117 | CX_PROPERTIES_INCOMPLETE_DATA, | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 118 | /** | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 119 | * Not used as a status and never returned by any function. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 120 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 121 | * You can use this enumerator to check for all "good" status results | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 122 | * by checking if the status is less than @c CX_PROPERTIES_OK. | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 123 | * | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 124 | * A "good" status means that you can refill data and continue parsing. | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 125 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 126 | CX_PROPERTIES_OK, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 127 | /** | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 128 | * Input buffer is @c NULL. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 129 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 130 | CX_PROPERTIES_NULL_INPUT, | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 131 | /** | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 132 | * The line contains a delimiter but no key. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 133 | */ | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 134 | CX_PROPERTIES_INVALID_EMPTY_KEY, | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 135 | /** | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 136 | * The line contains data but no delimiter. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 137 | */ | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 138 | CX_PROPERTIES_INVALID_MISSING_DELIMITER, | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 139 | /** | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 140 | * More internal buffer was needed, but could not be allocated. | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 141 | */ | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 142 | CX_PROPERTIES_BUFFER_ALLOC_FAILED, | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 143 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 144 | * Initializing the properties source failed. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 145 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 146 | * @see cx_properties_read_init_func | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 147 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 148 | CX_PROPERTIES_READ_INIT_FAILED, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 149 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 150 | * Reading from a properties source failed. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 151 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 152 | * @see cx_properties_read_func | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 153 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 154 | CX_PROPERTIES_READ_FAILED, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 155 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 156 | * Sinking a k/v-pair failed. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 157 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 158 | * @see cx_properties_sink_func | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 159 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 160 | CX_PROPERTIES_SINK_FAILED, | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 161 | }; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 162 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 163 | /** | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 164 | * Typedef for the properties status enum. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 165 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 166 | typedef enum cx_properties_status CxPropertiesStatus; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 167 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 168 | /** | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 169 | * Interface for working with properties data. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 170 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 171 | struct cx_properties_s { | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 172 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 173 | * The configuration. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 174 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 175 | CxPropertiesConfig config; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 176 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 177 | /** | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
1013diff
changeset | 178 | * The text input buffer. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 179 | */ | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
1013diff
changeset | 180 | CxBuffer input; | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 181 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 182 | /** | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
1013diff
changeset | 183 | * Internal buffer. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 184 | */ | 
| 1031 
8a90552bba29
rework of properties parser - fixes #529 and resolves #458
 Mike Becker <universe@uap-core.de> parents: 
1013diff
changeset | 185 | CxBuffer buffer; | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 186 | }; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 187 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 188 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 189 | * Typedef for the properties interface. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 190 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 191 | typedef struct cx_properties_s CxProperties; | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 192 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 193 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 194 | /** | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 195 | * Typedef for a properties sink. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 196 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 197 | typedef struct cx_properties_sink_s CxPropertiesSink; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 198 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 199 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 200 | * A function that consumes a k/v-pair in a sink. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 201 | * | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 202 | * The sink could be a map, and the sink function would be calling | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 203 | * a map function to store the k/v-pair. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 204 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 205 | * @param prop the properties interface that wants to sink a k/v-pair | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 206 | * @param sink the sink | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 207 | * @param key the key | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 208 | * @param value the value | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 209 | * @retval zero success | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 210 | * @retval non-zero sinking the k/v-pair failed | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 211 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 212 | typedef int(*cx_properties_sink_func)( | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 213 | CxProperties *prop, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 214 | CxPropertiesSink *sink, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 215 | cxstring key, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 216 | cxstring value | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 217 | ); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 218 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 219 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 220 | * Defines a sink for k/v-pairs. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 221 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 222 | struct cx_properties_sink_s { | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 223 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 224 | * The sink object. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 225 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 226 | void *sink; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 227 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 228 | * Optional custom data. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 229 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 230 | void *data; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 231 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 232 | * A function for consuming k/v-pairs into the sink. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 233 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 234 | cx_properties_sink_func sink_func; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 235 | }; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 236 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 237 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 238 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 239 | * Typedef for a properties source. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 240 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 241 | typedef struct cx_properties_source_s CxPropertiesSource; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 242 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 243 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 244 | * A function that reads data from a source. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 245 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 246 | * When the source is depleted, implementations SHALL provide an empty | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 247 | * string in the @p target and return zero. | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 248 | * A non-zero return value is only permitted in case of an error. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 249 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 250 | * The meaning of the optional parameters is implementation-dependent. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 251 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 252 | * @param prop the properties interface that wants to read from the source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 253 | * @param src the source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 254 | * @param target a string buffer where the read data shall be stored | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 255 | * @retval zero success | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 256 | * @retval non-zero reading the data failed | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 257 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 258 | typedef int(*cx_properties_read_func)( | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 259 | CxProperties *prop, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 260 | CxPropertiesSource *src, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 261 | cxstring *target | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 262 | ); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 263 | |
| 932 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 264 | /** | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 265 | * A function that may initialize additional memory for the source. | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 266 | * | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 267 | * @param prop the properties interface that wants to read from the source | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 268 | * @param src the source | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 269 | * @retval zero initialization was successful | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 270 | * @retval non-zero otherwise | 
| 932 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 271 | */ | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 272 | typedef int(*cx_properties_read_init_func)( | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 273 | CxProperties *prop, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 274 | CxPropertiesSource *src | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 275 | ); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 276 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 277 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 278 | * A function that cleans memory initialized by the read_init_func. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 279 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 280 | * @param prop the properties interface that wants to read from the source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 281 | * @param src the source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 282 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 283 | typedef void(*cx_properties_read_clean_func)( | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 284 | CxProperties *prop, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 285 | CxPropertiesSource *src | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 286 | ); | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 287 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 288 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 289 | * Defines a properties source. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 290 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 291 | struct cx_properties_source_s { | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 292 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 293 | * The source object. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 294 | * | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 295 | * For example, a file stream or a string. | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 296 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 297 | void *src; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 298 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 299 | * Optional additional data pointer. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 300 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 301 | void *data_ptr; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 302 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 303 | * Optional size information. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 304 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 305 | size_t data_size; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 306 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 307 | * A function that reads data from the source. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 308 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 309 | cx_properties_read_func read_func; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 310 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 311 | * Optional function that may prepare the source for reading data. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 312 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 313 | cx_properties_read_init_func read_init_func; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 314 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 315 | * Optional function that cleans additional memory allocated by the | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 316 | * read_init_func. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 317 | */ | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 318 | cx_properties_read_clean_func read_clean_func; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 319 | }; | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 320 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 321 | /** | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 322 | * Initialize a properties interface. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 323 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 324 | * @param prop the properties interface | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 325 | * @param config the properties configuration | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 326 | * @see cxPropertiesInitDefault() | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 327 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
980diff
changeset | 328 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 329 | CX_EXPORT void cxPropertiesInit(CxProperties *prop, CxPropertiesConfig config); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 330 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 331 | /** | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 332 | * Destroys the properties interface. | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 333 | * | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 334 | * @note Even when you are certain that you did not use the interface in a | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 335 | * way that caused a memory allocation, you should call this function anyway. | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 336 | * Future versions of the library might add features that need additional memory, | 
| 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 337 | * and you really don't want to search the entire code where you might need to | 
| 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 338 | * add a call to this function. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 339 | * | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 340 | * @param prop the properties interface | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 341 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
980diff
changeset | 342 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 343 | CX_EXPORT void cxPropertiesDestroy(CxProperties *prop); | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 344 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 345 | /** | 
| 1013 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 346 | * Destroys and re-initializes the properties interface. | 
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 347 | * | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 348 | * You might want to use this to reset the parser after | 
| 1013 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 349 | * encountering a syntax error. | 
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 350 | * | 
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 351 | * @param prop the properties interface | 
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 352 | */ | 
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 353 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 354 | CX_EXPORT void cxPropertiesReset(CxProperties *prop); | 
| 1013 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 355 | |
| 
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
 Mike Becker <universe@uap-core.de> parents: 
988diff
changeset | 356 | /** | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 357 | * Initialize a properties parser with the default configuration. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 358 | * | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 359 | * @param prop (@c CxProperties*) the properties interface | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 360 | * @see cxPropertiesInit() | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 361 | */ | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 362 | #define cxPropertiesInitDefault(prop) \ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 363 | cxPropertiesInit(prop, cx_properties_config_default) | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 364 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 365 | /** | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
932diff
changeset | 366 | * Fills the input buffer with data. | 
| 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
932diff
changeset | 367 | * | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 368 | * After calling this function, you can parse the data by calling | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 369 | * cxPropertiesNext(). | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 370 | * | 
| 1058 
d347f74ce7d1
downgrades the severity of the advice in cxPropertiesFilln() from attention to remark
 Mike Becker <universe@uap-core.de> parents: 
1038diff
changeset | 371 | * @remark The properties interface tries to avoid allocations. | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 372 | * When you use this function and cxPropertiesNext() interleaving, | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 373 | * no allocations are performed. However, you must not free the | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 374 | * pointer to the data in that case. When you invoke the fill | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 375 | * function more than once before calling cxPropertiesNext(), | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 376 | * the additional data is appended - inevitably leading to | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 377 | * an allocation of a new buffer and copying the previous contents. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 378 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 379 | * @param prop the properties interface | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 380 | * @param buf a pointer to the data | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 381 | * @param len the length of the data | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 382 | * @retval zero success | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 383 | * @retval non-zero a memory allocation was necessary but failed | 
| 1059 
154eb64ce746
add references between both variants of the properties fill function
 Mike Becker <universe@uap-core.de> parents: 
1058diff
changeset | 384 | * @see cxPropertiesFill() | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 385 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 386 | cx_attr_nonnull cx_attr_access_r(2, 3) | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 387 | CX_EXPORT int cxPropertiesFilln(CxProperties *prop, const char *buf, size_t len); | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 388 | |
| 1417 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 389 | /** | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 390 | * Internal function, do not use. | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 391 | * | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 392 | * @param prop the properties interface | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 393 | * @param str the text to fill in | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 394 | * @retval zero success | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 395 | * @retval non-zero a memory allocation was necessary but failed | 
| 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 396 | */ | 
| 988 
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
 Mike Becker <universe@uap-core.de> parents: 
985diff
changeset | 397 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 398 | CX_INLINE int cx_properties_fill(CxProperties *prop, cxstring str) { | 
| 988 
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
 Mike Becker <universe@uap-core.de> parents: 
985diff
changeset | 399 | return cxPropertiesFilln(prop, str.ptr, str.length); | 
| 
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
 Mike Becker <universe@uap-core.de> parents: 
985diff
changeset | 400 | } | 
| 
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
 Mike Becker <universe@uap-core.de> parents: 
985diff
changeset | 401 | |
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 402 | /** | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 403 | * Fills the input buffer with data. | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 404 | * | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 405 | * After calling this function, you can parse the data by calling | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 406 | * cxPropertiesNext(). | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 407 | * | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 408 | * @attention The properties interface tries to avoid allocations. | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 409 | * When you use this function and cxPropertiesNext() interleaving, | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 410 | * no allocations are performed. However, you must not free the | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 411 | * pointer to the data in that case. When you invoke the fill | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 412 | * function more than once before calling cxPropertiesNext(), | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 413 | * the additional data is appended - inevitably leading to | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 414 | * an allocation of a new buffer and copying the previous contents. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 415 | * | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 416 | * @param prop the properties interface | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 417 | * @param str the text to fill in | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 418 | * @retval zero success | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 419 | * @retval non-zero a memory allocation was necessary but failed | 
| 1059 
154eb64ce746
add references between both variants of the properties fill function
 Mike Becker <universe@uap-core.de> parents: 
1058diff
changeset | 420 | * @see cxPropertiesFilln() | 
| 972 
a9a1d07a6840
add support for UCX strings in cxPropertiesFill()
 Mike Becker <universe@uap-core.de> parents: 
932diff
changeset | 421 | */ | 
| 1417 
b97faf8b7ab7
replace all remaining generics with cx_strcast() - resolves #700
 Mike Becker <universe@uap-core.de> parents: 
1318diff
changeset | 422 | #define cxPropertiesFill(prop, str) cx_properties_fill(prop, cx_strcast(str)) | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 423 | |
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 424 | /** | 
| 1424 
563033aa998c
fixes tons of typos and grammar issues across the documentation - fixes #667
 Mike Becker <universe@uap-core.de> parents: 
1417diff
changeset | 425 | * Specifies stack memory that shall be used as an internal buffer. | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 426 | * | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 427 | * @param prop the properties interface | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 428 | * @param buf a pointer to stack memory | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 429 | * @param capacity the capacity of the stack memory | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 430 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
980diff
changeset | 431 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 432 | CX_EXPORT void cxPropertiesUseStack(CxProperties *prop, char *buf, size_t capacity); | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 433 | |
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 434 | /** | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 435 | * Retrieves the next key/value-pair. | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 436 | * | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 437 | * This function returns zero as long as there are key/value-pairs found. | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 438 | * If no more key/value-pairs are found, #CX_PROPERTIES_NO_DATA is returned. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 439 | * | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 440 | * When an incomplete line is encountered, #CX_PROPERTIES_INCOMPLETE_DATA is | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 441 | * returned, and you can add more data with #cxPropertiesFill(). | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 442 | * | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 443 | * @remark The incomplete line will be stored in an internal buffer, which is | 
| 1038 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 444 | * allocated on the heap, by default. If you want to avoid allocations, | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 445 | * you can specify sufficient space with cxPropertiesUseStack() after | 
| 
8cab3d8e0af4
fix outdated documentation in properties.h
 Mike Becker <universe@uap-core.de> parents: 
1036diff
changeset | 446 | * initialization with cxPropertiesInit(). | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 447 | * | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 448 | * @attention The returned strings will point into a buffer that might not be | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 449 | * available later. It is strongly recommended to copy the strings for further | 
| 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 450 | * use. | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 451 | * | 
| 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 452 | * @param prop the properties interface | 
| 924 
3c90dfc35f06
add implementation for the properties parser
 Mike Becker <universe@uap-core.de> parents: 
923diff
changeset | 453 | * @param key a pointer to the cxstring that shall contain the property name | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 454 | * @param value a pointer to the cxstring that shall contain the property value | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 455 | * @retval CX_PROPERTIES_NO_ERROR (zero) a key/value pair was found | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 456 | * @retval CX_PROPERTIES_NO_DATA there is no (more) data in the input buffer | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 457 | * @retval CX_PROPERTIES_INCOMPLETE_DATA the data in the input buffer is incomplete | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 458 | * (fill more data and try again) | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 459 | * @retval CX_PROPERTIES_NULL_INPUT the input buffer was never filled | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 460 | * @retval CX_PROPERTIES_INVALID_EMPTY_KEY the properties data contains an illegal empty key | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 461 | * @retval CX_PROPERTIES_INVALID_MISSING_DELIMITER the properties data contains a line without delimiter | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 462 | * @retval CX_PROPERTIES_BUFFER_ALLOC_FAILED an internal allocation was necessary but failed | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 463 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 464 | cx_attr_nonnull cx_attr_nodiscard | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 465 | CX_EXPORT CxPropertiesStatus cxPropertiesNext(CxProperties *prop, cxstring *key, cxstring *value); | 
| 923 
45da884269c8
add ucx2.1 style interface for a properties parser
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 466 | |
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 467 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 468 | * Creates a properties sink for an UCX map. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 469 | * | 
| 1232 
781bd188f1c0
complete the properties documentation
 Mike Becker <universe@uap-core.de> parents: 
1193diff
changeset | 470 | * The values stored in the map will be pointers to freshly allocated, | 
| 
781bd188f1c0
complete the properties documentation
 Mike Becker <universe@uap-core.de> parents: 
1193diff
changeset | 471 | * zero-terminated C strings (@c char*), which means the @p map should have been | 
| 
781bd188f1c0
complete the properties documentation
 Mike Becker <universe@uap-core.de> parents: 
1193diff
changeset | 472 | * created with #CX_STORE_POINTERS. | 
| 
781bd188f1c0
complete the properties documentation
 Mike Becker <universe@uap-core.de> parents: 
1193diff
changeset | 473 | * | 
| 1318 
12fa1d37fe48
allow changing the cxDefaultAllocator - resolves #669
 Mike Becker <universe@uap-core.de> parents: 
1232diff
changeset | 474 | * The cxDefaultAllocator will be used unless you specify a custom | 
| 1232 
781bd188f1c0
complete the properties documentation
 Mike Becker <universe@uap-core.de> parents: 
1193diff
changeset | 475 | * allocator in the optional @c data field of the returned sink. | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 476 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 477 | * @param map the map that shall consume the k/v-pairs. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 478 | * @return the sink | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 479 | * @see cxPropertiesLoad() | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 480 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 481 | cx_attr_nonnull cx_attr_nodiscard | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 482 | CX_EXPORT CxPropertiesSink cxPropertiesMapSink(CxMap *map); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 483 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 484 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 485 | * Creates a properties source based on an UCX string. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 486 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 487 | * @param str the string | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 488 | * @return the properties source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 489 | * @see cxPropertiesLoad() | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 490 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
980diff
changeset | 491 | cx_attr_nodiscard | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 492 | CX_EXPORT CxPropertiesSource cxPropertiesStringSource(cxstring str); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 493 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 494 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 495 | * Creates a properties source based on C string with the specified length. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 496 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 497 | * @param str the string | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 498 | * @param len the length | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 499 | * @return the properties source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 500 | * @see cxPropertiesLoad() | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 501 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 502 | cx_attr_nonnull cx_attr_nodiscard cx_attr_access_r(1, 2) | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 503 | CX_EXPORT CxPropertiesSource cxPropertiesCstrnSource(const char *str, size_t len); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 504 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 505 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 506 | * Creates a properties source based on a C string. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 507 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 508 | * The length will be determined with strlen(), so the string MUST be | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 509 | * zero-terminated. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 510 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 511 | * @param str the string | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 512 | * @return the properties source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 513 | * @see cxPropertiesLoad() | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 514 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 515 | cx_attr_nonnull cx_attr_nodiscard cx_attr_cstr_arg(1) | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 516 | CX_EXPORT CxPropertiesSource cxPropertiesCstrSource(const char *str); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 517 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 518 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 519 | * Creates a properties source based on an FILE. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 520 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 521 | * @param file the file | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 522 | * @param chunk_size how many bytes may be read in one operation | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 523 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 524 | * @return the properties source | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 525 | * @see cxPropertiesLoad() | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 526 | */ | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 527 | cx_attr_nonnull cx_attr_nodiscard cx_attr_access_r(1) | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 528 | CX_EXPORT CxPropertiesSource cxPropertiesFileSource(FILE *file, size_t chunk_size); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 529 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 530 | |
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 531 | /** | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 532 | * Loads properties data from a source and transfers it to a sink. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 533 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 534 | * This function tries to read as much data from the source as possible. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 535 | * When the source was completely consumed and at least on k/v-pair was found, | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 536 | * the return value will be #CX_PROPERTIES_NO_ERROR. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 537 | * When the source was consumed but no k/v-pairs were found, the return value | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 538 | * will be #CX_PROPERTIES_NO_DATA. | 
| 1124 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 539 | * In case the source data ends unexpectedly, the #CX_PROPERTIES_INCOMPLETE_DATA | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 540 | * is returned. In that case you should call this function again with the same | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 541 | * sink and either an updated source or the same source if the source is able to | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 542 | * yield the missing data. | 
| 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 543 | * | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 544 | * The other result codes apply, according to their description. | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 545 | * | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 546 | * @param prop the properties interface | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 547 | * @param sink the sink | 
| 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 548 | * @param source the source | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 549 | * @retval CX_PROPERTIES_NO_ERROR (zero) a key/value pair was found | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 550 | * @retval CX_PROPERTIES_READ_INIT_FAILED initializing the source failed | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 551 | * @retval CX_PROPERTIES_READ_FAILED reading from the source failed | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 552 | * @retval CX_PROPERTIES_SINK_FAILED sinking the properties into the sink failed | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 553 | * @retval CX_PROPERTIES_NO_DATA the source did not provide any key/value pairs | 
| 1124 
fcd5d86c472f
fix wrong status of cxPropertiesLoad() when data is incomplete - fixes #560
 Mike Becker <universe@uap-core.de> parents: 
1106diff
changeset | 554 | * @retval CX_PROPERTIES_INCOMPLETE_DATA the source did not provide enough data | 
| 1106 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 555 | * @retval CX_PROPERTIES_INVALID_EMPTY_KEY the properties data contains an illegal empty key | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 556 | * @retval CX_PROPERTIES_INVALID_MISSING_DELIMITER the properties data contains a line without delimiter | 
| 
0480f8600fb7
refine docs for properties.h - issue #548
 Mike Becker <universe@uap-core.de> parents: 
1069diff
changeset | 557 | * @retval CX_PROPERTIES_BUFFER_ALLOC_FAILED an internal allocation was necessary but failed | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 558 | */ | 
| 985 
68754c7de906
major refactoring of attributes
 Mike Becker <universe@uap-core.de> parents: 
980diff
changeset | 559 | cx_attr_nonnull | 
| 1426 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 560 | CX_EXPORT CxPropertiesStatus cxPropertiesLoad(CxProperties *prop, | 
| 
3a89b31f0724
clean up header files and adds support for comparing arbitrary strings with string.h functions
 Mike Becker <universe@uap-core.de> parents: 
1424diff
changeset | 561 | CxPropertiesSink sink, CxPropertiesSource source); | 
| 928 
d2d42cb1d59e
add source/sink facility for properties - fixes #430
 Mike Becker <universe@uap-core.de> parents: 
924diff
changeset | 562 | |
| 932 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 563 | #ifdef __cplusplus | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 564 | } // extern "C" | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 565 | #endif | 
| 
484dab606292
add extern "C" to properties.h
 Mike Becker <universe@uap-core.de> parents: 
928diff
changeset | 566 | |
| 1069 
6565e7ef5ee3
fix include guard for properties.h
 Mike Becker <universe@uap-core.de> parents: 
1059diff
changeset | 567 | #endif // UCX_PROPERTIES_H |