// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_MOVINGAVERAGE_H #define JFJOCH_MOVINGAVERAGE_H #include #include #include class MovingAverage { mutable std::mutex m; size_t elems; std::deque q; public: explicit MovingAverage(size_t elems); void Add(float val); void Add(std::optional val); [[nodiscard]] std::optional Read() const; }; #endif //JFJOCH_MOVINGAVERAGE_H