1993-07-28 06:05:47 -03:00
|
|
|
#ifndef Py_STRUCTMEMBER_H
|
|
|
|
#define Py_STRUCTMEMBER_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
1991-02-19 08:39:46 -04:00
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
/* Interface to map C struct members to Python object attributes */
|
|
|
|
|
1994-10-20 19:03:08 -03:00
|
|
|
#include <stddef.h> /* For offsetof */
|
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
/* The offsetof() macro calculates the offset of a structure member
|
|
|
|
in its structure. Unfortunately this cannot be written down
|
|
|
|
portably, hence it is provided by a Standard C header file.
|
|
|
|
For pre-Standard C compilers, here is a version that usually works
|
|
|
|
(but watch out!): */
|
|
|
|
|
|
|
|
#ifndef offsetof
|
|
|
|
#define offsetof(type, member) ( (int) & ((type*)0) -> member )
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* An array of memberlist structures defines the name, type and offset
|
|
|
|
of selected members of a C structure. These can be read by
|
1995-01-12 07:45:45 -04:00
|
|
|
PyMember_Get() and set by PyMember_Set() (except if their READONLY flag
|
1990-12-20 11:06:42 -04:00
|
|
|
is set). The array must be terminated with an entry whose name
|
|
|
|
pointer is NULL. */
|
|
|
|
|
|
|
|
struct memberlist {
|
2001-09-20 17:46:19 -03:00
|
|
|
/* Obsolete version, for binary backwards compatibility */
|
1990-12-20 11:06:42 -04:00
|
|
|
char *name;
|
|
|
|
int type;
|
|
|
|
int offset;
|
2001-09-17 16:28:08 -03:00
|
|
|
int flags;
|
1990-12-20 11:06:42 -04:00
|
|
|
};
|
|
|
|
|
2001-09-20 17:46:19 -03:00
|
|
|
typedef struct PyMemberDef {
|
|
|
|
/* Current version, use this */
|
|
|
|
char *name;
|
|
|
|
int type;
|
2006-02-16 10:23:19 -04:00
|
|
|
Py_ssize_t offset;
|
2001-09-20 17:46:19 -03:00
|
|
|
int flags;
|
|
|
|
char *doc;
|
|
|
|
} PyMemberDef;
|
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
/* Types */
|
|
|
|
#define T_SHORT 0
|
|
|
|
#define T_INT 1
|
|
|
|
#define T_LONG 2
|
|
|
|
#define T_FLOAT 3
|
|
|
|
#define T_DOUBLE 4
|
|
|
|
#define T_STRING 5
|
|
|
|
#define T_OBJECT 6
|
1992-06-03 14:07:40 -03:00
|
|
|
/* XXX the ordering here is weird for binary compatibility */
|
|
|
|
#define T_CHAR 7 /* 1-character string */
|
|
|
|
#define T_BYTE 8 /* 8-bit signed int */
|
|
|
|
/* unsigned variants: */
|
|
|
|
#define T_UBYTE 9
|
|
|
|
#define T_USHORT 10
|
|
|
|
#define T_UINT 11
|
|
|
|
#define T_ULONG 12
|
1990-12-20 11:06:42 -04:00
|
|
|
|
1994-12-14 09:04:05 -04:00
|
|
|
/* Added by Jack: strings contained in the structure */
|
|
|
|
#define T_STRING_INPLACE 13
|
|
|
|
|
2001-12-04 12:23:42 -04:00
|
|
|
#define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError
|
|
|
|
when the value is NULL, instead of
|
|
|
|
converting to None. */
|
2005-03-03 19:00:26 -04:00
|
|
|
#ifdef HAVE_LONG_LONG
|
|
|
|
#define T_LONGLONG 17
|
2006-08-17 02:42:55 -03:00
|
|
|
#define T_ULONGLONG 18
|
Merged revisions 55962-56019 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r55985 | neal.norwitz | 2007-06-14 20:14:38 -0700 (Thu, 14 Jun 2007) | 2 lines
All these tests have been flaky wrt reporting leaks. Disable them.
................
r56003 | neal.norwitz | 2007-06-15 19:41:09 -0700 (Fri, 15 Jun 2007) | 1 line
Fix typo (certain).
................
r56004 | neal.norwitz | 2007-06-15 20:54:18 -0700 (Fri, 15 Jun 2007) | 4 lines
Fix it so test_os no longer reports ref leaks by clearing all the caches
the ABCMeta stores on the class. Apply this to all the ABC collections
as well as the class of os.environ which inherits from an ABC collection.
................
r56013 | neal.norwitz | 2007-06-17 19:56:31 -0700 (Sun, 17 Jun 2007) | 4 lines
This should make it a little easier when adding new collections which use ABCs.
The new subclass won't need to be listed in regrtest.
It will be even better when Guido adds weakrefs. :-)
................
r56014 | martin.v.loewis | 2007-06-17 20:15:51 -0700 (Sun, 17 Jun 2007) | 1 line
Drop inline, as it's not support by VS 2003.
................
r56015 | martin.v.loewis | 2007-06-17 20:17:19 -0700 (Sun, 17 Jun 2007) | 1 line
Expect long objects for DWORD values.
................
r56016 | martin.v.loewis | 2007-06-17 20:18:01 -0700 (Sun, 17 Jun 2007) | 1 line
Drop modules that have been deleted.
................
r56017 | martin.v.loewis | 2007-06-17 20:18:55 -0700 (Sun, 17 Jun 2007) | 1 line
Bump DLL version number to 30.
................
r56018 | neal.norwitz | 2007-06-17 20:55:43 -0700 (Sun, 17 Jun 2007) | 62 lines
Merged revisions 55951-56013 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55956 | thomas.heller | 2007-06-13 00:07:03 -0700 (Wed, 13 Jun 2007) | 2 lines
Do not hardcode the buildbot's directory name.
........
r55957 | thomas.heller | 2007-06-13 00:07:41 -0700 (Wed, 13 Jun 2007) | 2 lines
Notes about building tcl/tk for windows/AMD64.
........
r55958 | thomas.heller | 2007-06-13 00:54:57 -0700 (Wed, 13 Jun 2007) | 2 lines
Build bzip2.
........
r55962 | walter.doerwald | 2007-06-13 09:57:12 -0700 (Wed, 13 Jun 2007) | 8 lines
Add T_PYSSIZET in structmember.h: This can be used for
Py_ssize_t members.
Simplify the implementation of UnicodeError objects:
start and end attributes are now stored directly as
Py_ssize_t members, which simplifies various get and
set functions.
........
r55975 | martin.v.loewis | 2007-06-14 13:46:25 -0700 (Thu, 14 Jun 2007) | 3 lines
Patch #1734014: Use _I64_MAX instead of LLONG_MAX.
Will backport to 2.5.
........
r55984 | neal.norwitz | 2007-06-14 20:11:41 -0700 (Thu, 14 Jun 2007) | 4 lines
urllib2_localnet says it leaks probably due to threads. So ignore it.
popen2 is also complaining probably for similar reasons.
make install always reports failure, so don't mail in this case.
........
r56001 | andrew.kuchling | 2007-06-15 15:43:03 -0700 (Fri, 15 Jun 2007) | 1 line
Add a word
........
r56005 | martin.v.loewis | 2007-06-16 03:08:43 -0700 (Sat, 16 Jun 2007) | 2 lines
Mention Senthil Kumaran.
........
r56006 | georg.brandl | 2007-06-16 10:10:12 -0700 (Sat, 16 Jun 2007) | 2 lines
Add missing \versionadded.
........
r56009 | neal.norwitz | 2007-06-17 11:48:32 -0700 (Sun, 17 Jun 2007) | 1 line
SF #1738670, make example in doc work
........
r56011 | neal.norwitz | 2007-06-17 19:46:36 -0700 (Sun, 17 Jun 2007) | 1 line
SF #1738754, remove extra backslash in string
........
r56012 | neal.norwitz | 2007-06-17 19:50:15 -0700 (Sun, 17 Jun 2007) | 1 line
Revert last change for SF #1738754, there's no print in there.
........
................
2007-06-18 14:58:50 -03:00
|
|
|
#define T_PYSSIZET 19 /* Py_ssize_t */
|
2005-03-03 19:00:26 -04:00
|
|
|
#endif /* HAVE_LONG_LONG */
|
2001-12-04 12:23:42 -04:00
|
|
|
|
Merged revisions 55962-56019 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r55985 | neal.norwitz | 2007-06-14 20:14:38 -0700 (Thu, 14 Jun 2007) | 2 lines
All these tests have been flaky wrt reporting leaks. Disable them.
................
r56003 | neal.norwitz | 2007-06-15 19:41:09 -0700 (Fri, 15 Jun 2007) | 1 line
Fix typo (certain).
................
r56004 | neal.norwitz | 2007-06-15 20:54:18 -0700 (Fri, 15 Jun 2007) | 4 lines
Fix it so test_os no longer reports ref leaks by clearing all the caches
the ABCMeta stores on the class. Apply this to all the ABC collections
as well as the class of os.environ which inherits from an ABC collection.
................
r56013 | neal.norwitz | 2007-06-17 19:56:31 -0700 (Sun, 17 Jun 2007) | 4 lines
This should make it a little easier when adding new collections which use ABCs.
The new subclass won't need to be listed in regrtest.
It will be even better when Guido adds weakrefs. :-)
................
r56014 | martin.v.loewis | 2007-06-17 20:15:51 -0700 (Sun, 17 Jun 2007) | 1 line
Drop inline, as it's not support by VS 2003.
................
r56015 | martin.v.loewis | 2007-06-17 20:17:19 -0700 (Sun, 17 Jun 2007) | 1 line
Expect long objects for DWORD values.
................
r56016 | martin.v.loewis | 2007-06-17 20:18:01 -0700 (Sun, 17 Jun 2007) | 1 line
Drop modules that have been deleted.
................
r56017 | martin.v.loewis | 2007-06-17 20:18:55 -0700 (Sun, 17 Jun 2007) | 1 line
Bump DLL version number to 30.
................
r56018 | neal.norwitz | 2007-06-17 20:55:43 -0700 (Sun, 17 Jun 2007) | 62 lines
Merged revisions 55951-56013 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55956 | thomas.heller | 2007-06-13 00:07:03 -0700 (Wed, 13 Jun 2007) | 2 lines
Do not hardcode the buildbot's directory name.
........
r55957 | thomas.heller | 2007-06-13 00:07:41 -0700 (Wed, 13 Jun 2007) | 2 lines
Notes about building tcl/tk for windows/AMD64.
........
r55958 | thomas.heller | 2007-06-13 00:54:57 -0700 (Wed, 13 Jun 2007) | 2 lines
Build bzip2.
........
r55962 | walter.doerwald | 2007-06-13 09:57:12 -0700 (Wed, 13 Jun 2007) | 8 lines
Add T_PYSSIZET in structmember.h: This can be used for
Py_ssize_t members.
Simplify the implementation of UnicodeError objects:
start and end attributes are now stored directly as
Py_ssize_t members, which simplifies various get and
set functions.
........
r55975 | martin.v.loewis | 2007-06-14 13:46:25 -0700 (Thu, 14 Jun 2007) | 3 lines
Patch #1734014: Use _I64_MAX instead of LLONG_MAX.
Will backport to 2.5.
........
r55984 | neal.norwitz | 2007-06-14 20:11:41 -0700 (Thu, 14 Jun 2007) | 4 lines
urllib2_localnet says it leaks probably due to threads. So ignore it.
popen2 is also complaining probably for similar reasons.
make install always reports failure, so don't mail in this case.
........
r56001 | andrew.kuchling | 2007-06-15 15:43:03 -0700 (Fri, 15 Jun 2007) | 1 line
Add a word
........
r56005 | martin.v.loewis | 2007-06-16 03:08:43 -0700 (Sat, 16 Jun 2007) | 2 lines
Mention Senthil Kumaran.
........
r56006 | georg.brandl | 2007-06-16 10:10:12 -0700 (Sat, 16 Jun 2007) | 2 lines
Add missing \versionadded.
........
r56009 | neal.norwitz | 2007-06-17 11:48:32 -0700 (Sun, 17 Jun 2007) | 1 line
SF #1738670, make example in doc work
........
r56011 | neal.norwitz | 2007-06-17 19:46:36 -0700 (Sun, 17 Jun 2007) | 1 line
SF #1738754, remove extra backslash in string
........
r56012 | neal.norwitz | 2007-06-17 19:50:15 -0700 (Sun, 17 Jun 2007) | 1 line
Revert last change for SF #1738754, there's no print in there.
........
................
2007-06-18 14:58:50 -03:00
|
|
|
#define T_NONE 20 /* Value is always None */
|
2006-08-17 02:42:55 -03:00
|
|
|
|
2001-09-17 16:28:08 -03:00
|
|
|
/* Flags */
|
1990-12-20 11:06:42 -04:00
|
|
|
#define READONLY 1
|
|
|
|
#define RO READONLY /* Shorthand */
|
2001-09-17 16:28:08 -03:00
|
|
|
#define READ_RESTRICTED 2
|
|
|
|
#define WRITE_RESTRICTED 4
|
|
|
|
#define RESTRICTED (READ_RESTRICTED | WRITE_RESTRICTED)
|
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
|
2001-09-20 17:46:19 -03:00
|
|
|
/* Obsolete API, for binary backwards compatibility */
|
2005-12-24 02:03:06 -04:00
|
|
|
PyAPI_FUNC(PyObject *) PyMember_Get(const char *, struct memberlist *, const char *);
|
|
|
|
PyAPI_FUNC(int) PyMember_Set(char *, struct memberlist *, const char *, PyObject *);
|
1993-07-28 06:05:47 -03:00
|
|
|
|
2001-09-20 17:46:19 -03:00
|
|
|
/* Current API, use this */
|
2005-12-24 02:03:06 -04:00
|
|
|
PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *);
|
2002-08-12 04:21:58 -03:00
|
|
|
PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
|
2001-09-20 17:46:19 -03:00
|
|
|
|
|
|
|
|
1993-07-28 06:05:47 -03:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !Py_STRUCTMEMBER_H */
|