1+ // MIT License
2+ //
3+ // Copyright (c) 2023 igozdev
4+ //
5+ // Permission is hereby granted, free of charge, to any person obtaining a copy
6+ // of this software and associated documentation files (the "Software"), to deal
7+ // in the Software without restriction, including without limitation the rights
8+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+ // copies of the Software, and to permit persons to whom the Software is
10+ // furnished to do so, subject to the following conditions:
11+ //
12+ // The above copyright notice and this permission notice shall be included in all
13+ // copies or substantial portions of the Software.
14+ //
15+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+ // SOFTWARE.
22+
23+ #pragma once
24+
25+ #define CHARIMPL_ASCII_EXPR \
26+ ' \a ' == static_cast <char >(0x07 ) && \
27+ ' \b ' == static_cast <char >(0x08 ) && \
28+ ' \t ' == static_cast <char >(0x09 ) && \
29+ ' \n ' == static_cast <char >(0x0A ) && \
30+ ' \v ' == static_cast <char >(0x0B ) && \
31+ ' \f ' == static_cast <char >(0x0C ) && \
32+ ' \r ' == static_cast <char >(0x0D ) && \
33+ ' ' == static_cast <char >(0x20 ) && \
34+ ' !' == static_cast <char >(0x21 ) && \
35+ ' \" ' == static_cast <char >(0x22 ) && \
36+ ' #' == static_cast <char >(0x23 ) && \
37+ ' $' == static_cast <char >(0x24 ) && \
38+ ' %' == static_cast <char >(0x25 ) && \
39+ ' &' == static_cast <char >(0x26 ) && \
40+ ' \' ' == static_cast <char >(0x27 ) && \
41+ ' (' == static_cast <char >(0x28 ) && \
42+ ' )' == static_cast <char >(0x29 ) && \
43+ ' *' == static_cast <char >(0x2A ) && \
44+ ' +' == static_cast <char >(0x2B ) && \
45+ ' ,' == static_cast <char >(0x2C ) && \
46+ ' -' == static_cast <char >(0x2D ) && \
47+ ' .' == static_cast <char >(0x2E ) && \
48+ ' /' == static_cast <char >(0x2F ) && \
49+ ' 0' == static_cast <char >(0x30 ) && \
50+ ' 1' == static_cast <char >(0x31 ) && \
51+ ' 2' == static_cast <char >(0x32 ) && \
52+ ' 3' == static_cast <char >(0x33 ) && \
53+ ' 4' == static_cast <char >(0x34 ) && \
54+ ' 5' == static_cast <char >(0x35 ) && \
55+ ' 6' == static_cast <char >(0x36 ) && \
56+ ' 7' == static_cast <char >(0x37 ) && \
57+ ' 8' == static_cast <char >(0x38 ) && \
58+ ' 9' == static_cast <char >(0x39 ) && \
59+ ' :' == static_cast <char >(0x3A ) && \
60+ ' ;' == static_cast <char >(0x3B ) && \
61+ ' <' == static_cast <char >(0x3C ) && \
62+ ' =' == static_cast <char >(0x3D ) && \
63+ ' >' == static_cast <char >(0x3E ) && \
64+ ' ?' == static_cast <char >(0x3F ) && \
65+ ' @' == static_cast <char >(0x40 ) && \
66+ ' A' == static_cast <char >(0x41 ) && \
67+ ' B' == static_cast <char >(0x42 ) && \
68+ ' C' == static_cast <char >(0x43 ) && \
69+ ' D' == static_cast <char >(0x44 ) && \
70+ ' E' == static_cast <char >(0x45 ) && \
71+ ' F' == static_cast <char >(0x46 ) && \
72+ ' G' == static_cast <char >(0x47 ) && \
73+ ' H' == static_cast <char >(0x48 ) && \
74+ ' I' == static_cast <char >(0x49 ) && \
75+ ' J' == static_cast <char >(0x4A ) && \
76+ ' K' == static_cast <char >(0x4B ) && \
77+ ' L' == static_cast <char >(0x4C ) && \
78+ ' M' == static_cast <char >(0x4D ) && \
79+ ' N' == static_cast <char >(0x4E ) && \
80+ ' O' == static_cast <char >(0x4F ) && \
81+ ' P' == static_cast <char >(0x50 ) && \
82+ ' Q' == static_cast <char >(0x51 ) && \
83+ ' R' == static_cast <char >(0x52 ) && \
84+ ' S' == static_cast <char >(0x53 ) && \
85+ ' T' == static_cast <char >(0x54 ) && \
86+ ' U' == static_cast <char >(0x55 ) && \
87+ ' V' == static_cast <char >(0x56 ) && \
88+ ' W' == static_cast <char >(0x57 ) && \
89+ ' X' == static_cast <char >(0x58 ) && \
90+ ' Y' == static_cast <char >(0x59 ) && \
91+ ' Z' == static_cast <char >(0x5A ) && \
92+ ' [' == static_cast <char >(0x5B ) && \
93+ ' \\ ' == static_cast <char >(0x5C ) && \
94+ ' ]' == static_cast <char >(0x5D ) && \
95+ ' ^' == static_cast <char >(0x5E ) && \
96+ ' _' == static_cast <char >(0x5F ) && \
97+ ' `' == static_cast <char >(0x60 ) && \
98+ ' a' == static_cast <char >(0x61 ) && \
99+ ' b' == static_cast <char >(0x62 ) && \
100+ ' c' == static_cast <char >(0x63 ) && \
101+ ' d' == static_cast <char >(0x64 ) && \
102+ ' e' == static_cast <char >(0x65 ) && \
103+ ' f' == static_cast <char >(0x66 ) && \
104+ ' g' == static_cast <char >(0x67 ) && \
105+ ' h' == static_cast <char >(0x68 ) && \
106+ ' i' == static_cast <char >(0x69 ) && \
107+ ' j' == static_cast <char >(0x6A ) && \
108+ ' k' == static_cast <char >(0x6B ) && \
109+ ' l' == static_cast <char >(0x6C ) && \
110+ ' m' == static_cast <char >(0x6D ) && \
111+ ' n' == static_cast <char >(0x6E ) && \
112+ ' o' == static_cast <char >(0x6F ) && \
113+ ' p' == static_cast <char >(0x70 ) && \
114+ ' q' == static_cast <char >(0x71 ) && \
115+ ' r' == static_cast <char >(0x72 ) && \
116+ ' s' == static_cast <char >(0x73 ) && \
117+ ' t' == static_cast <char >(0x74 ) && \
118+ ' u' == static_cast <char >(0x75 ) && \
119+ ' v' == static_cast <char >(0x76 ) && \
120+ ' w' == static_cast <char >(0x77 ) && \
121+ ' x' == static_cast <char >(0x78 ) && \
122+ ' y' == static_cast <char >(0x79 ) && \
123+ ' z' == static_cast <char >(0x7A ) && \
124+ ' {' == static_cast <char >(0x7B ) && \
125+ ' |' == static_cast <char >(0x7C ) && \
126+ ' }' == static_cast <char >(0x7D ) && \
127+ ' ~' == static_cast <char >(0x7E )
128+
129+ namespace charimpl
130+ {
131+ #if defined(__cpp_consteval)
132+ consteval
133+ #elif defined(__cpp_constexpr)
134+ constexpr
135+ #else
136+ inline
137+ #endif
138+ bool is_ascii ()
139+ #if defined(__cpp_noexcept_function_type)
140+ noexcept
141+ #endif
142+ {
143+ return CHARIMPL_ASCII_EXPR;
144+ }
145+ }
0 commit comments