// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include namespace arm { namespace pipe { class ICounterRegistry { public: virtual ~ICounterRegistry() {} // Register profiling objects virtual const Category* RegisterCategory (const std::string& categoryName) = 0; virtual const Device* RegisterDevice (const std::string& deviceName, uint16_t cores, const arm::pipe::Optional& parentCategoryName) = 0; virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName, uint16_t count, const arm::pipe::Optional& parentCategoryName) = 0; virtual const Counter* RegisterCounter(const std::string& backendId, const uint16_t uid, const std::string& parentCategoryName, uint16_t counterClass, uint16_t interpolation, double multiplier, const std::string& name, const std::string& description, const arm::pipe::Optional& units = arm::pipe::EmptyOptional(), const arm::pipe::Optional& numberOfCores = arm::pipe::EmptyOptional(), const arm::pipe::Optional& deviceUid = arm::pipe::EmptyOptional(), const arm::pipe::Optional& counterSetUid = arm::pipe::EmptyOptional()) = 0; }; } // namespace pipe } // namespace arm