blob: 41c8c3de326fa0c1dd037ad76046d1a43167ea74 [file] [log] [blame] [edit]
#include "task.hpp"
#include <ittnotify.h>
#include "domain.hpp"
#include "id.hpp"
#include "string_handle.hpp"
namespace ittapi
{
PyObject* task_begin(PyObject* self, PyObject* args)
{
PyObject* domain = nullptr;
PyObject* name_string_handle = nullptr;
PyObject* task_id = nullptr;
PyObject* parent_id = nullptr;
if (!PyArg_ParseTuple(args, "OO|OO", &domain, &name_string_handle, &task_id, &parent_id))
{
return nullptr;
}
Domain* domain_obj = domain_check(domain);
if (domain_obj == nullptr)
{
return nullptr;
}
StringHandle* name_string_handle_obj = string_handle_check(name_string_handle);
if (name_string_handle_obj == nullptr)
{
return nullptr;
}
__itt_id id = __itt_null;
if (task_id && task_id != Py_None)
{
Id* task_id_obj = id_check(task_id);
if (task_id_obj == nullptr)
{
return nullptr;
}
id = task_id_obj->id;
}
__itt_id p_id = __itt_null;
if (parent_id && parent_id != Py_None)
{
Id* parent_id_obj = id_check(parent_id);
if (parent_id_obj == nullptr)
{
return nullptr;
}
p_id = parent_id_obj->id;
}
__itt_task_begin(domain_obj->handle, id, p_id, name_string_handle_obj->handle);
Py_RETURN_NONE;
}
PyObject* task_end(PyObject* self, PyObject* args)
{
PyObject* domain = nullptr;
if (!PyArg_ParseTuple(args, "O", &domain))
{
return nullptr;
}
Domain* domain_obj = domain_check(domain);
if (domain_obj == nullptr)
{
return nullptr;
}
__itt_task_end(domain_obj->handle);
Py_RETURN_NONE;
}
PyObject* task_begin_overlapped(PyObject* self, PyObject* args)
{
PyObject* domain = nullptr;
PyObject* name_string_handle = nullptr;
PyObject* task_id = nullptr;
PyObject* parent_id = nullptr;
if (!PyArg_ParseTuple(args, "OOO|O", &domain, &name_string_handle, &task_id, &parent_id))
{
return nullptr;
}
Domain* domain_obj = domain_check(domain);
if (domain_obj == nullptr)
{
return nullptr;
}
StringHandle* name_string_handle_obj = string_handle_check(name_string_handle);
if (name_string_handle_obj == nullptr)
{
return nullptr;
}
Id* task_id_obj = id_check(task_id);
if (task_id_obj == nullptr)
{
return nullptr;
}
__itt_id p_id = __itt_null;
if (parent_id && parent_id != Py_None)
{
Id* parent_id_obj = id_check(parent_id);
if (parent_id_obj == nullptr)
{
return nullptr;
}
p_id = parent_id_obj->id;
}
__itt_task_begin_overlapped(domain_obj->handle,
task_id_obj->id,
p_id,
name_string_handle_obj->handle);
Py_RETURN_NONE;
}
PyObject* task_end_overlapped(PyObject* self, PyObject* args)
{
PyObject* domain = nullptr;
PyObject* task_id = nullptr;
if (!PyArg_ParseTuple(args, "OO", &domain, &task_id))
{
return nullptr;
}
Domain* domain_obj = domain_check(domain);
if (domain_obj == nullptr)
{
return nullptr;
}
Id* task_id_obj = id_check(task_id);
if (task_id_obj == nullptr)
{
return nullptr;
}
__itt_task_end_overlapped(domain_obj->handle, task_id_obj->id);
Py_RETURN_NONE;
}
} // namespace ittapi