Measurement.h revision f5af85a2946ed4e1ff4766829d328cfb4961f259
1// 2// Measurement.h 3// PerfTestDriver 4// 5// Created by Enrico Granata on 3/7/13. 6// Copyright (c) 2013 Apple Inc. All rights reserved. 7// 8 9#ifndef __PerfTestDriver__Measurement__ 10#define __PerfTestDriver__Measurement__ 11 12#include "Gauge.h" 13#include "Metric.h" 14 15namespace lldb { namespace perf 16{ 17template <typename GaugeType, typename Action> 18class Measurement : public WriteToPList 19{ 20public: 21 Measurement (Action act, const char* name = NULL) : 22 m_action (act), 23 m_metric (Metric<typename GaugeType::SizeType>(name)) 24 {} 25 26 template <typename... Args> 27 void 28 operator () (Args... args) 29 { 30 GaugeType gauge; 31 m_metric.append (gauge.gauge(m_action,args...)); 32 } 33 34 Metric<typename GaugeType::SizeType> 35 metric () 36 { 37 return m_metric; 38 } 39 40 virtual void 41 Write (CFCMutableArray& parent) 42 { 43 m_metric.Write(parent); 44 } 45 46private: 47 Action m_action; 48 Metric<typename GaugeType::SizeType> m_metric; 49}; 50} } 51 52#endif /* defined(__PerfTestDriver__Measurement__) */ 53