Cleanup: reduce number of calls to PyUnicode_FromString
This commit is contained in:
parent
9810942adf
commit
3af7ed0e8e
|
@ -1739,21 +1739,30 @@ PyDoc_STRVAR(BPy_IDArray_get_typecode_doc,
|
|||
"The type of the data in the array {'f': float, 'd': double, 'i': int, 'b': bool}.");
|
||||
static PyObject *BPy_IDArray_get_typecode(BPy_IDArray *self, void * /*closure*/)
|
||||
{
|
||||
const char *typecode;
|
||||
switch (self->prop->subtype) {
|
||||
case IDP_FLOAT:
|
||||
return PyUnicode_FromString("f");
|
||||
typecode = "f";
|
||||
break;
|
||||
case IDP_DOUBLE:
|
||||
return PyUnicode_FromString("d");
|
||||
typecode = "d";
|
||||
break;
|
||||
case IDP_INT:
|
||||
return PyUnicode_FromString("i");
|
||||
typecode = "i";
|
||||
break;
|
||||
case IDP_BOOLEAN:
|
||||
return PyUnicode_FromString("b");
|
||||
typecode = "b";
|
||||
break;
|
||||
default: {
|
||||
PyErr_Format(PyExc_RuntimeError,
|
||||
"%s: invalid/corrupt array type '%d'!",
|
||||
__func__,
|
||||
self->prop->subtype);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
PyErr_Format(
|
||||
PyExc_RuntimeError, "%s: invalid/corrupt array type '%d'!", __func__, self->prop->subtype);
|
||||
|
||||
return nullptr;
|
||||
return PyUnicode_FromString(typecode);
|
||||
}
|
||||
|
||||
static PyGetSetDef BPy_IDArray_getseters[] = {
|
||||
|
|
|
@ -37,16 +37,9 @@
|
|||
|
||||
static bool args_contain_key(PyObject *kwargs, const char *name)
|
||||
{
|
||||
if (kwargs == nullptr) {
|
||||
/* When a function gets called without any kwargs, Python just passes nullptr instead.
|
||||
* PyDict_Contains() is not nullptr-safe, though. */
|
||||
return false;
|
||||
}
|
||||
|
||||
PyObject *py_key = PyUnicode_FromString(name);
|
||||
const bool result = PyDict_Contains(kwargs, py_key) == 1;
|
||||
Py_DECREF(py_key);
|
||||
return result;
|
||||
/* When a function gets called without any kwargs, */
|
||||
/* Python just passes nullptr instead. #PyDict_GetItemString() is not null-safe, though. */
|
||||
return kwargs && PyDict_GetItemString(kwargs, name) != nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -69,22 +69,26 @@ PyDoc_STRVAR(
|
|||
" :rtype: str\n");
|
||||
static PyObject *pygpu_platform_device_type_get(PyObject * /*self*/)
|
||||
{
|
||||
const char *device;
|
||||
if (GPU_type_matches(GPU_DEVICE_APPLE, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
return PyUnicode_FromString("APPLE");
|
||||
device = "APPLE";
|
||||
}
|
||||
if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
return PyUnicode_FromString("NVIDIA");
|
||||
else if (GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
device = "NVIDIA";
|
||||
}
|
||||
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
return PyUnicode_FromString("AMD");
|
||||
else if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
device = "AMD";
|
||||
}
|
||||
if (GPU_type_matches(GPU_DEVICE_INTEL | GPU_DEVICE_INTEL_UHD, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
return PyUnicode_FromString("INTEL");
|
||||
else if (GPU_type_matches(GPU_DEVICE_INTEL | GPU_DEVICE_INTEL_UHD, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
device = "INTEL";
|
||||
}
|
||||
if (GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
return PyUnicode_FromString("SOFTWARE");
|
||||
else if (GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_ANY, GPU_DRIVER_ANY)) {
|
||||
device = "SOFTWARE";
|
||||
}
|
||||
return PyUnicode_FromString("UNKNOWN");
|
||||
else {
|
||||
device = "UNKNOWN";
|
||||
}
|
||||
return PyUnicode_FromString(device);
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(pygpu_platform_backend_type_get_doc,
|
||||
|
@ -96,19 +100,28 @@ PyDoc_STRVAR(pygpu_platform_backend_type_get_doc,
|
|||
" :rtype: str\n");
|
||||
static PyObject *pygpu_platform_backend_type_get(PyObject * /*self*/)
|
||||
{
|
||||
const char *backend = "UNKNOWN";
|
||||
switch (GPU_backend_get_type()) {
|
||||
case GPU_BACKEND_VULKAN:
|
||||
return PyUnicode_FromString("VULKAN");
|
||||
case GPU_BACKEND_METAL:
|
||||
return PyUnicode_FromString("METAL");
|
||||
case GPU_BACKEND_NONE:
|
||||
return PyUnicode_FromString("NONE");
|
||||
case GPU_BACKEND_OPENGL:
|
||||
return PyUnicode_FromString("OPENGL");
|
||||
case GPU_BACKEND_VULKAN: {
|
||||
backend = "VULKAN";
|
||||
break;
|
||||
}
|
||||
case GPU_BACKEND_METAL: {
|
||||
backend = "METAL";
|
||||
break;
|
||||
}
|
||||
case GPU_BACKEND_NONE: {
|
||||
backend = "NONE";
|
||||
break;
|
||||
}
|
||||
case GPU_BACKEND_OPENGL: {
|
||||
backend = "OPENGL";
|
||||
break;
|
||||
}
|
||||
case GPU_BACKEND_ANY:
|
||||
break;
|
||||
}
|
||||
return PyUnicode_FromString("UNKNOWN");
|
||||
return PyUnicode_FromString(backend);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
|
Loading…
Reference in New Issue