1d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===-- Gauge.h -------------------------------------------------*- C++ -*-===// 2f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 3d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// The LLVM Compiler Infrastructure 4f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 5d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// This file is distributed under the University of Illinois Open Source 6d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// License. See LICENSE.TXT for details. 7f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 8d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===----------------------------------------------------------------------===// 9f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 10f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#ifndef PerfTestDriver_Gauge_h 11f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#define PerfTestDriver_Gauge_h 12f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 13f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <functional> 149de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton#include <string> 159de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 169de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton#include "Results.h" 179de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 1875fc5a74d95804e2ddc87bcade177640521147e0Greg Claytonnamespace lldb_perf { 1975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton 209de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytontemplate <class T> 21f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granataclass Gauge 22f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata{ 23f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatapublic: 249de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton typedef T ValueType; 259de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 26f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata Gauge () 27f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata {} 28f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 29f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata virtual 30f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ~Gauge () 31f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata {} 32f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 33f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata virtual void 3475fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton Start () = 0; 35f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 369de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual ValueType 3775fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton Stop () = 0; 389de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 399de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual ValueType 409de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton GetStartValue () const = 0; 419de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 429de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual ValueType 439de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton GetStopValue () const = 0; 449de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 459de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual ValueType 469de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton GetDeltaValue () const = 0; 47f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 48f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata}; 499de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 509de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytontemplate <class T> 519de4dec874148d30cc1d4c498d38cd048a8164caGreg ClaytonResults::ResultSP GetResult (const char *description, T value); 529de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 539de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytontemplate <> 549de4dec874148d30cc1d4c498d38cd048a8164caGreg ClaytonResults::ResultSP GetResult (const char *description, double value); 559de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 569de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytontemplate <> 579de4dec874148d30cc1d4c498d38cd048a8164caGreg ClaytonResults::ResultSP GetResult (const char *description, uint64_t value); 589de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 599de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytontemplate <> 609de4dec874148d30cc1d4c498d38cd048a8164caGreg ClaytonResults::ResultSP GetResult (const char *description, std::string value); 619de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 62af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton} 63f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 64f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#endif 65