3#ifndef __NUITKA_BUILTINS_H__
4#define __NUITKA_BUILTINS_H__
7extern PyDictObject *dict_builtin;
9#include "nuitka/calling.h"
11NUITKA_MAY_BE_UNUSED
static PyObject *LOOKUP_BUILTIN(PyObject *name) {
12 CHECK_OBJECT(dict_builtin);
14 assert(Nuitka_String_CheckExact(name));
16 PyObject *result = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)name);
19 if (unlikely(result == NULL)) {
30NUITKA_MAY_BE_UNUSED
static PyObject *LOOKUP_BUILTIN_STR(
char const *name) {
31 CHECK_OBJECT(dict_builtin);
33 PyObject *result = PyDict_GetItemString((PyObject *)dict_builtin, name);
36 if (unlikely(result == NULL)) {
47extern void _initBuiltinModule(
void);
49#define NUITKA_DECLARE_BUILTIN(name) extern PyObject *_python_original_builtin_value_##name;
50#define NUITKA_DEFINE_BUILTIN(name) PyObject *_python_original_builtin_value_##name = NULL;
51#define NUITKA_ASSIGN_BUILTIN(name) \
52 if (_python_original_builtin_value_##name == NULL) \
53 _python_original_builtin_value_##name = LOOKUP_BUILTIN_STR(#name);
54#define NUITKA_UPDATE_BUILTIN(name, value) _python_original_builtin_value_##name = value;
55#define NUITKA_ACCESS_BUILTIN(name) (_python_original_builtin_value_##name)
57#if !_NUITKA_MODULE_MODE
59NUITKA_DECLARE_BUILTIN(type);
60NUITKA_DECLARE_BUILTIN(len);
61NUITKA_DECLARE_BUILTIN(range);
62NUITKA_DECLARE_BUILTIN(repr);
63NUITKA_DECLARE_BUILTIN(
int);
64NUITKA_DECLARE_BUILTIN(iter);
65#if PYTHON_VERSION < 0x300
66NUITKA_DECLARE_BUILTIN(
long);
69extern void _initBuiltinOriginalValues(
void);
75NUITKA_MAY_BE_UNUSED
static PyObject *Nuitka_SysGetObject(
char const *name) {
return PySys_GetObject((
char *)name); }
77NUITKA_MAY_BE_UNUSED
static void Nuitka_SysSetObject(
char const *name, PyObject *value) {
79 PySys_SetObject((
char *)name, value);