Stroika Library 3.0d16
 
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
10
11/**
12 * \file
13 *
14 * \note Code-Status: <a href="Code-Status.md#Alpha">Alpha</a>
15 */
16
18
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 */
44
45 public:
46 /**
47 */
48 DenseDataHyperRectangle (INDEXES... dimensions);
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>
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_ */
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
typename Private_DataHyperRectangle_::template NTemplate< T, DenseDataHyperRectangle >::template Helper_< make_index_sequence< N > >::CombinedType DenseDataHyperRectangleN