ittapi-sys 0.5.0

Rust bindings for ittapi
Documentation
# ittapi.compat

The module provides API of an earlier version of Python bindings: ([itt-python](https://github.com/oleksandr-pavlyk/itt-python/)). The idea is to allow users to effortlessly migrate to the `ittapi` package without losing any existing functionality. The module exposes the following ITT APIs:
 - Collection Control API
 - Domain API
 - Task API
 - Process Trace Region API


## Usage

### ittapi.compat module

#### Collection Control API
 
The `pause` and `resume` enables to focus the collection on a specific section of code while profiling, and start the application run with collection paused. 

The `detach` detaches the data collection. Application continues to work but no data is collected while profiling. 

```python
import ittapi.compat as itt
# ... uninteresting code
itt.resume()
# ... very interesting code
itt.pause()
# ... boring stuff again
itt.resume()
# ... interesting code
itt.detach()
# ... uninteresting code like writing output
```

If the above code snipped is profiled with VTune or others, the execution begins with collection paused and only the interesting part of the code is profiled. 

#### Domain API

A domain enables tagging trace data for different modules or libraries in a program. 

```python
import ittapi.compat as itt

domain = itt.domain_create("<Domain Name>")
```

Above code snippet creates a domain with the given `Domain name` and returns a Domain object created with the given name. If `Domain name` is left empty then default Domain object with name as `ittapi` will be returned.

#### Task API

```python
import ittapi.compat as itt

domain = itt.domain_create("ittapi")
itt.task_begin(domain, <Task Name>)
# ... Task code
itt.task_end(domain)
```

If the above code is profiled with the VTune or others, 
`task_begin` creates a task instance on a thread with name as `Task Name`. This becomes the current task instance for that thread. A call to `task_end` on the same thread ends the current task instance.