| // |
| // Copyright 2020 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // HistogramWriter: |
| // Helper class for writing histogram-json-set-format files to JSON. |
| |
| #ifndef ANGLE_TESTS_TEST_UTILS_HISTOGRAM_WRITER_H_ |
| #define ANGLE_TESTS_TEST_UTILS_HISTOGRAM_WRITER_H_ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| |
| // Include forward delcarations for rapidjson types. |
| #include <rapidjson/fwd.h> |
| |
| namespace catapult |
| { |
| class HistogramBuilder; |
| } // namespace catapult |
| |
| namespace angle |
| { |
| class HistogramWriter |
| { |
| public: |
| HistogramWriter(); |
| ~HistogramWriter(); |
| |
| void addSample(const std::string &measurement, |
| const std::string &story, |
| double value, |
| const std::string &units); |
| |
| void getAsJSON(rapidjson::Document *doc) const; |
| |
| private: |
| #if defined(ANGLE_HAS_HISTOGRAMS) |
| std::map<std::string, std::unique_ptr<catapult::HistogramBuilder>> mHistograms; |
| #endif // defined(ANGLE_HAS_HISTOGRAMS) |
| }; |
| |
| // Define a stub implementation when histograms are compiled out. |
| #if !defined(ANGLE_HAS_HISTOGRAMS) |
| inline HistogramWriter::HistogramWriter() = default; |
| inline HistogramWriter::~HistogramWriter() = default; |
| inline void HistogramWriter::addSample(const std::string &measurement, |
| const std::string &story, |
| double value, |
| const std::string &units) |
| {} |
| inline void HistogramWriter::getAsJSON(rapidjson::Document *doc) const {} |
| #endif // !defined(ANGLE_HAS_HISTOGRAMS) |
| |
| } // namespace angle |
| |
| #endif // ANGLE_TESTS_TEST_UTILS_HISTOGRAM_WRITER_H_ |