Stroika Library
3.0d16
Help-Home
Loading...
Searching...
No Matches
DenseDataHyperRectangle.h
Go to the documentation of this file.
1
/*
2
* Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3
*/
4
#ifndef _Stroika_Foundation_Containers_DenseDataHyperRectangle_h_
5
#define _Stroika_Foundation_Containers_DenseDataHyperRectangle_h_ 1
6
7
#include "Stroika/Foundation/StroikaPreComp.h"
8
9
#include "
Stroika/Foundation/Containers/DataHyperRectangle.h
"
10
11
/**
12
* \file
13
*
14
* \note Code-Status: <a href="Code-Status.md#Alpha">Alpha</a>
15
*/
16
17
namespace
Stroika::Foundation::Containers
{
18
19
using
Common::ArgByValueType
;
20
using
Traversal::Iterable;
21
using
Traversal::Iterator;
22
23
/**
24
* A DenseDataHyperRectangle<> is a DataHyperRectangle where you specify the max value for each dimension, and it is
25
* a programming (assertion) error to check/add items outside that range. And when iterating (e.g. size ()) you always
26
* find all items.
27
*
28
* \note <a href="Design-Overview.md#Comparisons">Comparisons</a>:
29
* @see inherited from DataHyperRectangle<>
30
*/
31
template
<
typename
T,
typename
... INDEXES>
32
class
[[nodiscard]]
DenseDataHyperRectangle
:
public
DataHyperRectangle
<T, INDEXES...> {
33
private
:
34
using
inherited
=
DataHyperRectangle
<T, INDEXES...>;
35
36
public
:
37
using
value_type =
typename
inherited::value_type;
38
39
public
:
40
/**
41
* Use this typedef in templates to recover the basic functional container pattern of concrete types.
42
*/
43
using
ArchetypeContainerType
=
DenseDataHyperRectangle
;
44
45
public
:
46
/**
47
*/
48
DenseDataHyperRectangle
(INDEXES... dimensions);
49
DenseDataHyperRectangle
(
const
DenseDataHyperRectangle<T, INDEXES...>
& src);
50
51
protected
:
52
explicit
DenseDataHyperRectangle
(
const
shared_ptr<typename inherited::_IRep>& src)
noexcept
;
53
explicit
DenseDataHyperRectangle
(shared_ptr<typename inherited::_IRep>&& src)
noexcept
;
54
55
public
:
56
nonvirtual
DenseDataHyperRectangle
<T, INDEXES...>& operator= (
const
DenseDataHyperRectangle<T, INDEXES...>
& rhs) =
default
;
57
};
58
59
/**
60
* using DenseDataHyperRectangleN = DenseDataHyperRectangle<T, size_t REPEATED N TIMES>
61
*/
62
template
<
typename
T,
size_t
N>
63
using
DenseDataHyperRectangleN
=
64
typename
Private_DataHyperRectangle_::template NTemplate<T, DenseDataHyperRectangle>::template Helper_<make_index_sequence<N>>::CombinedType;
65
66
}
67
68
/*
69
********************************************************************************
70
******************************* Implementation Details *************************
71
********************************************************************************
72
*/
73
74
#include "DenseDataHyperRectangle.inl"
75
76
#endif
/*_Stroika_Foundation_Containers_DenseDataHyperRectangle_h_ */
DataHyperRectangle.h
Stroika::Foundation::Containers::DataHyperRectangle
Definition
DataHyperRectangle.h:61
Stroika::Foundation::Containers::DenseDataHyperRectangle
Definition
DenseDataHyperRectangle.h:32
Stroika::Foundation::Common::ArgByValueType
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.
Definition
TypeHints.h:32
Stroika::Foundation::Containers
Definition
String.h:55
Stroika::Foundation::Containers::DenseDataHyperRectangleN
typename Private_DataHyperRectangle_::template NTemplate< T, DenseDataHyperRectangle >::template Helper_< make_index_sequence< N > >::CombinedType DenseDataHyperRectangleN
Definition
DenseDataHyperRectangle.h:64
Library
Sources
Stroika
Foundation
Containers
DenseDataHyperRectangle.h
Generated by
1.9.8