acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
comparable_range.h
1// Created by camilo on 2022-12-07 22:49 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5//
6//template < typename RANGE_TYPE >
7//class comparable_range :
8// public RANGE_TYPE
9//{
10//public:
11//
12//
13// using BASE_RANGE = RANGE_TYPE;
14//
15// using THIS_RANGE = ::comparable_range < BASE_RANGE >;
16//
17//
18//
19// using this_iterator = typename BASE_RANGE::this_iterator;
20// using iterator = typename BASE_RANGE::iterator;
21// using const_iterator = typename BASE_RANGE::const_iterator;
22//
23//
24// using THIS_RAW_RANGE = typename BASE_RANGE::THIS_RAW_RANGE;
25// using RAW_RANGE = typename BASE_RANGE::RAW_RANGE;
26// using CONST_RAW_RANGE = typename BASE_RANGE::CONST_RAW_RANGE;
27//
28// using ITEM_POINTER = typename get_type_item_pointer < this_iterator >::type;
29//
30// using ITEM = dereference < ITEM_POINTER >;
31//
32//
33// //using BASE_RANGE::BASE_RANGE;
34//
35//
36// comparable_range(no_initialize_t) : RANGE_TYPE(no_initialize_t{}) {}
37// comparable_range(nullptr_t) : RANGE_TYPE(nullptr) {}
38// comparable_range() {}
39// template<typed_range<iterator> RANGE>
40// comparable_range(const RANGE &range) : BASE_RANGE(range) {}
41// template<typed_range<const_iterator> RANGE>
42// comparable_range(const RANGE &range) : BASE_RANGE(range) {}
43// explicit comparable_range(const THIS_RANGE & range) : BASE_RANGE(range) {}
44// explicit comparable_range(THIS_RANGE && range) : BASE_RANGE(::transfer(range)) {}
45// template < prototype_integral INTEGRAL >
46// comparable_range(const_iterator begin, INTEGRAL count) : BASE_RANGE(begin, count) {}
47// comparable_range(const_iterator begin, const_iterator end) : BASE_RANGE(begin, end) {}
48// comparable_range(const_iterator begin) : BASE_RANGE(begin, find_first_null_character(begin)) {}
49//
50//
51// //template < prototype_range RANGE >
52// //comparable_range & operator = (const RANGE & range) { BASE_RANGE::operator=(range); return *this; }
53// comparable_range & operator = (const comparable_range & range) { BASE_RANGE::operator=(range); return *this; }
54// comparable_range & operator = (comparable_range && range) { BASE_RANGE::operator=(::transfer(range)); return *this; }
55//
56//
57// using BASE_RANGE::_order;
58//
59// constexpr ::std::strong_ordering _order(CONST_RAW_RANGE range) const
60// {
61//
62// return _order(range, ::comparison::comparison < ITEM >());
63//
64// }
65//
66//
67// using BASE_RANGE::order;
68//
69// constexpr ::std::strong_ordering order(CONST_RAW_RANGE range) const
70// {
71//
72// return RANGE_TYPE::order(range, ::comparison::comparison < ITEM >());
73//
74// }
75//
76//
77// constexpr ::std::strong_ordering operator<=>(CONST_RAW_RANGE range) const
78// {
79//
80// return this->order(range);
81//
82// }
83//
84//
85//};
86//
87//
90//