PDI 1.2.0-alpha.2021-05-03.c9942bc

Data exchange made easy

pdi.h
1 /*******************************************************************************
2 * Copyright (C) 2015-2021 Commissariat a l'energie atomique et aux energies alternatives (CEA)
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of CEA nor the names of its contributors may be used to
13 * endorse or promote products derived from this software without specific
14 * prior written permission.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 ******************************************************************************/
24 
55 #ifndef PDI_H_
56 #define PDI_H_
57 
58 #include <paraconf.h>
59 
60 #include <pdi/export.h>
61 #include <pdi/version.h>
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
73 typedef enum PDI_status_e {
75  PDI_OK = 0,
96 
97 } PDI_status_t;
98 
104 typedef void (*PDI_errfunc_f)(PDI_status_t status, const char* message, void* context);
105 
108 typedef struct PDI_errhandler_s {
109 
112 
114  void* context;
115 
117 
118 
121 extern const PDI_errhandler_t PDI_EXPORT PDI_ASSERT_HANDLER;
122 
125 extern const PDI_errhandler_t PDI_EXPORT PDI_WARN_HANDLER;
126 
129 extern const PDI_errhandler_t PDI_EXPORT PDI_NULL_HANDLER;
130 
131 
134 const char PDI_EXPORT* PDI_errmsg(void);
135 
144 
146 
158 PDI_status_t PDI_EXPORT PDI_init(PC_tree_t conf);
159 
163 PDI_status_t PDI_EXPORT PDI_finalize(void);
164 
172 PDI_status_t PDI_EXPORT PDI_version(unsigned long* provided, unsigned long expected);
173 
175 
183 typedef enum PDI_inout_e {
185  PDI_NONE = 0,
187  PDI_IN = 1,
189  PDI_OUT = 2,
192 
193 } PDI_inout_t;
194 
195 
210 PDI_status_t PDI_EXPORT PDI_share(const char* name, void* data, PDI_inout_t access);
211 
220 PDI_status_t PDI_EXPORT PDI_access(const char* name, void** buffer, PDI_inout_t inout);
221 
229 PDI_status_t PDI_EXPORT PDI_release(const char* name);
230 
238 PDI_status_t PDI_EXPORT PDI_reclaim(const char* name);
239 
244 PDI_status_t PDI_EXPORT PDI_event(const char* event);
245 
253 PDI_status_t PDI_EXPORT PDI_expose(const char* name, void* data, PDI_inout_t access);
254 
270 PDI_status_t PDI_EXPORT PDI_multi_expose(const char* event_name, const char* name, void* data, PDI_inout_t access, ...);
271 
272 #ifdef PDI_WITH_DEPRECATED
273 
288 PDI_status_t PDI_DEPRECATED_EXPORT PDI_transaction_begin(const char* name);
289 
300 PDI_status_t PDI_DEPRECATED_EXPORT PDI_transaction_end(void);
301 
302 #endif // PDI_WITH_DEPRECATED
303 
305 
306 #ifdef __cplusplus
307 } // extern C
308 #endif
309 
310 
311 #endif // PDI_H_
data transfer in both direction
Definition: pdi.h:191
const PDI_errhandler_t PDI_WARN_HANDLER
Prints the error message and continue if the status is invalid.
PDI_errhandler_t PDI_errhandler(PDI_errhandler_t handler)
Sets the error handler to use.
Definition of an error handler.
Definition: pdi.h:108
on an input call, no such data is available
Definition: pdi.h:77
PDI_status_t PDI_event(const char *event)
Triggers a PDI "event".
A system error occured (OS, etc.)
Definition: pdi.h:87
void(* PDI_errfunc_f)(PDI_status_t status, const char *message, void *context)
Type of a callback function used when an error occurs.
Definition: pdi.h:104
No data transfert.
Definition: pdi.h:185
PDI_status_t PDI_share(const char *name, void *data, PDI_inout_t access)
Shares some data with PDI.
A value expression is invalid.
Definition: pdi.h:81
The configuration file is invalid.
Definition: pdi.h:79
A call to a function has been made at a wrong time (e.g.
Definition: pdi.h:91
Invalid type error.
Definition: pdi.h:95
PDI_status_t PDI_init(PC_tree_t conf)
Initializes PDI.
data transfer from the main code to PDI
Definition: pdi.h:189
PDI_status_t PDI_expose(const char *name, void *data, PDI_inout_t access)
Shortly exposes some data to PDI.
Tried to load a non-existing plugin.
Definition: pdi.h:83
PDI_status_t PDI_reclaim(const char *name)
Reclaims ownership of a data buffer shared with PDI.
PDI_status_t PDI_release(const char *name)
Releases ownership of a data shared with PDI.
PDI_status_t PDI_multi_expose(const char *event_name, const char *name, void *data, PDI_inout_t access,...)
Performs multiple exposes at once.
PDI_inout_t
Access directions.
Definition: pdi.h:183
everything went well
Definition: pdi.h:75
PDI_status_t
Error codes of PDI.
Definition: pdi.h:73
A conflict of onwership over a content has been raised.
Definition: pdi.h:93
PDI_status_t PDI_access(const char *name, void **buffer, PDI_inout_t inout)
Requests for PDI to access a data buffer.
const PDI_errhandler_t PDI_NULL_HANDLER
Does nothing.
void * context
the context that will be provided to the function
Definition: pdi.h:114
const char * PDI_errmsg(void)
Return a human-readabe message describing the last error that occured in PDI.
PDI_errfunc_f func
The function to handle the error (none if NULL)
Definition: pdi.h:111
const PDI_errhandler_t PDI_ASSERT_HANDLER
Prints the error message and aborts if the status is invalid.
PDI_status_t PDI_finalize(void)
Finalizes PDI.
data tranfer from PDI to the main code
Definition: pdi.h:187
PDI_status_t PDI_version(unsigned long *provided, unsigned long expected)
Checks PDI API version.
Implementation limitation (typically an unimplemented feature)
Definition: pdi.h:85