FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Include/exports.h at 3af7263037de1d0ef63b070fc7bfc2cf042eaebe · python/cpython · GitHub
python
/
cpython
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
36.1k
Star
77.2k
Code
Issues
5k+
Pull requests
2.7k
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Include
/
exports.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
108 lines (98 loc) · 4.49 KB
Breadcrumbs
cpython
/
Include
/
exports.h
Copy path
File metadata and controls
108 lines (98 loc) · 4.49 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef
Py_EXPORTS_H
#define
Py_EXPORTS_H
/* Declarations for symbol visibility.
PyAPI_FUNC(type): Declares a public Python API function and return type
PyAPI_DATA(type): Declares public Python data and its type
PyMODINIT_FUNC: A Python module init function. If these functions are
inside the Python core, they are private to the core.
If in an extension module, it may be declared with
external linkage depending on the platform.
As a number of platforms support/require "__declspec(dllimport/dllexport)",
we support a HAVE_DECLSPEC_DLL macro to save duplication.
*/
/*
All windows ports, except cygwin, are handled in PC/pyconfig.h.
Cygwin is the only other autoconf platform requiring special
linkage handling and it uses __declspec().
*/
#if
defined(
__CYGWIN__
)
# define
HAVE_DECLSPEC_DLL
#endif
#if
defined(
_WIN32
)
||
defined(
__CYGWIN__
)
#if
defined(
Py_ENABLE_SHARED
)
#define
Py_IMPORTED_SYMBOL
__declspec(dllimport)
#define
Py_EXPORTED_SYMBOL
__declspec(dllexport)
#define
Py_LOCAL_SYMBOL
#else
#define
Py_IMPORTED_SYMBOL
#define
Py_EXPORTED_SYMBOL
#define
Py_LOCAL_SYMBOL
#endif
#else
/*
* If we only ever used gcc >= 5, we could use __has_attribute(visibility)
* as a cross-platform way to determine if visibility is supported. However,
* we may still need to support gcc >= 4, as some Ubuntu LTS and Centos versions
* have 4 < gcc < 5.
*/
#ifndef
__has_attribute
#define
__has_attribute
(
x
) 0 // Compatibility with non-clang compilers.
#endif
#if
(defined(
__GNUC__
)
&&
(
__GNUC__
>=
4
))
||
\
(defined(
__clang__
)
&&
__has_attribute
(
visibility
))
#define
Py_IMPORTED_SYMBOL
__attribute__ ((visibility ("default")))
#define
Py_EXPORTED_SYMBOL
__attribute__ ((visibility ("default")))
#define
Py_LOCAL_SYMBOL
__attribute__ ((visibility ("hidden")))
#else
#define
Py_IMPORTED_SYMBOL
#define
Py_EXPORTED_SYMBOL
#define
Py_LOCAL_SYMBOL
#endif
#endif
/* only get special linkage if built as shared or platform is Cygwin */
#if
defined(
Py_ENABLE_SHARED
)
||
defined(
__CYGWIN__
)
# if
defined(
HAVE_DECLSPEC_DLL
)
# if
defined(
Py_BUILD_CORE
)
&&
!defined(
Py_BUILD_CORE_MODULE
)
# define
PyAPI_FUNC
(
RTYPE
) Py_EXPORTED_SYMBOL RTYPE
# define
PyAPI_DATA
(
RTYPE
) extern Py_EXPORTED_SYMBOL RTYPE
/* module init functions inside the core need no external linkage */
/* except for Cygwin to handle embedding */
# if
defined(
__CYGWIN__
)
# define
PyMODINIT_FUNC
Py_EXPORTED_SYMBOL PyObject*
# else
/* __CYGWIN__ */
# define
PyMODINIT_FUNC
PyObject*
# endif
/* __CYGWIN__ */
# else
/* Py_BUILD_CORE */
/* Building an extension module, or an embedded situation */
/* public Python functions and data are imported */
/* Under Cygwin, auto-import functions to prevent compilation */
/* failures similar to those described at the bottom of 4.1: */
/* http://docs.python.org/extending/windows.html#a-cookbook-approach */
# if
!defined(
__CYGWIN__
)
# define
PyAPI_FUNC
(
RTYPE
) Py_IMPORTED_SYMBOL RTYPE
# endif
/* !__CYGWIN__ */
# define
PyAPI_DATA
(
RTYPE
) extern Py_IMPORTED_SYMBOL RTYPE
/* module init functions outside the core must be exported */
# if
defined(
__cplusplus
)
# define
PyMODINIT_FUNC
extern "C" Py_EXPORTED_SYMBOL PyObject*
# else
/* __cplusplus */
# define
PyMODINIT_FUNC
Py_EXPORTED_SYMBOL PyObject*
# endif
/* __cplusplus */
# endif
/* Py_BUILD_CORE */
# endif
/* HAVE_DECLSPEC_DLL */
#endif
/* Py_ENABLE_SHARED */
/* If no external linkage macros defined by now, create defaults */
#ifndef
PyAPI_FUNC
# define
PyAPI_FUNC
(
RTYPE
) Py_EXPORTED_SYMBOL RTYPE
#endif
#ifndef
PyAPI_DATA
# define
PyAPI_DATA
(
RTYPE
) extern Py_EXPORTED_SYMBOL RTYPE
#endif
#ifndef
PyMODINIT_FUNC
# if
defined(
__cplusplus
)
# define
PyMODINIT_FUNC
extern "C" Py_EXPORTED_SYMBOL PyObject*
# else
/* __cplusplus */
# define
PyMODINIT_FUNC
Py_EXPORTED_SYMBOL PyObject*
# endif
/* __cplusplus */
#endif
#endif
/* Py_EXPORTS_H */
Back
|
FazBrowse Home
|
New Git URL