Celero
UserDefinedMeasurement.h
1 #pragma once
2 
20 
21 #include <celero/Export.h>
22 
23 #include <functional>
24 #include <memory>
25 #include <string>
26 #include <unordered_map>
27 #include <vector>
28 
29 namespace celero
30 {
31  class UserDefinedMeasurement;
32 
39  using UDMAggregationTable = std::vector<std::pair<std::string, std::function<double(void)>>>;
40 
48  class CELERO_EXPORT UserDefinedMeasurement
49  {
50  public:
54  virtual ~UserDefinedMeasurement() = default;
55 
59  virtual UDMAggregationTable getAggregationInfo() const = 0;
60 
64  virtual std::string getName() const = 0;
65 
72  virtual void merge(const UserDefinedMeasurement* const x) = 0;
73 
74  protected:
75  // Class may never be directly instantiated
76  UserDefinedMeasurement() = default;
77  };
78 
79 } // namespace celero
80 
Definition: Archive.h:25
std::vector< std::pair< std::string, std::function< double(void)> >> UDMAggregationTable
Describes, which aggregations should be computed on a user-defined measurement.
Definition: UserDefinedMeasurement.h:39
Base class that the user must derive user-defined measurements from.
Definition: UserDefinedMeasurement.h:48