mirror of https://github.com/python/cpython
staticforward bites the dust.
The staticforward define was needed to support certain broken C compilers (notably SCO ODT 3.0, perhaps early AIX as well) botched the static keyword when it was used with a forward declaration of a static initialized structure. Standard C allows the forward declaration with static, and we've decided to stop catering to broken C compilers. (In fact, we expect that the compilers are all fixed eight years later.) I'm leaving staticforward and statichere defined in object.h as static. This is only for backwards compatibility with C extensions that might still use it. XXX I haven't updated the documentation.
This commit is contained in:
parent
9cb64b954a
commit
938ace69a0
|
@ -616,28 +616,19 @@ extern DL_IMPORT(PyObject) _Py_NotImplementedStruct; /* Don't use this directly
|
||||||
#define Py_GE 5
|
#define Py_GE 5
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A common programming style in Python requires the forward declaration
|
Define staticforward and statichere for source compatibility with old
|
||||||
of static, initialized structures, e.g. for a type object that is used
|
C extensions.
|
||||||
by the functions whose address must be used in the initializer.
|
|
||||||
Some compilers (notably SCO ODT 3.0, I seem to remember early AIX as
|
The staticforward define was needed to support certain broken C
|
||||||
well) botch this if you use the static keyword for both declarations
|
compilers (notably SCO ODT 3.0, perhaps early AIX as well) botched the
|
||||||
(they allocate two objects, and use the first, uninitialized one until
|
static keyword when it was used with a forward declaration of a static
|
||||||
the second declaration is encountered). Therefore, the forward
|
initialized structure. Standard C allows the forward declaration with
|
||||||
declaration should use the 'forwardstatic' keyword. This expands to
|
static, and we've decided to stop catering to broken C compilers.
|
||||||
static on most systems, but to extern on a few. The actual storage
|
(In fact, we expect that the compilers are all fixed eight years later.)
|
||||||
and name will still be static because the second declaration is
|
|
||||||
static, so no linker visible symbols will be generated. (Standard C
|
|
||||||
compilers take offense to the extern forward declaration of a static
|
|
||||||
object, so I can't just put extern in all cases. :-( )
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef BAD_STATIC_FORWARD
|
|
||||||
#define staticforward extern
|
|
||||||
#define statichere static
|
|
||||||
#else /* !BAD_STATIC_FORWARD */
|
|
||||||
#define staticforward static
|
#define staticforward static
|
||||||
#define statichere static
|
#define statichere static
|
||||||
#endif /* !BAD_STATIC_FORWARD */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -23,7 +23,7 @@ typedef struct {
|
||||||
PyObject *x_attr; /* Attributes dictionary */
|
PyObject *x_attr; /* Attributes dictionary */
|
||||||
} XxoObject;
|
} XxoObject;
|
||||||
|
|
||||||
staticforward PyTypeObject Xxo_Type;
|
static PyTypeObject Xxo_Type;
|
||||||
|
|
||||||
#define XxoObject_Check(v) ((v)->ob_type == &Xxo_Type)
|
#define XxoObject_Check(v) ((v)->ob_type == &Xxo_Type)
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ typedef struct {
|
||||||
NavReplyRecord itself;
|
NavReplyRecord itself;
|
||||||
} navrrobject;
|
} navrrobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Navrrtype;
|
static PyTypeObject Navrrtype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -471,7 +471,7 @@ typedef struct {
|
||||||
char name[MAXNAME+1];
|
char name[MAXNAME+1];
|
||||||
} cdfobject;
|
} cdfobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Cdftype;
|
static PyTypeObject Cdftype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ typedef struct {
|
||||||
char name[MAXNAME+1];
|
char name[MAXNAME+1];
|
||||||
} cdrobject;
|
} cdrobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Cdrtype;
|
static PyTypeObject Cdrtype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -503,7 +503,7 @@ typedef struct {
|
||||||
conventry *argconv[MAXARG]; /* Value converter list */
|
conventry *argconv[MAXARG]; /* Value converter list */
|
||||||
} cdcobject;
|
} cdcobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Cdctype;
|
static PyTypeObject Cdctype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ typedef struct {
|
||||||
int err; /* Error to pass to the callback */
|
int err; /* Error to pass to the callback */
|
||||||
} ctbcmobject;
|
} ctbcmobject;
|
||||||
|
|
||||||
staticforward PyTypeObject ctbcmtype;
|
static PyTypeObject ctbcmtype;
|
||||||
|
|
||||||
#define is_ctbcmobject(v) ((v)->ob_type == &ctbcmtype)
|
#define is_ctbcmobject(v) ((v)->ob_type == &ctbcmtype)
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ extern int _CtlObj_Convert(PyObject *, ControlHandle *);
|
||||||
#define CtlObj_Convert _CtlObj_Convert
|
#define CtlObj_Convert _CtlObj_Convert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
staticforward PyObject *CtlObj_WhichControl(ControlHandle);
|
static PyObject *CtlObj_WhichControl(ControlHandle);
|
||||||
|
|
||||||
#define as_Control(h) ((ControlHandle)h)
|
#define as_Control(h) ((ControlHandle)h)
|
||||||
#define as_Resource(ctl) ((Handle)ctl)
|
#define as_Resource(ctl) ((Handle)ctl)
|
||||||
|
@ -139,9 +139,9 @@ static ControlUserPaneIdleUPP myidleproc_upp;
|
||||||
static ControlUserPaneHitTestUPP myhittestproc_upp;
|
static ControlUserPaneHitTestUPP myhittestproc_upp;
|
||||||
static ControlUserPaneTrackingUPP mytrackingproc_upp;
|
static ControlUserPaneTrackingUPP mytrackingproc_upp;
|
||||||
|
|
||||||
staticforward int settrackfunc(PyObject *); /* forward */
|
static int settrackfunc(PyObject *); /* forward */
|
||||||
staticforward void clrtrackfunc(void); /* forward */
|
static void clrtrackfunc(void); /* forward */
|
||||||
staticforward int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *);
|
static int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *);
|
||||||
|
|
||||||
static PyObject *Ctl_Error;
|
static PyObject *Ctl_Error;
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ typedef struct {
|
||||||
short forkref;
|
short forkref;
|
||||||
} forkRefObject;
|
} forkRefObject;
|
||||||
|
|
||||||
staticforward PyTypeObject forkRefObject_Type;
|
static PyTypeObject forkRefObject_Type;
|
||||||
|
|
||||||
#define forkRefObject_Check(v) ((v)->ob_type == &forkRefObject_Type)
|
#define forkRefObject_Check(v) ((v)->ob_type == &forkRefObject_Type)
|
||||||
|
|
||||||
|
@ -359,7 +359,7 @@ typedef struct {
|
||||||
FSIterator iterator;
|
FSIterator iterator;
|
||||||
} iteratorObject;
|
} iteratorObject;
|
||||||
|
|
||||||
staticforward PyTypeObject iteratorObject_Type;
|
static PyTypeObject iteratorObject_Type;
|
||||||
|
|
||||||
#define iteratorObject_Check(v) ((v)->ob_type == &iteratorObject_Type)
|
#define iteratorObject_Check(v) ((v)->ob_type == &iteratorObject_Type)
|
||||||
|
|
||||||
|
@ -534,7 +534,7 @@ typedef struct {
|
||||||
Boolean directory;
|
Boolean directory;
|
||||||
} fsRefObject;
|
} fsRefObject;
|
||||||
|
|
||||||
staticforward PyTypeObject fsRefObject_Type;
|
static PyTypeObject fsRefObject_Type;
|
||||||
|
|
||||||
#define fsRefObject_Check(v) ((v)->ob_type == &fsRefObject_Type)
|
#define fsRefObject_Check(v) ((v)->ob_type == &fsRefObject_Type)
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ typedef struct {
|
||||||
ICInstance inst;
|
ICInstance inst;
|
||||||
} iciobject;
|
} iciobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Icitype;
|
static PyTypeObject Icitype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ typedef struct {
|
||||||
AliasHandle alias;
|
AliasHandle alias;
|
||||||
} mfsaobject;
|
} mfsaobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Mfsatype;
|
static PyTypeObject Mfsatype;
|
||||||
|
|
||||||
#define is_mfsaobject(v) ((v)->ob_type == &Mfsatype)
|
#define is_mfsaobject(v) ((v)->ob_type == &Mfsatype)
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ typedef struct {
|
||||||
FSSpec fsspec;
|
FSSpec fsspec;
|
||||||
} mfssobject;
|
} mfssobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Mfsstype;
|
static PyTypeObject Mfsstype;
|
||||||
|
|
||||||
#define is_mfssobject(v) ((v)->ob_type == &Mfsstype)
|
#define is_mfssobject(v) ((v)->ob_type == &Mfsstype)
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ typedef struct {
|
||||||
FSRef fsref;
|
FSRef fsref;
|
||||||
} mfsrobject;
|
} mfsrobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Mfsrtype;
|
static PyTypeObject Mfsrtype;
|
||||||
|
|
||||||
#define is_mfsrobject(v) ((v)->ob_type == &Mfsrtype)
|
#define is_mfsrobject(v) ((v)->ob_type == &Mfsrtype)
|
||||||
|
|
||||||
|
@ -107,13 +107,13 @@ typedef struct {
|
||||||
FInfo finfo;
|
FInfo finfo;
|
||||||
} mfsiobject;
|
} mfsiobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Mfsitype;
|
static PyTypeObject Mfsitype;
|
||||||
|
|
||||||
#define is_mfsiobject(v) ((v)->ob_type == &Mfsitype)
|
#define is_mfsiobject(v) ((v)->ob_type == &Mfsitype)
|
||||||
|
|
||||||
|
|
||||||
staticforward mfssobject *newmfssobject(FSSpec *fss); /* Forward */
|
static mfssobject *newmfssobject(FSSpec *fss); /* Forward */
|
||||||
staticforward mfsrobject *newmfsrobject(FSRef *fsr); /* Forward */
|
static mfsrobject *newmfsrobject(FSRef *fsr); /* Forward */
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ typedef struct {
|
||||||
int isclosed;
|
int isclosed;
|
||||||
} rfobject;
|
} rfobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Rftype;
|
static PyTypeObject Rftype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ typedef struct {
|
||||||
PyObject *curtext; /* If non-NULL current text being spoken */
|
PyObject *curtext; /* If non-NULL current text being spoken */
|
||||||
} scobject;
|
} scobject;
|
||||||
|
|
||||||
staticforward PyTypeObject sctype;
|
static PyTypeObject sctype;
|
||||||
|
|
||||||
#define is_scobject(v) ((v)->ob_type == &sctype)
|
#define is_scobject(v) ((v)->ob_type == &sctype)
|
||||||
|
|
||||||
|
@ -285,7 +285,7 @@ typedef struct {
|
||||||
VoiceDescription vd;
|
VoiceDescription vd;
|
||||||
} mvobject;
|
} mvobject;
|
||||||
|
|
||||||
staticforward PyTypeObject mvtype;
|
static PyTypeObject mvtype;
|
||||||
|
|
||||||
#define is_mvobject(v) ((v)->ob_type == &mvtype)
|
#define is_mvobject(v) ((v)->ob_type == &mvtype)
|
||||||
|
|
||||||
|
|
|
@ -27,10 +27,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For now we declare them forward here. They'll go to mactoolbox later */
|
/* For now we declare them forward here. They'll go to mactoolbox later */
|
||||||
staticforward PyObject *TXNObj_New(TXNObject);
|
static PyObject *TXNObj_New(TXNObject);
|
||||||
staticforward int TXNObj_Convert(PyObject *, TXNObject *);
|
static int TXNObj_Convert(PyObject *, TXNObject *);
|
||||||
staticforward PyObject *TXNFontMenuObj_New(TXNFontMenuObject);
|
static PyObject *TXNFontMenuObj_New(TXNFontMenuObject);
|
||||||
staticforward int TXNFontMenuObj_Convert(PyObject *, TXNFontMenuObject *);
|
static int TXNFontMenuObj_Convert(PyObject *, TXNFontMenuObject *);
|
||||||
|
|
||||||
// ADD declarations
|
// ADD declarations
|
||||||
#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
|
#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
|
||||||
|
|
|
@ -111,7 +111,7 @@ extern int _QdRGB_Convert(PyObject *, RGBColorPtr);
|
||||||
#define QDIsPortBuffered(port) 0
|
#define QDIsPortBuffered(port) 0
|
||||||
#endif /* !TARGET_API_MAC_CARBON */
|
#endif /* !TARGET_API_MAC_CARBON */
|
||||||
|
|
||||||
staticforward PyObject *BMObj_NewCopied(BitMapPtr);
|
static PyObject *BMObj_NewCopied(BitMapPtr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Parse/generate RGB records
|
** Parse/generate RGB records
|
||||||
|
@ -527,7 +527,7 @@ PyTypeObject BitMap_Type = {
|
||||||
|
|
||||||
/* ------------------ Object type QDGlobalsAccess ------------------- */
|
/* ------------------ Object type QDGlobalsAccess ------------------- */
|
||||||
|
|
||||||
staticforward PyTypeObject QDGlobalsAccess_Type;
|
static PyTypeObject QDGlobalsAccess_Type;
|
||||||
|
|
||||||
#define QDGA_Check(x) ((x)->ob_type == &QDGlobalsAccess_Type)
|
#define QDGA_Check(x) ((x)->ob_type == &QDGlobalsAccess_Type)
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ static PyObject *QDGA_getattr(QDGlobalsAccessObject *self, char *name)
|
||||||
|
|
||||||
#define QDGA_hash NULL
|
#define QDGA_hash NULL
|
||||||
|
|
||||||
staticforward PyTypeObject QDGlobalsAccess_Type = {
|
static PyTypeObject QDGlobalsAccess_Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0, /*ob_size*/
|
0, /*ob_size*/
|
||||||
"_Qd.QDGlobalsAccess", /*tp_name*/
|
"_Qd.QDGlobalsAccess", /*tp_name*/
|
||||||
|
|
|
@ -62,7 +62,7 @@ static PyObject *Snd_Error;
|
||||||
|
|
||||||
/* --------------------- Object type SndChannel --------------------- */
|
/* --------------------- Object type SndChannel --------------------- */
|
||||||
|
|
||||||
staticforward PyTypeObject SndChannel_Type;
|
static PyTypeObject SndChannel_Type;
|
||||||
|
|
||||||
#define SndCh_Check(x) ((x)->ob_type == &SndChannel_Type)
|
#define SndCh_Check(x) ((x)->ob_type == &SndChannel_Type)
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ static PyObject *SndCh_getattr(SndChannelObject *self, char *name)
|
||||||
|
|
||||||
#define SndCh_hash NULL
|
#define SndCh_hash NULL
|
||||||
|
|
||||||
staticforward PyTypeObject SndChannel_Type = {
|
static PyTypeObject SndChannel_Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0, /*ob_size*/
|
0, /*ob_size*/
|
||||||
"_Snd.SndChannel", /*tp_name*/
|
"_Snd.SndChannel", /*tp_name*/
|
||||||
|
@ -339,7 +339,7 @@ staticforward PyTypeObject SndChannel_Type = {
|
||||||
|
|
||||||
/* ------------------------ Object type SPB ------------------------- */
|
/* ------------------------ Object type SPB ------------------------- */
|
||||||
|
|
||||||
staticforward PyTypeObject SPB_Type;
|
static PyTypeObject SPB_Type;
|
||||||
|
|
||||||
#define SPBObj_Check(x) ((x)->ob_type == &SPB_Type)
|
#define SPBObj_Check(x) ((x)->ob_type == &SPB_Type)
|
||||||
|
|
||||||
|
@ -443,7 +443,7 @@ static int SPBObj_setattr(SPBObject *self, char *name, PyObject *value)
|
||||||
|
|
||||||
#define SPBObj_hash NULL
|
#define SPBObj_hash NULL
|
||||||
|
|
||||||
staticforward PyTypeObject SPB_Type = {
|
static PyTypeObject SPB_Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0, /*ob_size*/
|
0, /*ob_size*/
|
||||||
"_Snd.SPB", /*tp_name*/
|
"_Snd.SPB", /*tp_name*/
|
||||||
|
|
|
@ -33,8 +33,8 @@ extern PyObject *AEDesc_New(AppleEvent *);
|
||||||
extern int AEDesc_Convert(PyObject *, AppleEvent *);
|
extern int AEDesc_Convert(PyObject *, AppleEvent *);
|
||||||
|
|
||||||
/* Forward declaration */
|
/* Forward declaration */
|
||||||
staticforward PyObject *WEOObj_New(WEObjectReference);
|
static PyObject *WEOObj_New(WEObjectReference);
|
||||||
staticforward PyObject *ExistingwasteObj_New(WEReference);
|
static PyObject *ExistingwasteObj_New(WEReference);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Parse/generate TextStyle records
|
** Parse/generate TextStyle records
|
||||||
|
|
|
@ -64,7 +64,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <Dialogs.h>
|
#include <Dialogs.h>
|
||||||
|
|
||||||
#ifndef USE_BUILTIN_PATH
|
#ifndef USE_BUILTIN_PATH
|
||||||
staticforward char *PyMac_GetPythonPath();
|
static char *PyMac_GetPythonPath();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PYTHONPATH "\
|
#define PYTHONPATH "\
|
||||||
|
|
|
@ -1293,9 +1293,9 @@ SRE_LITERAL_TEMPLATE(SRE_CHAR* ptr, int len)
|
||||||
|
|
||||||
/* see sre.h for object declarations */
|
/* see sre.h for object declarations */
|
||||||
|
|
||||||
staticforward PyTypeObject Pattern_Type;
|
static PyTypeObject Pattern_Type;
|
||||||
staticforward PyTypeObject Match_Type;
|
static PyTypeObject Match_Type;
|
||||||
staticforward PyTypeObject Scanner_Type;
|
static PyTypeObject Scanner_Type;
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
_compile(PyObject* self_, PyObject* args)
|
_compile(PyObject* self_, PyObject* args)
|
||||||
|
|
|
@ -61,9 +61,9 @@ typedef struct {
|
||||||
|
|
||||||
} PySSLObject;
|
} PySSLObject;
|
||||||
|
|
||||||
staticforward PyTypeObject PySSL_Type;
|
static PyTypeObject PySSL_Type;
|
||||||
staticforward PyObject *PySSL_SSLwrite(PySSLObject *self, PyObject *args);
|
static PyObject *PySSL_SSLwrite(PySSLObject *self, PyObject *args);
|
||||||
staticforward PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args);
|
static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args);
|
||||||
|
|
||||||
#define PySSLObject_Check(v) ((v)->ob_type == &PySSL_Type)
|
#define PySSLObject_Check(v) ((v)->ob_type == &PySSL_Type)
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ static PyObject *PySSL_getattr(PySSLObject *self, char *name)
|
||||||
return Py_FindMethod(PySSLMethods, (PyObject *)self, name);
|
return Py_FindMethod(PySSLMethods, (PyObject *)self, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward PyTypeObject PySSL_Type = {
|
static PyTypeObject PySSL_Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0, /*ob_size*/
|
0, /*ob_size*/
|
||||||
"socket.SSL", /*tp_name*/
|
"socket.SSL", /*tp_name*/
|
||||||
|
|
|
@ -186,7 +186,7 @@ typedef int (*TclMacConvertEventPtr) (EventRecord *eventPtr);
|
||||||
void Tcl_MacSetEventProc(TclMacConvertEventPtr procPtr);
|
void Tcl_MacSetEventProc(TclMacConvertEventPtr procPtr);
|
||||||
int TkMacConvertEvent(EventRecord *eventPtr);
|
int TkMacConvertEvent(EventRecord *eventPtr);
|
||||||
|
|
||||||
staticforward int PyMacConvertEvent(EventRecord *eventPtr);
|
static int PyMacConvertEvent(EventRecord *eventPtr);
|
||||||
|
|
||||||
#include <SIOUX.h>
|
#include <SIOUX.h>
|
||||||
extern int SIOUXIsAppWindow(WindowPtr);
|
extern int SIOUXIsAppWindow(WindowPtr);
|
||||||
|
@ -199,7 +199,7 @@ extern int SIOUXIsAppWindow(WindowPtr);
|
||||||
|
|
||||||
/**** Tkapp Object Declaration ****/
|
/**** Tkapp Object Declaration ****/
|
||||||
|
|
||||||
staticforward PyTypeObject Tkapp_Type;
|
static PyTypeObject Tkapp_Type;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
@ -1515,7 +1515,7 @@ Tkapp_DeleteFileHandler(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
/**** Tktt Object (timer token) ****/
|
/**** Tktt Object (timer token) ****/
|
||||||
|
|
||||||
staticforward PyTypeObject Tktt_Type;
|
static PyTypeObject Tktt_Type;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
|
|
@ -24,7 +24,7 @@ typedef struct {
|
||||||
ALport port;
|
ALport port;
|
||||||
} alpobject;
|
} alpobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Alptype;
|
static PyTypeObject Alptype;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ typedef struct {
|
||||||
ALconfig config;
|
ALconfig config;
|
||||||
} alcobject;
|
} alcobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Alctype;
|
static PyTypeObject Alctype;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -35,7 +35,7 @@ typedef struct arrayobject {
|
||||||
struct arraydescr *ob_descr;
|
struct arraydescr *ob_descr;
|
||||||
} arrayobject;
|
} arrayobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Arraytype;
|
static PyTypeObject Arraytype;
|
||||||
|
|
||||||
#define array_Check(op) PyObject_TypeCheck(op, &Arraytype)
|
#define array_Check(op) PyObject_TypeCheck(op, &Arraytype)
|
||||||
#define array_CheckExact(op) ((op)->ob_type == &Arraytype)
|
#define array_CheckExact(op) ((op)->ob_type == &Arraytype)
|
||||||
|
|
|
@ -39,7 +39,7 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
} bsddbobject;
|
} bsddbobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Bsddbtype;
|
static PyTypeObject Bsddbtype;
|
||||||
|
|
||||||
#define is_bsddbobject(v) ((v)->ob_type == &Bsddbtype)
|
#define is_bsddbobject(v) ((v)->ob_type == &Bsddbtype)
|
||||||
#define check_bsddbobject_open(v, r) if ((v)->di_bsddb == NULL) \
|
#define check_bsddbobject_open(v, r) if ((v)->di_bsddb == NULL) \
|
||||||
|
|
|
@ -288,7 +288,7 @@ typedef struct Picklerobject {
|
||||||
#define PY_CPICKLE_FAST_LIMIT 50
|
#define PY_CPICKLE_FAST_LIMIT 50
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
staticforward PyTypeObject Picklertype;
|
static PyTypeObject Picklertype;
|
||||||
|
|
||||||
typedef struct Unpicklerobject {
|
typedef struct Unpicklerobject {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
@ -313,7 +313,7 @@ typedef struct Unpicklerobject {
|
||||||
PyObject *find_class;
|
PyObject *find_class;
|
||||||
} Unpicklerobject;
|
} Unpicklerobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Unpicklertype;
|
static PyTypeObject Unpicklertype;
|
||||||
|
|
||||||
/* Forward decls that need the above structs */
|
/* Forward decls that need the above structs */
|
||||||
static int save(Picklerobject *, PyObject *, int);
|
static int save(Picklerobject *, PyObject *, int);
|
||||||
|
|
|
@ -17,9 +17,9 @@ static Py_complex c_i = {0., 1.};
|
||||||
static Py_complex c_halfi = {0., 0.5};
|
static Py_complex c_halfi = {0., 0.5};
|
||||||
|
|
||||||
/* forward declarations */
|
/* forward declarations */
|
||||||
staticforward Py_complex c_log(Py_complex);
|
static Py_complex c_log(Py_complex);
|
||||||
staticforward Py_complex c_prodi(Py_complex);
|
static Py_complex c_prodi(Py_complex);
|
||||||
staticforward Py_complex c_sqrt(Py_complex);
|
static Py_complex c_sqrt(Py_complex);
|
||||||
|
|
||||||
|
|
||||||
static Py_complex
|
static Py_complex
|
||||||
|
|
|
@ -31,7 +31,7 @@ typedef struct {
|
||||||
DBM *di_dbm;
|
DBM *di_dbm;
|
||||||
} dbmobject;
|
} dbmobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Dbmtype;
|
static PyTypeObject Dbmtype;
|
||||||
|
|
||||||
#define is_dbmobject(v) ((v)->ob_type == &Dbmtype)
|
#define is_dbmobject(v) ((v)->ob_type == &Dbmtype)
|
||||||
#define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \
|
#define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \
|
||||||
|
|
|
@ -15,7 +15,7 @@ typedef struct {
|
||||||
PyUnivPtr *dl_handle;
|
PyUnivPtr *dl_handle;
|
||||||
} dlobject;
|
} dlobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Dltype;
|
static PyTypeObject Dltype;
|
||||||
|
|
||||||
static PyObject *Dlerror;
|
static PyObject *Dlerror;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ typedef struct {
|
||||||
PyObject *ob_callback_arg;
|
PyObject *ob_callback_arg;
|
||||||
} genericobject;
|
} genericobject;
|
||||||
|
|
||||||
staticforward PyTypeObject GenericObjecttype;
|
static PyTypeObject GenericObjecttype;
|
||||||
|
|
||||||
#define is_genericobject(g) ((g)->ob_type == &GenericObjecttype)
|
#define is_genericobject(g) ((g)->ob_type == &GenericObjecttype)
|
||||||
|
|
||||||
|
@ -1189,7 +1189,7 @@ typedef struct {
|
||||||
FL_FORM *ob_form;
|
FL_FORM *ob_form;
|
||||||
} formobject;
|
} formobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Formtype;
|
static PyTypeObject Formtype;
|
||||||
|
|
||||||
#define is_formobject(v) ((v)->ob_type == &Formtype)
|
#define is_formobject(v) ((v)->ob_type == &Formtype)
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ typedef struct {
|
||||||
fmfonthandle fh_fh;
|
fmfonthandle fh_fh;
|
||||||
} fhobject;
|
} fhobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Fhtype;
|
static PyTypeObject Fhtype;
|
||||||
|
|
||||||
#define is_fhobject(v) ((v)->ob_type == &Fhtype)
|
#define is_fhobject(v) ((v)->ob_type == &Fhtype)
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ typedef struct {
|
||||||
GDBM_FILE di_dbm;
|
GDBM_FILE di_dbm;
|
||||||
} dbmobject;
|
} dbmobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Dbmtype;
|
static PyTypeObject Dbmtype;
|
||||||
|
|
||||||
#define is_dbmobject(v) ((v)->ob_type == &Dbmtype)
|
#define is_dbmobject(v) ((v)->ob_type == &Dbmtype)
|
||||||
#define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \
|
#define check_dbmobject_open(v) if ((v)->di_dbm == NULL) \
|
||||||
|
|
|
@ -70,7 +70,7 @@ static struct {
|
||||||
|
|
||||||
static int n_audio_types = sizeof(audio_types) / sizeof(audio_types[0]);
|
static int n_audio_types = sizeof(audio_types) / sizeof(audio_types[0]);
|
||||||
|
|
||||||
staticforward PyTypeObject Ladtype;
|
static PyTypeObject Ladtype;
|
||||||
|
|
||||||
static PyObject *LinuxAudioError;
|
static PyObject *LinuxAudioError;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ typedef struct {
|
||||||
MD5_CTX md5; /* the context holder */
|
MD5_CTX md5; /* the context holder */
|
||||||
} md5object;
|
} md5object;
|
||||||
|
|
||||||
staticforward PyTypeObject MD5type;
|
static PyTypeObject MD5type;
|
||||||
|
|
||||||
#define is_md5object(v) ((v)->ob_type == &MD5type)
|
#define is_md5object(v) ((v)->ob_type == &MD5type)
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ typedef struct {
|
||||||
MP_INT mpz; /* the actual number */
|
MP_INT mpz; /* the actual number */
|
||||||
} mpzobject;
|
} mpzobject;
|
||||||
|
|
||||||
staticforward PyTypeObject MPZtype;
|
static PyTypeObject MPZtype;
|
||||||
|
|
||||||
#define is_mpzobject(v) ((v)->ob_type == &MPZtype)
|
#define is_mpzobject(v) ((v)->ob_type == &MPZtype)
|
||||||
|
|
||||||
|
|
|
@ -157,14 +157,9 @@ typedef struct {
|
||||||
} PyST_Object;
|
} PyST_Object;
|
||||||
|
|
||||||
|
|
||||||
staticforward void
|
static void parser_free(PyST_Object *st);
|
||||||
parser_free(PyST_Object *st);
|
static int parser_compare(PyST_Object *left, PyST_Object *right);
|
||||||
|
static PyObject *parser_getattr(PyObject *self, char *name);
|
||||||
staticforward int
|
|
||||||
parser_compare(PyST_Object *left, PyST_Object *right);
|
|
||||||
|
|
||||||
staticforward PyObject *
|
|
||||||
parser_getattr(PyObject *self, char *name);
|
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -550,9 +545,9 @@ parser_suite(PyST_Object *self, PyObject *args, PyObject *kw)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
staticforward node* build_node_tree(PyObject *tuple);
|
static node* build_node_tree(PyObject *tuple);
|
||||||
staticforward int validate_expr_tree(node *tree);
|
static int validate_expr_tree(node *tree);
|
||||||
staticforward int validate_file_input(node *tree);
|
static int validate_file_input(node *tree);
|
||||||
|
|
||||||
|
|
||||||
/* PyObject* parser_tuple2st(PyObject* self, PyObject* args)
|
/* PyObject* parser_tuple2st(PyObject* self, PyObject* args)
|
||||||
|
@ -793,7 +788,7 @@ build_node_tree(PyObject *tuple)
|
||||||
/*
|
/*
|
||||||
* Validation routines used within the validation section:
|
* Validation routines used within the validation section:
|
||||||
*/
|
*/
|
||||||
staticforward int validate_terminal(node *terminal, int type, char *string);
|
static int validate_terminal(node *terminal, int type, char *string);
|
||||||
|
|
||||||
#define validate_ampersand(ch) validate_terminal(ch, AMPER, "&")
|
#define validate_ampersand(ch) validate_terminal(ch, AMPER, "&")
|
||||||
#define validate_circumflex(ch) validate_terminal(ch, CIRCUMFLEX, "^")
|
#define validate_circumflex(ch) validate_terminal(ch, CIRCUMFLEX, "^")
|
||||||
|
|
|
@ -24,7 +24,7 @@ typedef struct {
|
||||||
int num_groups;
|
int num_groups;
|
||||||
} PcreObject;
|
} PcreObject;
|
||||||
|
|
||||||
staticforward PyTypeObject Pcre_Type;
|
static PyTypeObject Pcre_Type;
|
||||||
|
|
||||||
#define PcreObject_Check(v) ((v)->ob_type == &Pcre_Type)
|
#define PcreObject_Check(v) ((v)->ob_type == &Pcre_Type)
|
||||||
#define NORMAL 0
|
#define NORMAL 0
|
||||||
|
@ -125,7 +125,7 @@ PyPcre_getattr(PcreObject *self, char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
staticforward PyTypeObject Pcre_Type = {
|
static PyTypeObject Pcre_Type = {
|
||||||
PyObject_HEAD_INIT(NULL)
|
PyObject_HEAD_INIT(NULL)
|
||||||
0, /*ob_size*/
|
0, /*ob_size*/
|
||||||
"pcre.Pcre", /*tp_name*/
|
"pcre.Pcre", /*tp_name*/
|
||||||
|
|
|
@ -66,7 +66,7 @@ typedef struct {
|
||||||
|
|
||||||
#define CHARACTER_DATA_BUFFER_SIZE 8192
|
#define CHARACTER_DATA_BUFFER_SIZE 8192
|
||||||
|
|
||||||
staticforward PyTypeObject Xmlparsetype;
|
static PyTypeObject Xmlparsetype;
|
||||||
|
|
||||||
typedef void (*xmlhandlersetter)(XML_Parser *self, void *meth);
|
typedef void (*xmlhandlersetter)(XML_Parser *self, void *meth);
|
||||||
typedef void* xmlhandler;
|
typedef void* xmlhandler;
|
||||||
|
@ -79,7 +79,7 @@ struct HandlerInfo {
|
||||||
PyObject *nameobj;
|
PyObject *nameobj;
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward struct HandlerInfo handler_info[64];
|
static struct HandlerInfo handler_info[64];
|
||||||
|
|
||||||
/* Set an integer attribute on the error object; return true on success,
|
/* Set an integer attribute on the error object; return true on success,
|
||||||
* false on an exception.
|
* false on an exception.
|
||||||
|
|
|
@ -78,7 +78,7 @@ typedef struct {
|
||||||
unsigned char *advances; /* [num_rotors] */
|
unsigned char *advances; /* [num_rotors] */
|
||||||
} Rotorobj;
|
} Rotorobj;
|
||||||
|
|
||||||
staticforward PyTypeObject Rotor_Type;
|
static PyTypeObject Rotor_Type;
|
||||||
|
|
||||||
#define is_rotor(v) ((v)->ob_type == &Rotor_Type)
|
#define is_rotor(v) ((v)->ob_type == &Rotor_Type)
|
||||||
|
|
||||||
|
|
|
@ -322,7 +322,7 @@ typedef struct {
|
||||||
struct pollfd *ufds;
|
struct pollfd *ufds;
|
||||||
} pollObject;
|
} pollObject;
|
||||||
|
|
||||||
staticforward PyTypeObject poll_Type;
|
static PyTypeObject poll_Type;
|
||||||
|
|
||||||
/* Update the malloc'ed array of pollfds to match the dictionary
|
/* Update the malloc'ed array of pollfds to match the dictionary
|
||||||
contained within a pollObject. Return 1 on success, 0 on an error.
|
contained within a pollObject. Return 1 on success, 0 on an error.
|
||||||
|
|
|
@ -330,7 +330,7 @@ sha_final(unsigned char digest[20], SHAobject *sha_info)
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
staticforward PyTypeObject SHAtype;
|
static PyTypeObject SHAtype;
|
||||||
|
|
||||||
|
|
||||||
static SHAobject *
|
static SHAobject *
|
||||||
|
|
|
@ -276,7 +276,7 @@ static int taskwindow;
|
||||||
The sock_type variable contains pointers to various functions,
|
The sock_type variable contains pointers to various functions,
|
||||||
some of which call new_sockobject(), which uses sock_type, so
|
some of which call new_sockobject(), which uses sock_type, so
|
||||||
there has to be a circular reference. */
|
there has to be a circular reference. */
|
||||||
staticforward PyTypeObject sock_type;
|
static PyTypeObject sock_type;
|
||||||
|
|
||||||
/* Convenience function to raise an error according to errno
|
/* Convenience function to raise an error according to errno
|
||||||
and return a NULL pointer from a function. */
|
and return a NULL pointer from a function. */
|
||||||
|
|
|
@ -36,8 +36,8 @@ typedef struct {
|
||||||
audio_info_t ai;
|
audio_info_t ai;
|
||||||
} sadstatusobject;
|
} sadstatusobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Sadtype;
|
static PyTypeObject Sadtype;
|
||||||
staticforward PyTypeObject Sadstatustype;
|
static PyTypeObject Sadstatustype;
|
||||||
static sadstatusobject *sads_alloc(void); /* Forward */
|
static sadstatusobject *sads_alloc(void); /* Forward */
|
||||||
|
|
||||||
static PyObject *SunAudioError;
|
static PyObject *SunAudioError;
|
||||||
|
|
|
@ -22,7 +22,7 @@ typedef struct {
|
||||||
PyThread_type_lock lock_lock;
|
PyThread_type_lock lock_lock;
|
||||||
} lockobject;
|
} lockobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Locktype;
|
static PyTypeObject Locktype;
|
||||||
|
|
||||||
static lockobject *
|
static lockobject *
|
||||||
newlockobject(void)
|
newlockobject(void)
|
||||||
|
|
|
@ -14,7 +14,7 @@ typedef struct {
|
||||||
int abslineno;
|
int abslineno;
|
||||||
} PyXReadlinesObject;
|
} PyXReadlinesObject;
|
||||||
|
|
||||||
staticforward PyTypeObject XReadlinesObject_Type;
|
static PyTypeObject XReadlinesObject_Type;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xreadlines_dealloc(PyXReadlinesObject *op)
|
xreadlines_dealloc(PyXReadlinesObject *op)
|
||||||
|
|
|
@ -23,7 +23,7 @@ typedef struct {
|
||||||
PyObject *x_attr; /* Attributes dictionary */
|
PyObject *x_attr; /* Attributes dictionary */
|
||||||
} XxoObject;
|
} XxoObject;
|
||||||
|
|
||||||
staticforward PyTypeObject Xxo_Type;
|
static PyTypeObject Xxo_Type;
|
||||||
|
|
||||||
#define XxoObject_Check(v) ((v)->ob_type == &Xxo_Type)
|
#define XxoObject_Check(v) ((v)->ob_type == &Xxo_Type)
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ static PyMethodDef spamlist_methods[] = {
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward PyTypeObject spamlist_type;
|
static PyTypeObject spamlist_type;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spamlist_init(spamlistobject *self, PyObject *args, PyObject *kwds)
|
spamlist_init(spamlistobject *self, PyObject *args, PyObject *kwds)
|
||||||
|
@ -179,7 +179,7 @@ static PyMethodDef spamdict_methods[] = {
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward PyTypeObject spamdict_type;
|
static PyTypeObject spamdict_type;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spamdict_init(spamdictobject *self, PyObject *args, PyObject *kwds)
|
spamdict_init(spamdictobject *self, PyObject *args, PyObject *kwds)
|
||||||
|
|
|
@ -55,8 +55,8 @@ static PyThread_type_lock zlib_lock = NULL; /* initialized on module load */
|
||||||
#define DEFAULTALLOC (16*1024)
|
#define DEFAULTALLOC (16*1024)
|
||||||
#define PyInit_zlib initzlib
|
#define PyInit_zlib initzlib
|
||||||
|
|
||||||
staticforward PyTypeObject Comptype;
|
static PyTypeObject Comptype;
|
||||||
staticforward PyTypeObject Decomptype;
|
static PyTypeObject Decomptype;
|
||||||
|
|
||||||
static PyObject *ZlibError;
|
static PyObject *ZlibError;
|
||||||
|
|
||||||
|
|
|
@ -1611,7 +1611,7 @@ dict_tp_clear(PyObject *op)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
staticforward PyObject *dictiter_new(dictobject *, binaryfunc);
|
static PyObject *dictiter_new(dictobject *, binaryfunc);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
select_key(PyObject *key, PyObject *value)
|
select_key(PyObject *key, PyObject *value)
|
||||||
|
|
|
@ -678,7 +678,7 @@ float_float(PyObject *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
staticforward PyObject *
|
static PyObject *
|
||||||
float_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
float_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -775,7 +775,7 @@ int_hex(PyIntObject *v)
|
||||||
return PyString_FromString(buf);
|
return PyString_FromString(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward PyObject *
|
static PyObject *
|
||||||
int_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
int_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -1282,7 +1282,7 @@ samplesortslice(PyObject **lo, PyObject **hi, PyObject *compare)
|
||||||
|
|
||||||
#undef SETK
|
#undef SETK
|
||||||
|
|
||||||
staticforward PyTypeObject immutable_list_type;
|
static PyTypeObject immutable_list_type;
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
listsort(PyListObject *self, PyObject *args)
|
listsort(PyListObject *self, PyObject *args)
|
||||||
|
|
|
@ -2199,7 +2199,8 @@ long_hex(PyObject *v)
|
||||||
{
|
{
|
||||||
return long_format(v, 16, 1);
|
return long_format(v, 16, 1);
|
||||||
}
|
}
|
||||||
staticforward PyObject *
|
|
||||||
|
static PyObject *
|
||||||
long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -163,7 +163,7 @@ static PySequenceMethods range_as_sequence = {
|
||||||
0, /* sq_slice */
|
0, /* sq_slice */
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward PyObject * range_iter(PyObject *seq);
|
static PyObject * range_iter(PyObject *seq);
|
||||||
|
|
||||||
PyTypeObject PyRange_Type = {
|
PyTypeObject PyRange_Type = {
|
||||||
PyObject_HEAD_INIT(&PyType_Type)
|
PyObject_HEAD_INIT(&PyType_Type)
|
||||||
|
@ -217,7 +217,7 @@ typedef struct {
|
||||||
long len;
|
long len;
|
||||||
} rangeiterobject;
|
} rangeiterobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Pyrangeiter_Type;
|
static PyTypeObject Pyrangeiter_Type;
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
range_iter(PyObject *seq)
|
range_iter(PyObject *seq)
|
||||||
|
|
|
@ -2864,7 +2864,7 @@ string_methods[] = {
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward PyObject *
|
static PyObject *
|
||||||
str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -479,7 +479,7 @@ tuplerichcompare(PyObject *v, PyObject *w, int op)
|
||||||
return PyObject_RichCompare(vt->ob_item[i], wt->ob_item[i], op);
|
return PyObject_RichCompare(vt->ob_item[i], wt->ob_item[i], op);
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward PyObject *
|
static PyObject *
|
||||||
tuple_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
tuple_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -356,7 +356,7 @@ subtype_clear(PyObject *self)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward PyObject *lookup_maybe(PyObject *, char *, PyObject **);
|
static PyObject *lookup_maybe(PyObject *, char *, PyObject **);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
call_finalizer(PyObject *self)
|
call_finalizer(PyObject *self)
|
||||||
|
@ -469,7 +469,7 @@ subtype_dealloc(PyObject *self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward PyTypeObject *solid_base(PyTypeObject *type);
|
static PyTypeObject *solid_base(PyTypeObject *type);
|
||||||
|
|
||||||
/* type test with subclassing support */
|
/* type test with subclassing support */
|
||||||
|
|
||||||
|
@ -894,10 +894,10 @@ solid_base(PyTypeObject *type)
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward void object_dealloc(PyObject *);
|
static void object_dealloc(PyObject *);
|
||||||
staticforward int object_init(PyObject *, PyObject *, PyObject *);
|
static int object_init(PyObject *, PyObject *, PyObject *);
|
||||||
staticforward int update_slot(PyTypeObject *, PyObject *);
|
static int update_slot(PyTypeObject *, PyObject *);
|
||||||
staticforward void fixup_slot_dispatchers(PyTypeObject *);
|
static void fixup_slot_dispatchers(PyTypeObject *);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
subtype_dict(PyObject *obj, void *context)
|
subtype_dict(PyObject *obj, void *context)
|
||||||
|
@ -2187,8 +2187,8 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward int add_operators(PyTypeObject *);
|
static int add_operators(PyTypeObject *);
|
||||||
staticforward int add_subclass(PyTypeObject *base, PyTypeObject *type);
|
static int add_subclass(PyTypeObject *base, PyTypeObject *type);
|
||||||
|
|
||||||
int
|
int
|
||||||
PyType_Ready(PyTypeObject *type)
|
PyType_Ready(PyTypeObject *type)
|
||||||
|
@ -3118,7 +3118,7 @@ SLOT1BIN(slot_nb_divide, nb_divide, "__div__", "__rdiv__")
|
||||||
SLOT1BIN(slot_nb_remainder, nb_remainder, "__mod__", "__rmod__")
|
SLOT1BIN(slot_nb_remainder, nb_remainder, "__mod__", "__rmod__")
|
||||||
SLOT1BIN(slot_nb_divmod, nb_divmod, "__divmod__", "__rdivmod__")
|
SLOT1BIN(slot_nb_divmod, nb_divmod, "__divmod__", "__rdivmod__")
|
||||||
|
|
||||||
staticforward PyObject *slot_nb_power(PyObject *, PyObject *, PyObject *);
|
static PyObject *slot_nb_power(PyObject *, PyObject *, PyObject *);
|
||||||
|
|
||||||
SLOT1BINFULL(slot_nb_power_binary, slot_nb_power,
|
SLOT1BINFULL(slot_nb_power_binary, slot_nb_power,
|
||||||
nb_power, "__pow__", "__rpow__")
|
nb_power, "__pow__", "__rpow__")
|
||||||
|
@ -4013,8 +4013,8 @@ update_one_slot(PyTypeObject *type, slotdef *p)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
staticforward int recurse_down_subclasses(PyTypeObject *type,
|
static int recurse_down_subclasses(PyTypeObject *type, slotdef **pp,
|
||||||
slotdef **pp, PyObject *name);
|
PyObject *name);
|
||||||
|
|
||||||
/* In the type, update the slots whose slotdefs are gathered in the pp0 array,
|
/* In the type, update the slots whose slotdefs are gathered in the pp0 array,
|
||||||
and then do the same for all this type's subtypes. */
|
and then do the same for all this type's subtypes. */
|
||||||
|
|
|
@ -5796,7 +5796,7 @@ static PyBufferProcs unicode_as_buffer = {
|
||||||
(getcharbufferproc) unicode_buffer_getcharbuf,
|
(getcharbufferproc) unicode_buffer_getcharbuf,
|
||||||
};
|
};
|
||||||
|
|
||||||
staticforward PyObject *
|
static PyObject *
|
||||||
unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
|
@ -18,7 +18,7 @@ typedef struct {
|
||||||
PyObject *x_attr; /* Attributes dictionary */
|
PyObject *x_attr; /* Attributes dictionary */
|
||||||
} xxobject;
|
} xxobject;
|
||||||
|
|
||||||
staticforward PyTypeObject Xxtype;
|
static PyTypeObject Xxtype;
|
||||||
|
|
||||||
#define is_xxobject(v) ((v)->ob_type == &Xxtype)
|
#define is_xxobject(v) ((v)->ob_type == &Xxtype)
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ static long dxp[256];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
staticforward PyTypeObject gentype;
|
static PyTypeObject gentype;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
|
|
@ -40,7 +40,7 @@ class ObjectDefinition(GeneratorGroup):
|
||||||
|
|
||||||
OutHeader2("Object type " + self.name)
|
OutHeader2("Object type " + self.name)
|
||||||
|
|
||||||
sf = self.static and "staticforward "
|
sf = self.static and "static "
|
||||||
Output("%sPyTypeObject %s;", sf, self.typename)
|
Output("%sPyTypeObject %s;", sf, self.typename)
|
||||||
Output()
|
Output()
|
||||||
Output("#define %s_Check(x) ((x)->ob_type == &%s)",
|
Output("#define %s_Check(x) ((x)->ob_type == &%s)",
|
||||||
|
@ -164,7 +164,7 @@ class ObjectDefinition(GeneratorGroup):
|
||||||
Output("#define %s_hash NULL", self.prefix)
|
Output("#define %s_hash NULL", self.prefix)
|
||||||
|
|
||||||
def outputTypeObject(self):
|
def outputTypeObject(self):
|
||||||
sf = self.static and "staticforward "
|
sf = self.static and "static "
|
||||||
Output()
|
Output()
|
||||||
Output("%sPyTypeObject %s = {", sf, self.typename)
|
Output("%sPyTypeObject %s = {", sf, self.typename)
|
||||||
IndentLevel()
|
IndentLevel()
|
||||||
|
|
|
@ -6,7 +6,7 @@ typedef struct {
|
||||||
/* XXXX Add your own stuff here */
|
/* XXXX Add your own stuff here */
|
||||||
} $abbrev$object;
|
} $abbrev$object;
|
||||||
|
|
||||||
staticforward PyTypeObject $Abbrev$type;
|
static PyTypeObject $Abbrev$type;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# From configure.in Revision: 1.327 .
|
# From configure.in Revision: 1.328 .
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.53.
|
# Generated by GNU Autoconf 2.53.
|
||||||
#
|
#
|
||||||
|
@ -13774,64 +13774,6 @@ echo "${ECHO_T}no" >&6
|
||||||
fi
|
fi
|
||||||
rm -f conftest.$ac_objext conftest.$ac_ext
|
rm -f conftest.$ac_objext conftest.$ac_ext
|
||||||
|
|
||||||
echo "$as_me:$LINENO: checking for bad static forward" >&5
|
|
||||||
echo $ECHO_N "checking for bad static forward... $ECHO_C" >&6
|
|
||||||
if test "${ac_cv_bad_static_forward+set}" = set; then
|
|
||||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
|
||||||
else
|
|
||||||
if test "$cross_compiling" = yes; then
|
|
||||||
ac_cv_bad_static_forward=no
|
|
||||||
else
|
|
||||||
cat >conftest.$ac_ext <<_ACEOF
|
|
||||||
#line $LINENO "configure"
|
|
||||||
#include "confdefs.h"
|
|
||||||
|
|
||||||
struct s { int a; int b; };
|
|
||||||
static struct s foo;
|
|
||||||
int foobar() {
|
|
||||||
static int random;
|
|
||||||
random = (int) &foo;
|
|
||||||
return random;
|
|
||||||
}
|
|
||||||
static struct s foo = { 1, 2 };
|
|
||||||
main() {
|
|
||||||
exit(!((int)&foo == foobar()));
|
|
||||||
}
|
|
||||||
_ACEOF
|
|
||||||
rm -f conftest$ac_exeext
|
|
||||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|
||||||
(eval $ac_link) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
|
||||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
|
||||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
|
||||||
(eval $ac_try) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
|
||||||
(exit $ac_status); }; }; then
|
|
||||||
ac_cv_bad_static_forward=no
|
|
||||||
else
|
|
||||||
echo "$as_me: program exited with status $ac_status" >&5
|
|
||||||
echo "$as_me: failed program was:" >&5
|
|
||||||
cat conftest.$ac_ext >&5
|
|
||||||
( exit $ac_status )
|
|
||||||
ac_cv_bad_static_forward=yes
|
|
||||||
fi
|
|
||||||
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$as_me:$LINENO: result: $ac_cv_bad_static_forward" >&5
|
|
||||||
echo "${ECHO_T}$ac_cv_bad_static_forward" >&6
|
|
||||||
if test "$ac_cv_bad_static_forward" = yes
|
|
||||||
then
|
|
||||||
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
|
||||||
#define BAD_STATIC_FORWARD 1
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
va_list_is_array=no
|
va_list_is_array=no
|
||||||
echo "$as_me:$LINENO: checking whether va_list is an array" >&5
|
echo "$as_me:$LINENO: checking whether va_list is an array" >&5
|
||||||
echo $ECHO_N "checking whether va_list is an array... $ECHO_C" >&6
|
echo $ECHO_N "checking whether va_list is an array... $ECHO_C" >&6
|
||||||
|
|
25
configure.in
25
configure.in
|
@ -1896,31 +1896,6 @@ x.sa_len = 0;],
|
||||||
AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
|
AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
|
||||||
AC_MSG_RESULT(no))
|
AC_MSG_RESULT(no))
|
||||||
|
|
||||||
AC_MSG_CHECKING(for bad static forward)
|
|
||||||
AC_CACHE_VAL(ac_cv_bad_static_forward,
|
|
||||||
[AC_TRY_RUN([
|
|
||||||
struct s { int a; int b; };
|
|
||||||
static struct s foo;
|
|
||||||
int foobar() {
|
|
||||||
static int random;
|
|
||||||
random = (int) &foo;
|
|
||||||
return random;
|
|
||||||
}
|
|
||||||
static struct s foo = { 1, 2 };
|
|
||||||
main() {
|
|
||||||
exit(!((int)&foo == foobar()));
|
|
||||||
}],
|
|
||||||
ac_cv_bad_static_forward=no,
|
|
||||||
ac_cv_bad_static_forward=yes,
|
|
||||||
ac_cv_bad_static_forward=no)])
|
|
||||||
AC_MSG_RESULT($ac_cv_bad_static_forward)
|
|
||||||
if test "$ac_cv_bad_static_forward" = yes
|
|
||||||
then
|
|
||||||
AC_DEFINE(BAD_STATIC_FORWARD, 1,
|
|
||||||
[Define if your compiler botches static forward declarations
|
|
||||||
(as it does on SCI ODT 3.0)])
|
|
||||||
fi
|
|
||||||
|
|
||||||
va_list_is_array=no
|
va_list_is_array=no
|
||||||
AC_MSG_CHECKING(whether va_list is an array)
|
AC_MSG_CHECKING(whether va_list is an array)
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
|
|
Loading…
Reference in New Issue