1//===-- Gauge.h -------------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef PerfTestDriver_Gauge_h
11#define PerfTestDriver_Gauge_h
12
13#include <functional>
14#include <string>
15
16#include "Results.h"
17
18namespace lldb_perf {
19
20template <class T>
21class Gauge
22{
23public:
24    typedef T ValueType;
25
26    Gauge ()
27    {}
28
29    virtual
30    ~Gauge ()
31    {}
32
33    virtual void
34    Start () = 0;
35
36    virtual ValueType
37    Stop () = 0;
38
39    virtual ValueType
40    GetStartValue () const = 0;
41
42    virtual ValueType
43    GetStopValue () const = 0;
44
45    virtual ValueType
46    GetDeltaValue () const = 0;
47
48};
49
50template <class T>
51Results::ResultSP GetResult (const char *description, T value);
52
53template <>
54Results::ResultSP GetResult (const char *description, double value);
55
56template <>
57Results::ResultSP GetResult (const char *description, uint64_t value);
58
59template <>
60Results::ResultSP GetResult (const char *description, std::string value);
61
62}
63
64#endif
65