#pragma once

#define PY_SSIZE_T_CLEAN
#include <Python.h>

#include <ittnotify.h>

#include "extensions/python.hpp"


namespace pyitt
{

struct StringHandle
{
	PyObject_HEAD
	PyObject* str;
	__itt_string_handle* handle;
};

extern PyTypeObject StringHandleType;

inline StringHandle* string_handle_obj(PyObject* self);
StringHandle* string_handle_check(PyObject* self);
int exec_string_handle(PyObject* module);


/* Implementation of inline functions */
StringHandle* string_handle_obj(PyObject* self)
{
	return pyext::pyobject_cast<StringHandle>(self);
}

} // namespace pyitt