mirror of
https://github.com/johndoe6345789/typthon.git
synced 2026-04-25 14:15:29 +00:00
Fixed several macros and constants that should not have been renamed: - _Py_CAST, _Py_NULL, _Py_RVALUE (internal utility macros) - Py_UNUSED (unused parameter macro) - Py_EQ, Py_NE, Py_LT, Py_LE, Py_GT, Py_GE (comparison constants) - Py_RETURN_* macros (NONE, TRUE, FALSE, NOTIMPLEMENTED, RICHCOMPARE) - Py_READONLY, Py_ULL, Py_CONTEXT_SWITCHED - TyGC_Head in generated clinic files Build is still in progress with some remaining issues to resolve. Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
144 lines
3.5 KiB
C
144 lines
3.5 KiB
C
#include "parts.h"
|
|
#include "util.h"
|
|
|
|
|
|
static TyObject *
|
|
function_get_code(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *code = TyFunction_GetCode(func);
|
|
if (code != NULL) {
|
|
return Ty_NewRef(code);
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_get_globals(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *globals = TyFunction_GetGlobals(func);
|
|
if (globals != NULL) {
|
|
return Ty_NewRef(globals);
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_get_module(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *module = TyFunction_GetModule(func);
|
|
if (module != NULL) {
|
|
return Ty_NewRef(module);
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_get_defaults(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *defaults = TyFunction_GetDefaults(func);
|
|
if (defaults != NULL) {
|
|
return Ty_NewRef(defaults);
|
|
} else if (TyErr_Occurred()) {
|
|
return NULL;
|
|
} else {
|
|
Py_RETURN_NONE; // This can happen when `defaults` are set to `None`
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_set_defaults(TyObject *self, TyObject *args)
|
|
{
|
|
TyObject *func = NULL, *defaults = NULL;
|
|
if (!TyArg_ParseTuple(args, "OO", &func, &defaults)) {
|
|
return NULL;
|
|
}
|
|
int result = TyFunction_SetDefaults(func, defaults);
|
|
if (result == -1)
|
|
return NULL;
|
|
Py_RETURN_NONE;
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_get_kw_defaults(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *defaults = TyFunction_GetKwDefaults(func);
|
|
if (defaults != NULL) {
|
|
return Ty_NewRef(defaults);
|
|
} else if (TyErr_Occurred()) {
|
|
return NULL;
|
|
} else {
|
|
Py_RETURN_NONE; // This can happen when `kwdefaults` are set to `None`
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_set_kw_defaults(TyObject *self, TyObject *args)
|
|
{
|
|
TyObject *func = NULL, *defaults = NULL;
|
|
if (!TyArg_ParseTuple(args, "OO", &func, &defaults)) {
|
|
return NULL;
|
|
}
|
|
int result = TyFunction_SetKwDefaults(func, defaults);
|
|
if (result == -1)
|
|
return NULL;
|
|
Py_RETURN_NONE;
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_get_closure(TyObject *self, TyObject *func)
|
|
{
|
|
TyObject *closure = TyFunction_GetClosure(func);
|
|
if (closure != NULL) {
|
|
return Ty_NewRef(closure);
|
|
} else if (TyErr_Occurred()) {
|
|
return NULL;
|
|
} else {
|
|
Py_RETURN_NONE; // This can happen when `closure` is set to `None`
|
|
}
|
|
}
|
|
|
|
|
|
static TyObject *
|
|
function_set_closure(TyObject *self, TyObject *args)
|
|
{
|
|
TyObject *func = NULL, *closure = NULL;
|
|
if (!TyArg_ParseTuple(args, "OO", &func, &closure)) {
|
|
return NULL;
|
|
}
|
|
int result = TyFunction_SetClosure(func, closure);
|
|
if (result == -1) {
|
|
return NULL;
|
|
}
|
|
Py_RETURN_NONE;
|
|
}
|
|
|
|
|
|
static TyMethodDef test_methods[] = {
|
|
{"function_get_code", function_get_code, METH_O, NULL},
|
|
{"function_get_globals", function_get_globals, METH_O, NULL},
|
|
{"function_get_module", function_get_module, METH_O, NULL},
|
|
{"function_get_defaults", function_get_defaults, METH_O, NULL},
|
|
{"function_set_defaults", function_set_defaults, METH_VARARGS, NULL},
|
|
{"function_get_kw_defaults", function_get_kw_defaults, METH_O, NULL},
|
|
{"function_set_kw_defaults", function_set_kw_defaults, METH_VARARGS, NULL},
|
|
{"function_get_closure", function_get_closure, METH_O, NULL},
|
|
{"function_set_closure", function_set_closure, METH_VARARGS, NULL},
|
|
{NULL},
|
|
};
|
|
|
|
int
|
|
_PyTestCapi_Init_Function(TyObject *m)
|
|
{
|
|
return TyModule_AddFunctions(m, test_methods);
|
|
}
|