// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_METRICS_HISTOGRAM_SAMPLES_H_ #define BASE_METRICS_HISTOGRAM_SAMPLES_H_ #include <stddef.h> #include <stdint.h> #include <limits> #include <memory> #include <string> #include <string_view> #include "base/atomicops.h" #include "base/base_export.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/metrics/histogram_base.h" namespace base { class Pickle; class PickleIterator; class SampleCountIterator; // HistogramSamples is a container storing all samples of a histogram. All // elements must be of a fixed width to ensure 32/64-bit interoperability. // If this structure changes, bump the version number for kTypeIdHistogram // in persistent_histogram_allocator.cc. // // Note that though these samples are individually consistent (through the use // of atomic operations on the counts), there is only "eventual consistency" // overall when multiple threads are accessing this data. That means that the // sum, redundant-count, etc. could be momentarily out-of-sync with the stored // counts but will settle to a consistent "steady state" once all threads have // exited this code. class BASE_EXPORT HistogramSamples { … }; class BASE_EXPORT SampleCountIterator { … }; class BASE_EXPORT SingleSampleIterator : public SampleCountIterator { … }; } // namespace base #endif // BASE_METRICS_HISTOGRAM_SAMPLES_H_