Pigweed
Loading...
Searching...
No Matches
buffer.h
1
// Copyright 2023 The Pigweed Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4
// use this file except in compliance with the License. You may obtain a copy of
5
// the License at
6
//
7
// https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
// License for the specific language governing permissions and limitations under
13
// the License.
14
#pragma once
15
16
#include <array>
17
#include <cstddef>
18
#include <cstdint>
19
20
#include "pw_bytes/span.h"
21
#include "pw_result/result.h"
22
23
namespace
pw::allocator {
24
51
template
<
typename
T,
size_t
kBufferSize,
size_t
kAlignment = 1>
52
class
WithBuffer
{
53
public
:
54
static
constexpr
size_t
kCapacity = kBufferSize;
55
56
ByteSpan as_bytes() {
return
buffer_; }
57
std::byte* data() {
return
buffer_.data(); }
58
size_t
size()
const
{
return
buffer_.size(); }
59
60
T& operator*() {
return
obj_; }
61
const
T& operator*()
const
{
return
obj_; }
62
63
T* operator->() {
return
&obj_; }
64
const
T* operator->()
const
{
return
&obj_; }
65
66
private
:
67
alignas
(kAlignment) std::array<std::byte, kBufferSize> buffer_;
68
T obj_;
69
};
70
71
}
// namespace pw::allocator
pw::allocator::WithBuffer
Definition:
buffer.h:52
pw_allocator
public
pw_allocator
buffer.h
Generated by
1.9.6