Metric.h revision c50fc4b658c46ef43b1add131391ecdd1f9bd752
1f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 2f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// Metric.h 3f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// PerfTestDriver 4f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 5f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// Created by Enrico Granata on 3/7/13. 6f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// Copyright (c) 2013 Apple Inc. All rights reserved. 7f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 8f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 9f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#ifndef __PerfTestDriver__Metric__ 10f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#define __PerfTestDriver__Metric__ 11f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 12f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <vector> 13f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <string> 14f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <mach/task_info.h> 15f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 16f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include "CFCMutableArray.h" 17f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 18f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatanamespace lldb { namespace perf 19f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata{ 20f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granataclass WriteToPList 21f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata{ 22f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatapublic: 23f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata virtual void 24f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata Write (CFCMutableArray& parent) = 0; 25f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 26f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata virtual 27f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ~WriteToPList () {} 28f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata}; 29f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 30f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatatemplate <class ValueType> 31f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granataclass Metric : public WriteToPList { 32f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatapublic: 33f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata Metric (); 34c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata Metric (const char*, const char* = NULL); 35f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 36f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata void 37f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata append (ValueType v); 38f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 39f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata size_t 40f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata count (); 41f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 42f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ValueType 43f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata sum (); 44f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 45f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ValueType 46f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata average (); 47f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 48f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata const char* 49f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata name (); 50f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 51c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata const char* 52c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata description (); 53c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata 54f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata virtual void 55f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata Write (CFCMutableArray& parent) 56f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata { 57f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata WriteImpl(parent, identity<ValueType>()); 58f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata } 59f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 60f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granataprivate: 61f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 62f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata template<typename T> 63f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata struct identity { typedef T type; }; 64f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 65f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata void WriteImpl (CFCMutableArray& parent, identity<double>); 66f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 67f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata void WriteImpl (CFCMutableArray& parent, identity<mach_vm_size_t>); 68f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 69f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata std::string m_name; 70c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata std::string m_description; 71f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata std::vector<ValueType> m_dataset; 72f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata}; 73f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata} } 74f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 75f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#endif /* defined(__PerfTestDriver__Metric__) */ 76