Files
MuditaOS/module-utils/log/StringCircularBuffer.hpp
Lefucjusz 773f2c7eb1 [BH-2069] Update license URL in headers
Update outdated license file URL in
license headers across all project.
2024-09-18 11:53:01 +02:00

47 lines
1.1 KiB
C++

// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md
#pragma once
#include <memory>
#include <string>
#include <optional>
class StringCircularBuffer
{
public:
explicit StringCircularBuffer(size_t size) : buffer(std::make_unique<std::string[]>(size)), capacity(size)
{}
[[nodiscard]] size_t getCapacity() const noexcept
{
return capacity;
}
[[nodiscard]] bool isEmpty() const noexcept
{
return size == 0;
}
[[nodiscard]] virtual std::optional<std::string> get();
[[nodiscard]] size_t getSize() const noexcept
{
return size;
}
[[nodiscard]] bool isFull() const noexcept
{
return full;
}
void put(const std::string &item);
void put(std::string &&item);
void reset();
private:
void updateMembersAfterPut();
void updateMembersBeforePut();
std::unique_ptr<std::string[]> buffer;
bool full{false};
size_t head{0};
size_t capacity;
size_t size{0};
size_t tail{0};
};