Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/mingw32/Python27/include/structmember.h @ 87:2a2c65a20a8b
Add Python libs and headers
author | Chris Cannam |
---|---|
date | Wed, 25 Feb 2015 14:05:22 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
86:413a9d26189e | 87:2a2c65a20a8b |
---|---|
1 #ifndef Py_STRUCTMEMBER_H | |
2 #define Py_STRUCTMEMBER_H | |
3 #ifdef __cplusplus | |
4 extern "C" { | |
5 #endif | |
6 | |
7 | |
8 /* Interface to map C struct members to Python object attributes */ | |
9 | |
10 #include <stddef.h> /* For offsetof */ | |
11 | |
12 /* The offsetof() macro calculates the offset of a structure member | |
13 in its structure. Unfortunately this cannot be written down | |
14 portably, hence it is provided by a Standard C header file. | |
15 For pre-Standard C compilers, here is a version that usually works | |
16 (but watch out!): */ | |
17 | |
18 #ifndef offsetof | |
19 #define offsetof(type, member) ( (int) & ((type*)0) -> member ) | |
20 #endif | |
21 | |
22 /* An array of memberlist structures defines the name, type and offset | |
23 of selected members of a C structure. These can be read by | |
24 PyMember_Get() and set by PyMember_Set() (except if their READONLY flag | |
25 is set). The array must be terminated with an entry whose name | |
26 pointer is NULL. */ | |
27 | |
28 struct memberlist { | |
29 /* Obsolete version, for binary backwards compatibility */ | |
30 char *name; | |
31 int type; | |
32 int offset; | |
33 int flags; | |
34 }; | |
35 | |
36 typedef struct PyMemberDef { | |
37 /* Current version, use this */ | |
38 char *name; | |
39 int type; | |
40 Py_ssize_t offset; | |
41 int flags; | |
42 char *doc; | |
43 } PyMemberDef; | |
44 | |
45 /* Types */ | |
46 #define T_SHORT 0 | |
47 #define T_INT 1 | |
48 #define T_LONG 2 | |
49 #define T_FLOAT 3 | |
50 #define T_DOUBLE 4 | |
51 #define T_STRING 5 | |
52 #define T_OBJECT 6 | |
53 /* XXX the ordering here is weird for binary compatibility */ | |
54 #define T_CHAR 7 /* 1-character string */ | |
55 #define T_BYTE 8 /* 8-bit signed int */ | |
56 /* unsigned variants: */ | |
57 #define T_UBYTE 9 | |
58 #define T_USHORT 10 | |
59 #define T_UINT 11 | |
60 #define T_ULONG 12 | |
61 | |
62 /* Added by Jack: strings contained in the structure */ | |
63 #define T_STRING_INPLACE 13 | |
64 | |
65 /* Added by Lillo: bools contained in the structure (assumed char) */ | |
66 #define T_BOOL 14 | |
67 | |
68 #define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError | |
69 when the value is NULL, instead of | |
70 converting to None. */ | |
71 #ifdef HAVE_LONG_LONG | |
72 #define T_LONGLONG 17 | |
73 #define T_ULONGLONG 18 | |
74 #endif /* HAVE_LONG_LONG */ | |
75 | |
76 #define T_PYSSIZET 19 /* Py_ssize_t */ | |
77 | |
78 | |
79 /* Flags */ | |
80 #define READONLY 1 | |
81 #define RO READONLY /* Shorthand */ | |
82 #define READ_RESTRICTED 2 | |
83 #define PY_WRITE_RESTRICTED 4 | |
84 #define RESTRICTED (READ_RESTRICTED | PY_WRITE_RESTRICTED) | |
85 | |
86 | |
87 /* Obsolete API, for binary backwards compatibility */ | |
88 PyAPI_FUNC(PyObject *) PyMember_Get(const char *, struct memberlist *, const char *); | |
89 PyAPI_FUNC(int) PyMember_Set(char *, struct memberlist *, const char *, PyObject *); | |
90 | |
91 /* Current API, use this */ | |
92 PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *); | |
93 PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *); | |
94 | |
95 | |
96 #ifdef __cplusplus | |
97 } | |
98 #endif | |
99 #endif /* !Py_STRUCTMEMBER_H */ |