ea85d68ded35ee38ea2166dc7cd36771c041e97c
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / ie_metric_helpers.hpp
1 // Copyright (C) 2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #pragma once
6
7 #include <type_traits>
8
9 namespace InferenceEngine {
10 namespace Metrics {
11
12 template <typename T>
13 class MetricType;
14
15 #define DECLARE_METRIC_KEY_IMPL(name, ...)          \
16     struct name { };                                \
17     template <>                                     \
18     struct MetricType<name> {                       \
19         using type = __VA_ARGS__;                   \
20     };
21
22 }  // namespace Metrics
23 }  // namespace InferenceEngine
24
25 #define IE_SET_METRIC_RETURN(name, ...)                                                                                          \
26     typename ::InferenceEngine::Metrics::MetricType<::InferenceEngine::Metrics::name>::type _ ## name ## _value = __VA_ARGS__;   \
27     return _ ## name ## _value
28
29 #define IE_SET_METRIC(name, ...)                      \
30     [&] {                                             \
31         IE_SET_METRIC_RETURN(name, __VA_ARGS__);      \
32     } ()
33
34 #include "ie_plugin_config.hpp"