Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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
COMPILE_ASSERT
#define COMPILE_ASSERT(expr)
Definition
assert.h:339
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:21
ASSERT
#define ASSERT(E)
Definition
entrypoints_verification_test.cc:25
dart
Definition
dart_vm.cc:33
T
#define T
Definition
precompiler.cc:65
utils.h
Generated on Fri Apr 26 2024 06:15:18 for Flutter Engine by
1.9.8