blob: 37a7c799473a95cad7206ca50d10a99af2e64dd5 [file]
"""
event.py - Python module wrapper for ITT Event API
"""
from functools import partial as _partial
from ittapi.native import Event as _Event
from .region import _CallSite, _NamedRegion
class Event(_NamedRegion):
"""
A class that represents Event.
"""
def __init__(self, region=None):
"""
Creates the instance of the class that represents ITT Event.
:param region: a name of the event or a callable object (e.g. function) to wrap. If the callable object is
passed the name of this object is used as a name for the event.
"""
self._event = None
super().__init__(region, _partial(Event.__deferred_event_creation, self))
def __deferred_event_creation(self, name) -> None:
"""Performs deferred creation of native Event."""
self._event = _Event(name)
def begin(self) -> None:
"""Marks the beginning of an event region."""
self._event.begin()
def end(self) -> None:
"""Marks the end of an event region."""
self._event.end()
def event(region=None) -> Event:
"""
Creates an Event instance.
:param region: a name of the event or a callable object (e.g. function) to wrap. If the callable object is
passed the name of this object is used as a name for the event.
:return: an Event instance
"""
region = _CallSite(_CallSite.CallerFrame) if region is None else region
return Event(region)