11// SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22// SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
33
4+ // Please refer to the NVIDIA end user license agreement (EULA) associated
5+ // with this source code for terms and conditions that govern your use of
6+ // this software. Any use, reproduction, disclosure, or distribution of
7+ // this software and related documentation outside the terms of the EULA
8+ // is strictly prohibited.
9+
410#include < Python.h>
5- #include " param_packer.h"
611
712#include < map>
813#include < functional>
914#include < stdexcept>
1015#include < string>
1116
12- PyObject* enum_module = nullptr ;
13- PyTypeObject* enum_Enum = nullptr ;
14-
15- PyObject* ctypes_module = nullptr ;
16- PyObject* ctypes_addressof = nullptr ;
17- PyObject* addressof_param_tuple = nullptr ;
17+ static PyObject* ctypes_module = nullptr ;
1818
19- PyTypeObject* ctypes_c_char = nullptr ;
20- PyTypeObject* ctypes_c_bool = nullptr ;
21- PyTypeObject* ctypes_c_wchar = nullptr ;
22- PyTypeObject* ctypes_c_byte = nullptr ;
23- PyTypeObject* ctypes_c_ubyte = nullptr ;
24- PyTypeObject* ctypes_c_short = nullptr ;
25- PyTypeObject* ctypes_c_ushort = nullptr ;
26- PyTypeObject* ctypes_c_int = nullptr ;
27- PyTypeObject* ctypes_c_uint = nullptr ;
28- PyTypeObject* ctypes_c_long = nullptr ;
29- PyTypeObject* ctypes_c_ulong = nullptr ;
30- PyTypeObject* ctypes_c_longlong = nullptr ;
31- PyTypeObject* ctypes_c_ulonglong = nullptr ;
32- PyTypeObject* ctypes_c_size_t = nullptr ;
33- PyTypeObject* ctypes_c_float = nullptr ;
34- PyTypeObject* ctypes_c_double = nullptr ;
35- PyTypeObject* ctypes_c_void_p = nullptr ;
19+ static PyTypeObject* ctypes_c_char = nullptr ;
20+ static PyTypeObject* ctypes_c_bool = nullptr ;
21+ static PyTypeObject* ctypes_c_wchar = nullptr ;
22+ static PyTypeObject* ctypes_c_byte = nullptr ;
23+ static PyTypeObject* ctypes_c_ubyte = nullptr ;
24+ static PyTypeObject* ctypes_c_short = nullptr ;
25+ static PyTypeObject* ctypes_c_ushort = nullptr ;
26+ static PyTypeObject* ctypes_c_int = nullptr ;
27+ static PyTypeObject* ctypes_c_uint = nullptr ;
28+ static PyTypeObject* ctypes_c_long = nullptr ;
29+ static PyTypeObject* ctypes_c_ulong = nullptr ;
30+ static PyTypeObject* ctypes_c_longlong = nullptr ;
31+ static PyTypeObject* ctypes_c_ulonglong = nullptr ;
32+ static PyTypeObject* ctypes_c_size_t = nullptr ;
33+ static PyTypeObject* ctypes_c_float = nullptr ;
34+ static PyTypeObject* ctypes_c_double = nullptr ;
35+ static PyTypeObject* ctypes_c_void_p = nullptr ;
3636
37- PyTypeObject* ctypes_c_ssize_t = nullptr ;
38- PyTypeObject* ctypes_c_longdouble = nullptr ;
39- PyTypeObject* ctypes_c_char_p = nullptr ;
40- PyTypeObject* ctypes_c_wchar_p = nullptr ;
41- PyTypeObject* ctypes_c_structure = nullptr ;
42-
43- void fetch_ctypes ()
37+ static void fetch_ctypes ()
4438{
4539 ctypes_module = PyImport_ImportModule (" ctypes" );
4640 if (ctypes_module == nullptr )
@@ -50,7 +44,6 @@ void fetch_ctypes()
5044 if (ctypes_dict == nullptr )
5145 throw std::runtime_error (std::string (" FAILURE @ " ) + std::string (__FILE__) + " : " + std::to_string (__LINE__));
5246 // supportedtypes
53- ctypes_c_int = (PyTypeObject*) PyDict_GetItemString (ctypes_dict, " c_int" );
5447 ctypes_c_char = (PyTypeObject*) PyDict_GetItemString (ctypes_dict, " c_char" );
5548 ctypes_c_bool = (PyTypeObject*) PyDict_GetItemString (ctypes_dict, " c_bool" );
5649 ctypes_c_wchar = (PyTypeObject*) PyDict_GetItemString (ctypes_dict, " c_wchar" );
@@ -72,9 +65,9 @@ void fetch_ctypes()
7265
7366
7467// (target type, source type)
75- std::map<std::pair<PyTypeObject*,PyTypeObject*>, std::function<int (void *, PyObject*)>> m_feeders;
68+ static std::map<std::pair<PyTypeObject*,PyTypeObject*>, std::function<int (void *, PyObject*)>> m_feeders;
7669
77- void populate_feeders (PyTypeObject* target_t , PyTypeObject* source_t )
70+ static void populate_feeders (PyTypeObject* target_t , PyTypeObject* source_t )
7871{
7972 if (target_t == ctypes_c_int)
8073 {
@@ -140,7 +133,7 @@ void populate_feeders(PyTypeObject* target_t, PyTypeObject* source_t)
140133 }
141134}
142135
143- int feed (void * ptr, PyObject* value, PyObject* type)
136+ static int feed (void * ptr, PyObject* value, PyObject* type)
144137{
145138 PyTypeObject* pto = (PyTypeObject*)type;
146139 if (ctypes_c_int == nullptr )
0 commit comments