| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 94390ec commit caa6380
48 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,3 +1,3 @@ | |||
| 1 | 1 | /* Header file to be included by modules using new naming conventions */ | |
| 2 | + #define Py_USE_NEW_NAMES | ||
| 2 | 3 | #include "allobjects.h" | |
| 3 | - #include "rename1.h" | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -46,19 +46,19 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 46 | 46 | #define AC_R_PUBLIC 0004 | |
| 47 | 47 | #define AC_W_PUBLIC 0002 | |
| 48 | 48 | ||
| 49 | - extern DL_IMPORT typeobject Accesstype; | ||
| 49 | + extern DL_IMPORT PyTypeObject Accesstype; | ||
| 50 | 50 | ||
| 51 | - #define is_accessobject(v) ((v)->ob_type == &Accesstype) | ||
| 51 | + #define PyAccess_Check(v) ((v)->ob_type == &Accesstype) | ||
| 52 | 52 | ||
| 53 | - object *newaccessobject PROTO((object *, object *, typeobject *, int)); | ||
| 54 | - object *getaccessvalue PROTO((object *, object *)); | ||
| 55 | - int setaccessvalue PROTO((object *, object *, object *)); | ||
| 53 | + PyObject *newaccessobject Py_PROTO((PyObject *, PyObject *, PyTypeObject *, int)); | ||
| 54 | + PyObject *getaccessvalue Py_PROTO((PyObject *, PyObject *)); | ||
| 55 | + int setaccessvalue Py_PROTO((PyObject *, PyObject *, PyObject *)); | ||
| 56 | 56 | ||
| 57 | - void setaccessowner PROTO((object *, object *)); | ||
| 58 | - object *cloneaccessobject PROTO((object *)); | ||
| 59 | - int hasaccessvalue PROTO((object *)); | ||
| 57 | + void setaccessowner Py_PROTO((PyObject *, PyObject *)); | ||
| 58 | + PyObject *cloneaccessobject Py_PROTO((PyObject *)); | ||
| 59 | + int hasaccessvalue Py_PROTO((PyObject *)); | ||
| 60 | 60 | ||
| 61 | - extern DL_IMPORT typeobject Anynumbertype, Anysequencetype, Anymappingtype; | ||
| 61 | + extern DL_IMPORT PyTypeObject Anynumbertype, Anysequencetype, Anymappingtype; | ||
| 62 | 62 | ||
| 63 | 63 | #ifdef __cplusplus | |
| 64 | 64 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -49,6 +49,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 49 | 49 | ||
| 50 | 50 | #include <stdio.h> | |
| 51 | 51 | #include <string.h> | |
| 52 | + #include <errno.h> | ||
| 52 | 53 | ||
| 53 | 54 | #include "myproto.h" | |
| 54 | 55 | ||
@@ -76,9 +77,17 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 76 | 77 | #include "modsupport.h" | |
| 77 | 78 | #include "ceval.h" | |
| 78 | 79 | ||
| 79 | - extern void fatal PROTO((char *)); | ||
| 80 | + extern void Py_FatalError Py_PROTO((char *)); | ||
| 81 | + | ||
| 82 | + #define PyArg_GetInt(v, a) PyArg_Parse((v), "i", (a)) | ||
| 83 | + #define PyArg_NoArgs(v) PyArg_Parse(v, "") | ||
| 80 | 84 | ||
| 81 | 85 | #ifdef __cplusplus | |
| 82 | 86 | } | |
| 83 | 87 | #endif | |
| 88 | + | ||
| 89 | + #ifndef Py_USE_NEW_NAMES | ||
| 90 | + #include "rename2.h" | ||
| 91 | + #endif | ||
| 92 | + | ||
| 84 | 93 | #endif /* !Py_ALLOBJECTS_H */ | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -34,12 +34,12 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 34 | 34 | ||
| 35 | 35 | typedef BYTE *bitset; | |
| 36 | 36 | ||
| 37 | - bitset newbitset PROTO((int nbits)); | ||
| 38 | - void delbitset PROTO((bitset bs)); | ||
| 37 | + bitset newbitset Py_PROTO((int nbits)); | ||
| 38 | + void delbitset Py_PROTO((bitset bs)); | ||
| 39 | 39 | #define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0) | |
| 40 | - int addbit PROTO((bitset bs, int ibit)); /* Returns 0 if already set */ | ||
| 41 | - int samebitset PROTO((bitset bs1, bitset bs2, int nbits)); | ||
| 42 | - void mergebitset PROTO((bitset bs1, bitset bs2, int nbits)); | ||
| 40 | + int addbit Py_PROTO((bitset bs, int ibit)); /* Returns 0 if already set */ | ||
| 41 | + int samebitset Py_PROTO((bitset bs1, bitset bs2, int nbits)); | ||
| 42 | + void mergebitset Py_PROTO((bitset bs1, bitset bs2, int nbits)); | ||
| 43 | 43 | ||
| 44 | 44 | #define BITSPERBYTE (8*sizeof(BYTE)) | |
| 45 | 45 | #define NBYTES(nbits) (((nbits) + BITSPERBYTE - 1) / BITSPERBYTE) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,7 +30,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 30 | 30 | ||
| 31 | 31 | /* Built-in module interface */ | |
| 32 | 32 | ||
| 33 | - extern object *getbuiltindict PROTO(()); | ||
| 33 | + extern PyObject *getbuiltindict Py_PROTO(()); | ||
| 34 | 34 | ||
| 35 | 35 | #ifdef __cplusplus | |
| 36 | 36 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,19 +30,19 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 30 | 30 | ||
| 31 | 31 | /* Interface to random parts in ceval.c */ | |
| 32 | 32 | ||
| 33 | - object *call_object PROTO((object *, object *)); | ||
| 33 | + PyObject *PyEval_CallObject Py_PROTO((PyObject *, PyObject *)); | ||
| 34 | 34 | ||
| 35 | - object *getbuiltins PROTO((void)); | ||
| 36 | - object *getglobals PROTO((void)); | ||
| 37 | - object *getlocals PROTO((void)); | ||
| 38 | - object *getowner PROTO((void)); | ||
| 39 | - object *getframe PROTO((void)); | ||
| 40 | - int getrestricted PROTO((void)); | ||
| 35 | + PyObject *PyEval_GetBuiltins Py_PROTO((void)); | ||
| 36 | + PyObject *PyEval_GetGlobals Py_PROTO((void)); | ||
| 37 | + PyObject *PyEval_GetLocals Py_PROTO((void)); | ||
| 38 | + PyObject *PyEval_GetOwner Py_PROTO((void)); | ||
| 39 | + PyObject *PyEval_GetFrame Py_PROTO((void)); | ||
| 40 | + int PyEval_GetRestricted Py_PROTO((void)); | ||
| 41 | 41 | ||
| 42 | - void flushline PROTO((void)); | ||
| 42 | + void Py_FlushLine Py_PROTO((void)); | ||
| 43 | 43 | ||
| 44 | - int Py_AddPendingCall PROTO((int (*func) PROTO((ANY *)), ANY *arg)); | ||
| 45 | - int Py_MakePendingCalls PROTO((void)); | ||
| 44 | + int Py_AddPendingCall Py_PROTO((int (*func) Py_PROTO((ANY *)), ANY *arg)); | ||
| 45 | + int Py_MakePendingCalls Py_PROTO((void)); | ||
| 46 | 46 | ||
| 47 | 47 | ||
| 48 | 48 | /* Interface for threads. | |
@@ -52,62 +52,64 @@ int Py_MakePendingCalls PROTO((void)); | |||
| 52 | 52 | threads to run as follows: | |
| 53 | 53 | ||
| 54 | 54 | ...preparations here... | |
| 55 | - BGN_SAVE | ||
| 55 | + Py_BEGIN_ALLOW_THREADS | ||
| 56 | 56 | ...blocking system call here... | |
| 57 | - END_SAVE | ||
| 57 | + Py_END_ALLOW_THREADS | ||
| 58 | 58 | ...interpret result here... | |
| 59 | 59 | ||
| 60 | - The BGN_SAVE/END_SAVE pair expands to a {}-surrounded block. | ||
| 60 | + The Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS pair expands to a | ||
| 61 | + {}-surrounded block. | ||
| 61 | 62 | To leave the block in the middle (e.g., with return), you must insert | |
| 62 | 63 | a line containing RET_SAVE before the return, e.g. | |
| 63 | 64 | ||
| 64 | 65 | if (...premature_exit...) { | |
| 65 | - RET_SAVE | ||
| 66 | - err_errno(IOError); | ||
| 66 | + Py_BLOCK_THREADS | ||
| 67 | + PyErr_SetFromErrno(PyExc_IOError); | ||
| 67 | 68 | return NULL; | |
| 68 | 69 | } | |
| 69 | 70 | ||
| 70 | 71 | An alternative is: | |
| 71 | 72 | ||
| 72 | - RET_SAVE | ||
| 73 | + Py_BLOCK_THREADS | ||
| 73 | 74 | if (...premature_exit...) { | |
| 74 | - err_errno(IOError); | ||
| 75 | + PyErr_SetFromErrno(PyExc_IOError); | ||
| 75 | 76 | return NULL; | |
| 76 | 77 | } | |
| 77 | - RES_SAVE | ||
| 78 | + Py_UNBLOCK_THREADS | ||
| 78 | 79 | ||
| 79 | 80 | For convenience, that the value of 'errno' is restored across | |
| 80 | - END_SAVE and RET_SAVE. | ||
| 81 | + Py_END_ALLOW_THREADS and RET_SAVE. | ||
| 81 | 82 | ||
| 82 | - WARNING: NEVER NEST CALLS TO BGN_SAVE AND END_SAVE!!! | ||
| 83 | + WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND | ||
| 84 | + Py_END_ALLOW_THREADS!!! | ||
| 83 | 85 | ||
| 84 | - The function init_save_thread() should be called only from | ||
| 86 | + The function PyEval_InitThreads() should be called only from | ||
| 85 | 87 | initthread() in "threadmodule.c". | |
| 86 | 88 | ||
| 87 | 89 | Note that not yet all candidates have been converted to use this | |
| 88 | 90 | mechanism! | |
| 89 | 91 | */ | |
| 90 | 92 | ||
| 91 | - extern void init_save_thread PROTO((void)); | ||
| 92 | - extern object *save_thread PROTO((void)); | ||
| 93 | - extern void restore_thread PROTO((object *)); | ||
| 93 | + extern void PyEval_InitThreads Py_PROTO((void)); | ||
| 94 | + extern PyObject *PyEval_SaveThread Py_PROTO((void)); | ||
| 95 | + extern void PyEval_RestoreThread Py_PROTO((PyObject *)); | ||
| 94 | 96 | ||
| 95 | 97 | #ifdef WITH_THREAD | |
| 96 | 98 | ||
| 97 | - #define BGN_SAVE { \ | ||
| 98 | - object *_save; \ | ||
| 99 | - _save = save_thread(); | ||
| 100 | - #define RET_SAVE restore_thread(_save); | ||
| 101 | - #define RES_SAVE _save = save_thread(); | ||
| 102 | - #define END_SAVE restore_thread(_save); \ | ||
| 99 | + #define Py_BEGIN_ALLOW_THREADS { \ | ||
| 100 | + PyObject *_save; \ | ||
| 101 | + _save = PyEval_SaveThread(); | ||
| 102 | + #define Py_BLOCK_THREADS PyEval_RestoreThread(_save); | ||
| 103 | + #define Py_UNBLOCK_THREADS _save = PyEval_SaveThread(); | ||
| 104 | + #define Py_END_ALLOW_THREADS PyEval_RestoreThread(_save); \ | ||
| 103 | 105 | } | |
| 104 | 106 | ||
| 105 | 107 | #else /* !WITH_THREAD */ | |
| 106 | 108 | ||
| 107 | - #define BGN_SAVE { | ||
| 108 | - #define RET_SAVE | ||
| 109 | - #define RES_SAVE | ||
| 110 | - #define END_SAVE } | ||
| 109 | + #define Py_BEGIN_ALLOW_THREADS { | ||
| 110 | + #define Py_BLOCK_THREADS | ||
| 111 | + #define Py_UNBLOCK_THREADS | ||
| 112 | + #define Py_END_ALLOW_THREADS } | ||
| 111 | 113 | ||
| 112 | 114 | #endif /* !WITH_THREAD */ | |
| 113 | 115 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -32,16 +32,16 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 32 | 32 | ||
| 33 | 33 | typedef char *string; | |
| 34 | 34 | ||
| 35 | - #define mknewlongobject(x) newintobject(x) | ||
| 36 | - #define mknewshortobject(x) newintobject((long)x) | ||
| 37 | - #define mknewfloatobject(x) newfloatobject(x) | ||
| 38 | - #define mknewcharobject(ch) mkvalue("c", ch) | ||
| 39 | - | ||
| 40 | - extern int getiobjectarg PROTO((object *args, int nargs, int i, object **p_a)); | ||
| 41 | - extern int getilongarg PROTO((object *args, int nargs, int i, long *p_a)); | ||
| 42 | - extern int getishortarg PROTO((object *args, int nargs, int i, short *p_a)); | ||
| 43 | - extern int getifloatarg PROTO((object *args, int nargs, int i, float *p_a)); | ||
| 44 | - extern int getistringarg PROTO((object *args, int nargs, int i, string *p_a)); | ||
| 35 | + #define mknewlongobject(x) PyInt_FromLong(x) | ||
| 36 | + #define mknewshortobject(x) PyInt_FromLong((long)x) | ||
| 37 | + #define mknewfloatobject(x) PyFloat_FromDouble(x) | ||
| 38 | + #define mknewcharobject(ch) Py_BuildValue("c", ch) | ||
| 39 | + | ||
| 40 | + extern int PyArg_GetObject Py_PROTO((PyObject *args, int nargs, int i, PyObject **p_a)); | ||
| 41 | + extern int PyArg_GetLong Py_PROTO((PyObject *args, int nargs, int i, long *p_a)); | ||
| 42 | + extern int PyArg_GetShort Py_PROTO((PyObject *args, int nargs, int i, short *p_a)); | ||
| 43 | + extern int PyArg_GetFloat Py_PROTO((PyObject *args, int nargs, int i, float *p_a)); | ||
| 44 | + extern int PyArg_GetString Py_PROTO((PyObject *args, int nargs, int i, string *p_a)); | ||
| 45 | 45 | ||
| 46 | 46 | #ifdef __cplusplus | |
| 47 | 47 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,40 +39,42 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 39 | 39 | /* Revealing some structures (not for general use) */ | |
| 40 | 40 | ||
| 41 | 41 | typedef struct { | |
| 42 | - OB_HEAD | ||
| 43 | - object *cl_bases; /* A tuple of class objects */ | ||
| 44 | - object *cl_dict; /* A dictionary */ | ||
| 45 | - object *cl_name; /* A string */ | ||
| 42 | + PyObject_HEAD | ||
| 43 | + PyObject *cl_bases; /* A tuple of class objects */ | ||
| 44 | + PyObject *cl_dict; /* A dictionary */ | ||
| 45 | + PyObject *cl_name; /* A string */ | ||
| 46 | 46 | /* The following three are functions or NULL */ | |
| 47 | - object *cl_getattr; | ||
| 48 | - object *cl_setattr; | ||
| 49 | - object *cl_delattr; | ||
| 50 | - } classobject; | ||
| 47 | + PyObject *cl_getattr; | ||
| 48 | + PyObject *cl_setattr; | ||
| 49 | + PyObject *cl_delattr; | ||
| 50 | + } PyClassObject; | ||
| 51 | 51 | ||
| 52 | 52 | typedef struct { | |
| 53 | - OB_HEAD | ||
| 54 | - classobject *in_class; /* The class object */ | ||
| 55 | - object *in_dict; /* A dictionary */ | ||
| 56 | - } instanceobject; | ||
| 53 | + PyObject_HEAD | ||
| 54 | + PyClassObject *in_class; /* The class object */ | ||
| 55 | + PyObject *in_dict; /* A dictionary */ | ||
| 56 | + } PyInstanceObject; | ||
| 57 | 57 | ||
| 58 | - extern DL_IMPORT typeobject Classtype, Instancetype, Instancemethodtype; | ||
| 58 | + extern DL_IMPORT PyTypeObject PyClass_Type, PyInstance_Type, PyMethod_Type; | ||
| 59 | 59 | ||
| 60 | - #define is_classobject(op) ((op)->ob_type == &Classtype) | ||
| 61 | - #define is_instanceobject(op) ((op)->ob_type == &Instancetype) | ||
| 62 | - #define is_instancemethodobject(op) ((op)->ob_type == &Instancemethodtype) | ||
| 60 | + #define PyClass_Check(op) ((op)->ob_type == &PyClass_Type) | ||
| 61 | + #define PyInstance_Check(op) ((op)->ob_type == &PyInstance_Type) | ||
| 62 | + #define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type) | ||
| 63 | 63 | ||
| 64 | - extern object *newclassobject PROTO((object *, object *, object *)); | ||
| 65 | - extern object *newinstanceobject PROTO((object *, object *)); | ||
| 66 | - extern object *newinstancemethodobject PROTO((object *, object *, object *)); | ||
| 64 | + extern PyObject *PyClass_New Py_PROTO((PyObject *, PyObject *, PyObject *)); | ||
| 65 | + extern PyObject *PyInstance_New Py_PROTO((PyObject *, PyObject *)); | ||
| 66 | + extern PyObject *PyMethod_New Py_PROTO((PyObject *, PyObject *, PyObject *)); | ||
| 67 | 67 | ||
| 68 | - extern object *instancemethodgetfunc PROTO((object *)); | ||
| 69 | - extern object *instancemethodgetself PROTO((object *)); | ||
| 70 | - extern object *instancemethodgetclass PROTO((object *)); | ||
| 68 | + extern PyObject *PyMethod_Function Py_PROTO((PyObject *)); | ||
| 69 | + extern PyObject *PyMethod_Self Py_PROTO((PyObject *)); | ||
| 70 | + extern PyObject *PyMethod_Class Py_PROTO((PyObject *)); | ||
| 71 | 71 | ||
| 72 | - extern int issubclass PROTO((object *, object *)); | ||
| 72 | + extern int PyClass_IsSubclass Py_PROTO((PyObject *, PyObject *)); | ||
| 73 | 73 | ||
| 74 | - extern object *instancebinop PROTO((object *, object *, char *, char *, | ||
| 75 | - object * (*) PROTO((object *, object *)) )); | ||
| 74 | + extern PyObject *instancebinop | ||
| 75 | + Py_PROTO((PyObject *, PyObject *, | ||
| 76 | + char *, char *, | ||
| 77 | + PyObject * (*) Py_PROTO((PyObject *, PyObject *)) )); | ||
| 76 | 78 | ||
| 77 | 79 | #ifdef __cplusplus | |
| 78 | 80 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,24 +39,24 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 39 | 39 | - the name of the object for which it was compiled. */ | |
| 40 | 40 | ||
| 41 | 41 | typedef struct { | |
| 42 | - OB_HEAD | ||
| 43 | - stringobject *co_code; /* instruction opcodes */ | ||
| 44 | - object *co_consts; /* list of immutable constant objects */ | ||
| 45 | - object *co_names; /* list of stringobjects */ | ||
| 46 | - object *co_filename; /* string */ | ||
| 47 | - object *co_name; /* string */ | ||
| 48 | - } codeobject; | ||
| 42 | + PyObject_HEAD | ||
| 43 | + PyStringObject *co_code; /* instruction opcodes */ | ||
| 44 | + PyObject *co_consts; /* list of immutable constant objects */ | ||
| 45 | + PyObject *co_names; /* list of stringobjects */ | ||
| 46 | + PyObject *co_filename; /* string */ | ||
| 47 | + PyObject *co_name; /* string */ | ||
| 48 | + } PyCodeObject; | ||
| 49 | 49 | ||
| 50 | - extern DL_IMPORT typeobject Codetype; | ||
| 50 | + extern DL_IMPORT PyTypeObject PyCode_Type; | ||
| 51 | 51 | ||
| 52 | - #define is_codeobject(op) ((op)->ob_type == &Codetype) | ||
| 52 | + #define PyCode_Check(op) ((op)->ob_type == &PyCode_Type) | ||
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | 55 | /* Public interface */ | |
| 56 | 56 | struct _node; /* Declare the existence of this type */ | |
| 57 | - codeobject *compile PROTO((struct _node *, char *)); | ||
| 58 | - codeobject *newcodeobject | ||
| 59 | - PROTO((object *, object *, object *, object *, object *)); | ||
| 57 | + PyCodeObject *PyNode_Compile Py_PROTO((struct _node *, char *)); | ||
| 58 | + PyCodeObject *PyCode_New | ||
| 59 | + Py_PROTO((PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)); | ||
| 60 | 60 | ||
| 61 | 61 | #ifdef __cplusplus | |
| 62 | 62 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -32,19 +32,19 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| 32 | 32 | ||
| 33 | 33 | #include "mappingobject.h" | |
| 34 | 34 | ||
| 35 | - #define is_dictobject(op) is_mappingobject(op) | ||
| 35 | + #define PyDict_Check(op) is_mappingobject(op) | ||
| 36 | 36 | ||
| 37 | - #define newdictobject newmappingobject | ||
| 37 | + #define newdictobject PyDict_New | ||
| 38 | 38 | ||
| 39 | - extern object *dictlookup PROTO((object *dp, char *key)); | ||
| 40 | - extern int dictinsert PROTO((object *dp, char *key, object *item)); | ||
| 41 | - extern int dictremove PROTO((object *dp, char *key)); | ||
| 39 | + extern PyObject *PyDict_GetItemString Py_PROTO((PyObject *dp, char *key)); | ||
| 40 | + extern int PyDict_SetItemString Py_PROTO((PyObject *dp, char *key, PyObject *item)); | ||
| 41 | + extern int PyDict_DelItemString Py_PROTO((PyObject *dp, char *key)); | ||
| 42 | 42 | ||
| 43 | - #define getdictkeys getmappingkeys | ||
| 43 | + #define getdictkeys PyDict_Keys | ||
| 44 | 44 | ||
| 45 | - #define dict2lookup mappinglookup | ||
| 46 | - #define dict2insert mappinginsert | ||
| 47 | - #define dict2remove mappingremove | ||
| 45 | + #define dict2lookup PyDict_GetItem | ||
| 46 | + #define dict2insert PyDict_SetItem | ||
| 47 | + #define dict2remove PyDict_DelItem | ||
| 48 | 48 | ||
| 49 | 49 | #ifdef __cplusplus | |
| 50 | 50 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments