VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
slice.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright 2025-2026 Arnis Lektauers
3
//
4
// Created by Arnis Lektauers on 23.07.2025.
5
//
6
7
#pragma once
8
9
#include <vector>
10
11
namespace
vis
12
{
13
enum class
SliceDirection
{
14
Forward
,
15
Backward
16
};
17
18
template
<
typename
T>
19
class
Slice
{
20
public
:
21
Slice
(
const
std::vector<T>& vec,
const
SliceDirection
dir)
22
: data(vec.data()), length(vec.
size
()), direction(dir) {}
23
24
Slice
(
const
T* data,
const
std::size_t length,
const
SliceDirection
dir)
25
: data(data), length(length), direction(dir) {}
26
27
[[nodiscard]] std::size_t
size
()
const
{
28
return
length;
29
}
30
31
const
T&
operator[]
(std::size_t idx)
const
{
32
if
(idx >= length)
33
{
34
throw
std::out_of_range(
"Slice index out of bounds"
);
35
}
36
37
if
(direction ==
SliceDirection::Forward
) {
38
return
data[idx];
39
}
40
{
// Direction::Backward
41
return
data[length - 1 - idx];
42
}
43
}
44
45
private
:
46
const
T* data;
47
std::size_t length;
48
SliceDirection
direction;
49
};
50
}
vis::Slice::size
std::size_t size() const
Definition
slice.h:27
vis::Slice::Slice
Slice(const std::vector< T > &vec, const SliceDirection dir)
Definition
slice.h:21
vis::Slice::Slice
Slice(const T *data, const std::size_t length, const SliceDirection dir)
Definition
slice.h:24
vis::Slice::operator[]
const T & operator[](std::size_t idx) const
Definition
slice.h:31
vis
Definition
range.h:10
vis::SliceDirection
SliceDirection
Definition
slice.h:13
vis::SliceDirection::Forward
@ Forward
Definition
slice.h:14
vis::SliceDirection::Backward
@ Backward
Definition
slice.h:15
util
slice.h
Generated by
1.16.1