yum-mirror/VkFFT

git clone https://git.yummers.dev/yum-mirror/VkFFT

Tolmachev DmitriiMetal support in VkFFTba7001c

develop
10.1 KiB245 linesraw
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------
2//
3// Foundation/NSString.hpp
4//
5// Copyright 2020-2021 Apple Inc.
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11//     http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19//-------------------------------------------------------------------------------------------------------------------------------------------------------------
20
21#pragma once
22
23//-------------------------------------------------------------------------------------------------------------------------------------------------------------
24
25#include "NSDefines.hpp"
26#include "NSObject.hpp"
27#include "NSPrivate.hpp"
28#include "NSRange.hpp"
29#include "NSTypes.hpp"
30
31//-------------------------------------------------------------------------------------------------------------------------------------------------------------
32
33namespace NS
34{
35_NS_ENUM(NS::UInteger, StringEncoding) {
36    ASCIIStringEncoding = 1,
37    NEXTSTEPStringEncoding = 2,
38    JapaneseEUCStringEncoding = 3,
39    UTF8StringEncoding = 4,
40    ISOLatin1StringEncoding = 5,
41    SymbolStringEncoding = 6,
42    NonLossyASCIIStringEncoding = 7,
43    ShiftJISStringEncoding = 8,
44    ISOLatin2StringEncoding = 9,
45    UnicodeStringEncoding = 10,
46    WindowsCP1251StringEncoding = 11,
47    WindowsCP1252StringEncoding = 12,
48    WindowsCP1253StringEncoding = 13,
49    WindowsCP1254StringEncoding = 14,
50    WindowsCP1250StringEncoding = 15,
51    ISO2022JPStringEncoding = 21,
52    MacOSRomanStringEncoding = 30,
53
54    UTF16StringEncoding = UnicodeStringEncoding,
55
56    UTF16BigEndianStringEncoding = 0x90000100,
57    UTF16LittleEndianStringEncoding = 0x94000100,
58
59    UTF32StringEncoding = 0x8c000100,
60    UTF32BigEndianStringEncoding = 0x98000100,
61    UTF32LittleEndianStringEncoding = 0x9c000100
62};
63
64_NS_OPTIONS(NS::UInteger, StringCompareOptions) {
65    CaseInsensitiveSearch = 1,
66    LiteralSearch = 2,
67    BackwardsSearch = 4,
68    AnchoredSearch = 8,
69    NumericSearch = 64,
70    DiacriticInsensitiveSearch = 128,
71    WidthInsensitiveSearch = 256,
72    ForcedOrderingSearch = 512,
73    RegularExpressionSearch = 1024
74};
75
76using unichar = unsigned short;
77
78class String : public Copying<String>
79{
80public:
81    static String* string();
82    static String* string(const String* pString);
83    static String* string(const char* pString, StringEncoding encoding);
84
85    static String* alloc();
86    String*        init();
87    String*        init(const String* pString);
88    String*        init(const char* pString, StringEncoding encoding);
89    String*        init(void* pBytes, UInteger len, StringEncoding encoding, bool freeBuffer);
90
91    unichar        character(UInteger index) const;
92    UInteger       length() const;
93
94    const char*    cString(StringEncoding encoding) const;
95    const char*    utf8String() const;
96    UInteger       maximumLengthOfBytes(StringEncoding encoding) const;
97    UInteger       lengthOfBytes(StringEncoding encoding) const;
98
99    bool           isEqualToString(const String* pString) const;
100    Range          rangeOfString(const String* pString, StringCompareOptions options) const;
101
102    const char*    fileSystemRepresentation() const;
103
104    String*        stringByAppendingString(const String* pString) const;
105
106};
107
108template< std::size_t _StringLen >
109constexpr const String* MakeConstantString( const char ( &str )[_StringLen] )
110{
111    return reinterpret_cast< const String* >( __CFStringMakeConstantString( str ) );
112}
113
114}
115
116//-------------------------------------------------------------------------------------------------------------------------------------------------------------
117
118_NS_INLINE NS::String* NS::String::string()
119{
120    return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(string));
121}
122
123//-------------------------------------------------------------------------------------------------------------------------------------------------------------
124
125_NS_INLINE NS::String* NS::String::string(const String* pString)
126{
127    return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(stringWithString_), pString);
128}
129
130//-------------------------------------------------------------------------------------------------------------------------------------------------------------
131
132_NS_INLINE NS::String* NS::String::string(const char* pString, StringEncoding encoding)
133{
134    return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(stringWithCString_encoding_), pString, encoding);
135}
136
137//-------------------------------------------------------------------------------------------------------------------------------------------------------------
138
139_NS_INLINE NS::String* NS::String::alloc()
140{
141    return Object::alloc<String>(_NS_PRIVATE_CLS(NSString));
142}
143
144//-------------------------------------------------------------------------------------------------------------------------------------------------------------
145
146_NS_INLINE NS::String* NS::String::init()
147{
148    return Object::init<String>();
149}
150
151//-------------------------------------------------------------------------------------------------------------------------------------------------------------
152
153_NS_INLINE NS::String* NS::String::init(const String* pString)
154{
155    return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithString_), pString);
156}
157
158//-------------------------------------------------------------------------------------------------------------------------------------------------------------
159
160_NS_INLINE NS::String* NS::String::init(const char* pString, StringEncoding encoding)
161{
162    return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithCString_encoding_), pString, encoding);
163}
164
165//-------------------------------------------------------------------------------------------------------------------------------------------------------------
166
167_NS_INLINE NS::String* NS::String::init(void* pBytes, UInteger len, StringEncoding encoding, bool freeBuffer)
168{
169    return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithBytesNoCopy_length_encoding_freeWhenDone_), pBytes, len, encoding, freeBuffer);
170}
171
172//-------------------------------------------------------------------------------------------------------------------------------------------------------------
173
174_NS_INLINE NS::unichar NS::String::character(UInteger index) const
175{
176    return Object::sendMessage<unichar>(this, _NS_PRIVATE_SEL(characterAtIndex_), index);
177}
178
179//-------------------------------------------------------------------------------------------------------------------------------------------------------------
180
181_NS_INLINE NS::UInteger NS::String::length() const
182{
183    return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(length));
184}
185
186//-------------------------------------------------------------------------------------------------------------------------------------------------------------
187
188_NS_INLINE const char* NS::String::cString(StringEncoding encoding) const
189{
190    return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(cStringUsingEncoding_), encoding);
191}
192
193//-------------------------------------------------------------------------------------------------------------------------------------------------------------
194
195_NS_INLINE const char* NS::String::utf8String() const
196{
197    return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(UTF8String));
198}
199
200//-------------------------------------------------------------------------------------------------------------------------------------------------------------
201
202_NS_INLINE NS::UInteger NS::String::maximumLengthOfBytes(StringEncoding encoding) const
203{
204    return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(maximumLengthOfBytesUsingEncoding_), encoding);
205}
206
207//-------------------------------------------------------------------------------------------------------------------------------------------------------------
208
209_NS_INLINE NS::UInteger NS::String::lengthOfBytes(StringEncoding encoding) const
210{
211    return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(lengthOfBytesUsingEncoding_), encoding);
212}
213
214//-------------------------------------------------------------------------------------------------------------------------------------------------------------
215
216_NS_INLINE bool NS::String::isEqualToString(const NS::String* pString) const
217{
218    return Object::sendMessage<bool>(this, _NS_PRIVATE_SEL(isEqualToString_), pString);
219}
220
221//-------------------------------------------------------------------------------------------------------------------------------------------------------------
222
223_NS_INLINE NS::Range NS::String::rangeOfString(const NS::String* pString, NS::StringCompareOptions options) const
224{
225    return Object::sendMessage<Range>(this, _NS_PRIVATE_SEL(rangeOfString_options_), pString, options);
226}
227
228//-------------------------------------------------------------------------------------------------------------------------------------------------------------
229
230
231//-------------------------------------------------------------------------------------------------------------------------------------------------------------
232
233_NS_INLINE const char* NS::String::fileSystemRepresentation() const
234{
235    return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(fileSystemRepresentation));
236}
237
238//-------------------------------------------------------------------------------------------------------------------------------------------------------------
239
240_NS_INLINE NS::String* NS::String::stringByAppendingString(const String* pString) const
241{
242    return Object::sendMessage<NS::String*>(this, _NS_PRIVATE_SEL(stringByAppendingString_), pString);
243}
244
245//-------------------------------------------------------------------------------------------------------------------------------------------------------------