FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Include/cobject.h at 2.7 · python-emscripten/cpython · GitHub
python-emscripten
cpython
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Include
/
cobject.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
89 lines (66 loc) · 2.86 KB
Breadcrumbs
cpython
/
Include
/
cobject.h
Copy path
File metadata and controls
89 lines (66 loc) · 2.86 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
/*
CObjects are marked Pending Deprecation as of Python 2.7.
The full schedule for 2.x is as follows:
- CObjects are marked Pending Deprecation in Python 2.7.
- CObjects will be marked Deprecated in Python 2.8
(if there is one).
- CObjects will be removed in Python 2.9 (if there is one).
Additionally, for the Python 3.x series:
- CObjects were marked Deprecated in Python 3.1.
- CObjects will be removed in Python 3.2.
You should switch all use of CObjects to capsules. Capsules
have a safer and more consistent API. For more information,
see Include/pycapsule.h, or read the "Capsules" topic in
the "Python/C API Reference Manual".
Python 2.7 no longer uses CObjects itself; all objects which
were formerly CObjects are now capsules. Note that this change
does not by itself break binary compatibility with extensions
built for previous versions of Python--PyCObject_AsVoidPtr()
has been changed to also understand capsules.
*/
/* original file header comment follows: */
/* C objects to be exported from one extension module to another.
C objects are used for communication between extension modules.
They provide a way for an extension module to export a C interface
to other extension modules, so that extension modules can use the
Python import mechanism to link to one another.
*/
#ifndef
Py_COBJECT_H
#define
Py_COBJECT_H
#ifdef
__cplusplus
extern
"C"
{
#endif
PyAPI_DATA
(
PyTypeObject
)
PyCObject_Type
;
#define
PyCObject_Check
(
op
) (Py_TYPE(op) == &PyCObject_Type)
/* Create a PyCObject from a pointer to a C object and an optional
destructor function. If the second argument is non-null, then it
will be called with the first argument if and when the PyCObject is
destroyed.
*/
PyAPI_FUNC
(
PyObject
*
)
PyCObject_FromVoidPtr
(
void
*
cobj
,
void
(
*
destruct
)(
void
*
));
/* Create a PyCObject from a pointer to a C object, a description object,
and an optional destructor function. If the third argument is non-null,
then it will be called with the first and second arguments if and when
the PyCObject is destroyed.
*/
PyAPI_FUNC
(
PyObject
*
)
PyCObject_FromVoidPtrAndDesc
(
void
*
cobj
,
void
*
desc
,
void
(
*
destruct
)(
void
*
,
void
*
));
/* Retrieve a pointer to a C object from a PyCObject. */
PyAPI_FUNC
(
void
*
)
PyCObject_AsVoidPtr
(
PyObject
*
);
/* Retrieve a pointer to a description object from a PyCObject. */
PyAPI_FUNC
(
void
*
)
PyCObject_GetDesc
(
PyObject
*
);
/* Import a pointer to a C object from a module using a PyCObject. */
PyAPI_FUNC
(
void
*
)
PyCObject_Import
(
char
*
module_name
,
char
*
cobject_name
);
/* Modify a C object. Fails (==0) if object has a destructor. */
PyAPI_FUNC
(
int
)
PyCObject_SetVoidPtr
(
PyObject
*
self
,
void
*
cobj
);
typedef
struct
{
PyObject_HEAD
void
*
cobject
;
void
*
desc
;
void
(
*
destructor
)(
void
*
);
}
PyCObject
;
#ifdef
__cplusplus
}
#endif
#endif
/* !Py_COBJECT_H */
Back
|
FazBrowse Home
|
New Git URL