| #include "collection_control.hpp" |
| |
| #include <ittnotify.h> |
| |
| #include "string_handle.hpp" |
| |
| |
| namespace ittapi |
| { |
| |
| PyObject* thread_set_name(PyObject* self, PyObject* name) |
| { |
| if (Py_TYPE(name) == &StringHandleType) |
| { |
| name = string_handle_obj(name)->str; |
| } |
| else if (!PyUnicode_Check(name)) |
| { |
| PyErr_SetString(PyExc_TypeError, "The passed thread name is not a valid instance of str or StringHandle."); |
| return nullptr; |
| } |
| |
| #if defined(_WIN32) |
| wchar_t* name_wstr = PyUnicode_AsWideCharString(name, nullptr); |
| if (name_wstr == nullptr) |
| { |
| return nullptr; |
| } |
| |
| __itt_thread_set_nameW(name_wstr); |
| PyMem_Free(name_wstr); |
| #else |
| const char* name_str = PyUnicode_AsUTF8(name); |
| if (name_str == nullptr) |
| { |
| return nullptr; |
| } |
| |
| __itt_thread_set_name(name_str); |
| #endif |
| |
| Py_RETURN_NONE; |
| } |
| |
| } // namespace ittapi |