Flutter Engine
The Flutter Engine
third_party
dart-lang
sdk
runtime
vm
ring_buffer.h
Go to the documentation of this file.
1
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2
// for details. All rights reserved. Use of this source code is governed by a
3
// BSD-style license that can be found in the LICENSE file.
4
5
#ifndef RUNTIME_VM_RING_BUFFER_H_
6
#define RUNTIME_VM_RING_BUFFER_H_
7
8
#include "
platform/assert.h
"
9
#include "
platform/utils.h
"
10
11
namespace
dart
{
12
13
// Fixed-capacity ring buffer.
14
template
<
typename
T,
int
N>
15
class
RingBuffer
{
16
public
:
17
RingBuffer
() : count_(0) {}
18
19
void
Add
(
const
T
& t) { data_[count_++ & kMask] = t; }
20
21
// Returns the i'th most recently added element. Requires 0 <= i < Size().
22
const
T
&
Get
(
int
i
)
const
{
23
ASSERT
(0 <=
i
&&
i
<
Size
());
24
return
data_[(count_ -
i
- 1) & kMask];
25
}
26
27
// Returns the number of elements currently stored in this buffer (at most N).
28
int64_t
Size
()
const
{
29
return
Utils::Minimum
(count_,
static_cast<
int64_t
>
(
N
));
30
}
31
32
private
:
33
static
constexpr
int
kMask =
N
- 1;
34
COMPILE_ASSERT((
N
& kMask) == 0);
35
T
data_[
N
];
36
int64_t count_;
37
};
38
39
}
// namespace dart
40
41
#endif
// RUNTIME_VM_RING_BUFFER_H_
assert.h
N
#define N
Definition:
beziers.cpp:19
dart::RingBuffer
Definition:
ring_buffer.h:15
dart::RingBuffer::Get
const T & Get(int i) const
Definition:
ring_buffer.h:22
dart::RingBuffer::Size
int64_t Size() const
Definition:
ring_buffer.h:28
dart::RingBuffer::Add
void Add(const T &t)
Definition:
ring_buffer.h:19
dart::RingBuffer::RingBuffer
RingBuffer()
Definition:
ring_buffer.h:17
dart::Utils::Minimum
static T Minimum(T x, T y)
Definition:
utils.h:36
ASSERT
#define ASSERT(E)
Definition:
entrypoints_verification_test.cc:25
i
int i
Definition:
fl_socket_accessible.cc:18
dart
Definition:
dart_vm.cc:33
T
#define T
Definition:
precompiler.cc:65
utils.h
Generated on Sun Jun 23 2024 21:55:49 for Flutter Engine by
1.9.4