symbian-qemu-0.9.1-12/python-2.6.1/Include/structmember.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 */