| // |
| // Copyright © 2020 Arm Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| #pragma once |
| |
| #include <map> |
| #include <string> |
| |
| namespace arm |
| { |
| namespace pipe |
| { |
| |
| class ICounterMappings |
| { |
| public: |
| virtual uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const = 0; |
| virtual const std::pair<uint16_t, std::string>& GetBackendId(uint16_t globalCounterId) const = 0; |
| virtual ~ICounterMappings() {} |
| }; |
| |
| class IRegisterCounterMapping |
| { |
| public: |
| virtual void RegisterMapping(uint16_t globalCounterId, |
| uint16_t backendCounterId, |
| const std::string& backendId) = 0; |
| virtual void Reset() = 0; |
| virtual ~IRegisterCounterMapping() {} |
| }; |
| |
| class CounterIdMap : public ICounterMappings, public IRegisterCounterMapping |
| { |
| |
| public: |
| CounterIdMap() = default; |
| virtual ~CounterIdMap() {} |
| void RegisterMapping(uint16_t globalCounterId, |
| uint16_t backendCounterId, |
| const std::string& backendId) override; |
| void Reset() override; |
| uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const override; |
| const std::pair<uint16_t, std::string>& GetBackendId(uint16_t globalCounterId) const override; |
| private: |
| std::map<uint16_t, std::pair<uint16_t, std::string>> m_GlobalCounterIdMap; |
| std::map<std::pair<uint16_t, std::string>, uint16_t> m_BackendCounterIdMap; |
| }; |
| |
| } // namespace pipe |
| } // namespace arm |