EPICS Base  7.0.7.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
epicsExport.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2002 The University of Chicago, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * SPDX-License-Identifier: EPICS
7 * EPICS Base is distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 
11 #ifndef INC_epicsExport_H
12 #define INC_epicsExport_H
13 
29 #define epicsExportSharedSymbols
30 #include <shareLib.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 typedef void (*REGISTRAR)(void);
37 
38 #define EPICS_EXPORT_POBJ(typ, obj) pvar_ ## typ ## _ ## obj
39 #define EPICS_EXPORT_PFUNC(fun) EPICS_EXPORT_POBJ(func, fun)
40 
75 #define epicsExportAddress(typ, obj) \
76  epicsShareExtern typ *EPICS_EXPORT_POBJ(typ,obj); \
77  epicsShareDef typ *EPICS_EXPORT_POBJ(typ, obj) = (typ *) (char *) &obj
78 
94 #define epicsExportRegistrar(fun) \
95  epicsShareFunc REGISTRAR EPICS_EXPORT_PFUNC(fun) = (REGISTRAR) &fun
96 
111 #define epicsRegisterFunction(fun) \
112  static void register_func_ ## fun(void) \
113  { \
114  registryFunctionAdd(#fun, (REGISTRYFUNCTION) fun); \
115  } \
116  epicsExportRegistrar(register_func_ ## fun)
117 
118 #ifdef __cplusplus
119 }
120 #endif
121 
122 #endif /* INC_epicsExport_H */
Mark external symbols and entry points for shared libraries.