| #ifndef __VTUNE_API_H__ |
| #define __VTUNE_API_H__ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| #include "third_party/ittapi/include/ittnotify.h" |
| |
| class VTuneDomain { |
| /* factory method to create vtune domain */ |
| public: |
| /* create vtune domain, domain_name should be unique, if there |
| already has a domain with same name, return false. |
| */ |
| static std::shared_ptr<VTuneDomain> createDomain(const char* domain_name); |
| |
| /* destory vtune domain*/ |
| static void destroyDomain(const char* domain_name); |
| |
| /* get a domain */ |
| static std::shared_ptr<VTuneDomain> getDomain(const char* domain_name); |
| |
| /* domain interface */ |
| public: |
| /* start a task with name, if no task name or null, use "default_task_name"*/ |
| bool beginTask(const char* task_name = "default_task_name"); |
| |
| /* end a task, if there is no stacked task, return false*/ |
| void endTask(); |
| |
| public: |
| virtual ~VTuneDomain() {} |
| |
| protected: |
| static __itt_string_handle* getString(const char* str); |
| |
| protected: |
| VTuneDomain(__itt_domain* domain) { domain_ = domain; } |
| |
| private: |
| static std::map<std::string, std::shared_ptr<VTuneDomain>> domains_; |
| static std::map<std::string, __itt_string_handle*> string_handlers_; |
| |
| private: |
| __itt_domain* domain_; |
| }; |
| |
| #endif |