Issue #19512: Add _PySys_GetObjectId() and _PySys_SetObjectId() functions

This commit is contained in:
Victor Stinner 2013-11-06 22:36:40 +01:00
parent b44562b6b9
commit d67bd45537
2 changed files with 28 additions and 0 deletions

View File

@ -8,7 +8,10 @@ extern "C" {
#endif #endif
PyAPI_FUNC(PyObject *) PySys_GetObject(const char *); PyAPI_FUNC(PyObject *) PySys_GetObject(const char *);
PyAPI_FUNC(PyObject *) _PySys_GetObjectId(_Py_Identifier *key);
PyAPI_FUNC(int) PySys_SetObject(const char *, PyObject *); PyAPI_FUNC(int) PySys_SetObject(const char *, PyObject *);
PyAPI_FUNC(int) _PySys_SetObjectId(_Py_Identifier *key, PyObject *);
PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **); PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **);
PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int); PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int);
PyAPI_FUNC(void) PySys_SetPath(const wchar_t *); PyAPI_FUNC(void) PySys_SetPath(const wchar_t *);

View File

@ -41,6 +41,16 @@ extern const char *PyWin_DLLVersionString;
#include <langinfo.h> #include <langinfo.h>
#endif #endif
PyObject *
_PySys_GetObjectId(_Py_Identifier *key)
{
PyThreadState *tstate = PyThreadState_GET();
PyObject *sd = tstate->interp->sysdict;
if (sd == NULL)
return NULL;
return _PyDict_GetItemId(sd, key);
}
PyObject * PyObject *
PySys_GetObject(const char *name) PySys_GetObject(const char *name)
{ {
@ -51,6 +61,21 @@ PySys_GetObject(const char *name)
return PyDict_GetItemString(sd, name); return PyDict_GetItemString(sd, name);
} }
int
_PySys_SetObjectId(_Py_Identifier *key, PyObject *v)
{
PyThreadState *tstate = PyThreadState_GET();
PyObject *sd = tstate->interp->sysdict;
if (v == NULL) {
if (_PyDict_GetItemId(sd, key) == NULL)
return 0;
else
return _PyDict_DelItemId(sd, key);
}
else
return _PyDict_SetItemId(sd, key, v);
}
int int
PySys_SetObject(const char *name, PyObject *v) PySys_SetObject(const char *name, PyObject *v)
{ {