acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
_character_range.h
1
// Created by camilo on 2025-04-17 09:37 <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
6
7
8
//#include "acme/prototype/string/string_base.h"
9
//#include "acme/prototype/string/string_base.h"
10
11
12
//template < typename T >
13
//concept character_range_not_string = character_range<T> && !prototype_string<T>;
14
//
15
//
16
//template < typename T >
17
//concept character_range_not_string_neither_scoped_string = character_range<T> && !prototype_string<T> && !prototype_scoped_string<T>;
18
19
20
//template < prototype_character CHARACTER, character_count n, typed_character_range < CHARACTER > TYPED_CHARACTER_RANGE >
21
//const_string_range_static_array < const CHARACTER*, 2 > operator + (const CHARACTER(&s)[n], const TYPED_CHARACTER_RANGE& range)
22
//{
23
//
24
// //return { ::as_string_literal< CHARACTER, n>(s), range };
25
// return { s, range };
26
//
27
//}
28
29
30
31
32
template
< prototype_
char
acter_range RANGE, typed_
char
acter_range <
typename
RANGE::CHARACTER > TYPED_RANGE >
33
::string_base < typename RANGE::const_iterator > operator + (
const
RANGE&
range
,
const
TYPED_RANGE& typedrange)
34
{
35
36
return
{
range
, typedrange };
37
38
}
39
40
41
template
< prototype_
char
acter_range RANGE, has_as_
string
HAS_AS_STRING >
42
::string_base < typename RANGE::const_iterator > operator + (
const
RANGE&
range
,
const
HAS_AS_STRING&
has_as_string
)
43
requires
(!prototype_character_range < HAS_AS_STRING >)
44
{
45
46
return ::transfer(::string_base < typename RANGE::const_iterator >(
range
) +
has_as_string
.as_string());
47
48
}
49
50
51
52
//template < character_count n >
53
//const_string_range_static_array < const_char_pointer ,2 > operator + (const ::range < const_char_pointer >& range, const ansi_string_literal<n> & literal)
54
//{
55
//
56
// //return { range, ::as_string_literal<typename RANGE::CHARACTER, n>(s) };
57
// return { range, literal };
58
//
59
//}
60
61
62
63
64
65
66
//template < character_range RANGE, ::i32 t_size >
67
//const_string_range_static_array < typename RANGE::const_iterator, t_size + 1 > operator + (const const_string_range_static_array < typename RANGE::const_iterator, t_size >& a, const RANGE& range)
68
//{
69
//
70
// return { a, range };
71
//
72
//}
73
74
template
< prototype_
char
acter_range RANGE, prototype_
char
acter CHARACTER >
75
::string_base < typename RANGE::const_iterator > operator + (
const
RANGE&
range
,
const
typename
RANGE::CHARACTER ch)
76
{
77
78
return
{
range
, {&ch, &ch + 1, e_range_none} };
79
80
}
81
82
83
template
< prototype_
char
acter_range RANGE >
84
inline ::string_base < const typename RANGE::CHARACTER* > operator +(
const
typename
RANGE::CHARACTER& ch,
const
RANGE&
range
)
85
{
86
87
return
{
88
::character_range < const typename RANGE::CHARACTER*>(
89
(
const
typename
RANGE::CHARACTER*) & ch,
90
((
const
typename
RANGE::CHARACTER*) (&ch)) + 1,
91
e_range_none
92
),
93
range
94
};
95
96
}
97
98
99
template
< prototype_
char
acter_range RANGE >
100
inline
string
& operator <<(
string
& str,
const
RANGE& r)
101
{
102
103
str.append(r);
104
105
return
str;
106
107
}
108
109
110
template
<
typename
ITERATOR_TYPE>
111
inline
string_base<ITERATOR_TYPE>
const_string_range<ITERATOR_TYPE>::surrounded(
const
SCOPED_STRING& strLeft,
const
SCOPED_STRING& strRight)
const
112
{
113
114
return
strLeft + *
this
+ strRight;
115
116
}
117
118
119
template
< prototype_payload PAYLOAD, prototype_
char
acter_range RANGE >
120
::string operator + (
const
PAYLOAD&
payload
,
const
RANGE&
range
)
121
{
122
123
return ::transfer(::string(
payload
) + ::string(
range
));
124
125
}
126
127
128
template
< prototype_payload PAYLOAD, prototype_
char
acter_range RANGE >
129
PAYLOAD& operator += (PAYLOAD&
payload
,
const
RANGE&
range
)
130
{
131
132
string
str =
payload
.as_string() + ::string(
range
);
133
134
payload
= str;
135
136
return
payload
;
137
138
}
139
140
141
template
< prototype_
char
acter_range RANGE >
142
atom::atom(
const
RANGE&
range
) :
143
m_str(
range
)
144
{
145
146
m_etype = e_type_text;
147
148
}
149
150
151
payload
Definition
payload.h:54
range
Definition
range.h:223
string_base
Definition
string_base.h:90
has_as_string
Definition
_initial_concepts.h:462
prototype
string
_character_range.h
Generated by
1.17.0