blob: 13af70dc308dbf97dd9bce230f32f186a2b9fe39 [file] [log] [blame]
Guido van Rossum3f5da241990-12-20 15:06:42 +00001/* Interface to map C struct members to Python object attributes */
2
3/* The offsetof() macro calculates the offset of a structure member
4 in its structure. Unfortunately this cannot be written down
5 portably, hence it is provided by a Standard C header file.
6 For pre-Standard C compilers, here is a version that usually works
7 (but watch out!): */
8
9#ifndef offsetof
10#define offsetof(type, member) ( (int) & ((type*)0) -> member )
11#endif
12
13/* An array of memberlist structures defines the name, type and offset
14 of selected members of a C structure. These can be read by
15 getmember() and set by setmember() (except if their READONLY flag
16 is set). The array must be terminated with an entry whose name
17 pointer is NULL. */
18
19struct memberlist {
20 char *name;
21 int type;
22 int offset;
23 int readonly;
24};
25
26/* Types */
27#define T_SHORT 0
28#define T_INT 1
29#define T_LONG 2
30#define T_FLOAT 3
31#define T_DOUBLE 4
32#define T_STRING 5
33#define T_OBJECT 6
34
35/* Readonly flag */
36#define READONLY 1
37#define RO READONLY /* Shorthand */
38
39object *getmember PROTO((char *, struct memberlist *, char *));
40int setmember PROTO((char *, struct memberlist *, char *, object *));