LLVM OpenMP
TestKmpStr.cpp
Go to the documentation of this file.
1//===- TestKmpStr.cpp - Tests for kmp_str utilities ----------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "kmp_str.h"
10#include "gtest/gtest.h"
11#include <cstring>
12
13namespace {
14
15// Test basic string buffer initialization
16TEST(KmpStrTest, BufferInit) {
17 kmp_str_buf_t buffer;
18 __kmp_str_buf_init(&buffer);
19
20 EXPECT_NE(buffer.str, nullptr);
21 EXPECT_GT(buffer.size, 0u);
22 EXPECT_EQ(buffer.used, 0);
23 EXPECT_EQ(buffer.str[0], '\0');
24}
25
26// Test string buffer clear
27TEST(KmpStrTest, BufferClear) {
28 kmp_str_buf_t buffer;
29 __kmp_str_buf_init(&buffer);
30 __kmp_str_buf_print(&buffer, "test string");
31
32 EXPECT_GT(buffer.used, 0);
33
34 __kmp_str_buf_clear(&buffer);
35 EXPECT_EQ(buffer.used, 0);
36 EXPECT_EQ(buffer.str[0], '\0');
37
38 __kmp_str_buf_free(&buffer);
39}
40
41// Test string buffer print
42TEST(KmpStrTest, BufferPrint) {
43 kmp_str_buf_t buffer;
44 __kmp_str_buf_init(&buffer);
45
46 __kmp_str_buf_print(&buffer, "Hello, %s!", "World");
47
48 EXPECT_STREQ(buffer.str, "Hello, World!");
49 EXPECT_EQ(buffer.used, 13);
50
51 __kmp_str_buf_free(&buffer);
52}
53
54// Test string buffer concatenation
55TEST(KmpStrTest, BufferCat) {
56 kmp_str_buf_t buffer;
57 __kmp_str_buf_init(&buffer);
58
59 __kmp_str_buf_cat(&buffer, "Hello", 5);
60 __kmp_str_buf_cat(&buffer, " ", 1);
61 __kmp_str_buf_cat(&buffer, "World", 5);
62
63 EXPECT_STREQ(buffer.str, "Hello World");
64
65 __kmp_str_buf_free(&buffer);
66}
67
68// Test string buffer reservation
69TEST(KmpStrTest, BufferReserve) {
70 kmp_str_buf_t buffer;
71 __kmp_str_buf_init(&buffer);
72
73 size_t large_size = 2048;
74 __kmp_str_buf_reserve(&buffer, large_size);
75
76 EXPECT_GE(buffer.size, large_size);
77
78 __kmp_str_buf_free(&buffer);
79}
80
81// Test basic string to int conversion
82TEST(KmpStrTest, BasicStrToInt) {
83 EXPECT_EQ(__kmp_basic_str_to_int("0"), 0);
84 EXPECT_EQ(__kmp_basic_str_to_int("1"), 1);
85 EXPECT_EQ(__kmp_basic_str_to_int("42"), 42);
86 EXPECT_EQ(__kmp_basic_str_to_int("123"), 123);
87}
88
89// Test basic string to int conversion with invalid inputs
90TEST(KmpStrTest, BasicStrToIntInvalid) {
91 // Empty string returns 0
92 EXPECT_EQ(__kmp_basic_str_to_int(""), 0);
93
94 // Strings starting with non-digits return 0
95 EXPECT_EQ(__kmp_basic_str_to_int("abc"), 0);
96 EXPECT_EQ(__kmp_basic_str_to_int("hello"), 0);
97 EXPECT_EQ(__kmp_basic_str_to_int("xyz123"), 0);
98
99 // Special characters return 0
100 EXPECT_EQ(__kmp_basic_str_to_int("!@#"), 0);
101 EXPECT_EQ(__kmp_basic_str_to_int("+42"), 0);
102 EXPECT_EQ(__kmp_basic_str_to_int("-42"), 0);
103
104 // Leading whitespace causes early stop (returns 0)
105 EXPECT_EQ(__kmp_basic_str_to_int(" 42"), 0);
106 EXPECT_EQ(__kmp_basic_str_to_int("\t42"), 0);
107
108 // Mixed content: parses digits until first non-digit
109 EXPECT_EQ(__kmp_basic_str_to_int("123abc"), 123);
110 EXPECT_EQ(__kmp_basic_str_to_int("42 "), 42);
111 EXPECT_EQ(__kmp_basic_str_to_int("7.5"), 7);
112}
113
114// Test basic string to int conversion with maxlen parameter
115TEST(KmpStrTest, BasicStrToIntMaxLen) {
116 // maxlen limits how many characters are parsed
117 EXPECT_EQ(__kmp_basic_str_to_int("12345", 3), 123);
118 EXPECT_EQ(__kmp_basic_str_to_int("12345", 1), 1);
119 EXPECT_EQ(__kmp_basic_str_to_int("12345", 5), 12345);
120
121 // maxlen larger than string length parses entire string
122 EXPECT_EQ(__kmp_basic_str_to_int("42", 10), 42);
123 EXPECT_EQ(__kmp_basic_str_to_int("123", 100), 123);
124
125 // maxlen of 0 returns 0 (no characters parsed)
126 EXPECT_EQ(__kmp_basic_str_to_int("12345", 0), 0);
127
128 // maxlen with mixed content: stops at maxlen or non-digit, whichever first
129 EXPECT_EQ(__kmp_basic_str_to_int("123abc", 2), 12);
130 EXPECT_EQ(__kmp_basic_str_to_int("123abc", 5),
131 123); // stops at 'a' before maxlen
132
133 // maxlen with leading zeros
134 EXPECT_EQ(__kmp_basic_str_to_int("007", 2), 0);
135 EXPECT_EQ(__kmp_basic_str_to_int("007", 3), 7);
136
137 // Default maxlen (INT_MAX) behaves like before
138 EXPECT_EQ(__kmp_basic_str_to_int("999"), 999);
139}
140
141// Test string match
142TEST(KmpStrTest, StrMatch) {
143 const char *data = "Hello World";
144
145 // Test exact match (len == 0)
146 EXPECT_TRUE(__kmp_str_match("Hello World", 0, data));
147 EXPECT_FALSE(__kmp_str_match("Hello", 0, data)); // Not exact (data is longer)
148
149 // Test prefix match (len < 0)
150 EXPECT_TRUE(
151 __kmp_str_match("Hello", -1, data)); // "Hello" is prefix of "Hello World"
152 EXPECT_FALSE(__kmp_str_match("World", -1, data)); // "World" is not a prefix
153
154 // Test minimum length match (len > 0)
155 EXPECT_TRUE(__kmp_str_match("Hello", 5, data)); // At least 5 chars match
156 EXPECT_TRUE(__kmp_str_match("Hello", 3, data)); // At least 3 chars match
157 EXPECT_FALSE(__kmp_str_match("World", 5, data)); // First chars don't match
158}
159
160// Test string contains
161TEST(KmpStrTest, StrContains) {
162 const char *data = "Hello World";
163
164 EXPECT_TRUE(__kmp_str_contains("Hello", 5, data));
165 EXPECT_TRUE(__kmp_str_contains("World", 5, data));
166 EXPECT_TRUE(__kmp_str_contains("lo Wo", 5, data));
167 EXPECT_FALSE(__kmp_str_contains("Goodbye", 7, data));
168}
169
170// Test string match for true/false values
171TEST(KmpStrTest, MatchBool) {
172 // Test true values
173 EXPECT_TRUE(__kmp_str_match_true("true"));
174 EXPECT_TRUE(__kmp_str_match_true("TRUE"));
175 EXPECT_TRUE(__kmp_str_match_true("on"));
176 EXPECT_TRUE(__kmp_str_match_true("ON"));
177 EXPECT_TRUE(__kmp_str_match_true("1"));
178 EXPECT_TRUE(__kmp_str_match_true("yes"));
179 EXPECT_TRUE(__kmp_str_match_true("YES"));
180
181 // Test false values
182 EXPECT_TRUE(__kmp_str_match_false("false"));
183 EXPECT_TRUE(__kmp_str_match_false("FALSE"));
184 EXPECT_TRUE(__kmp_str_match_false("off"));
185 EXPECT_TRUE(__kmp_str_match_false("OFF"));
186 EXPECT_TRUE(__kmp_str_match_false("0"));
187 EXPECT_TRUE(__kmp_str_match_false("no"));
188 EXPECT_TRUE(__kmp_str_match_false("NO"));
189
190 // Note: Trailing characters after a valid prefix still match due to
191 // minimum-length prefix matching (e.g., "true" uses len=1, "yes" uses len=1)
192 EXPECT_TRUE(__kmp_str_match_true("true "));
193 EXPECT_TRUE(__kmp_str_match_false("false "));
194 EXPECT_TRUE(__kmp_str_match_true("truex"));
195 EXPECT_TRUE(__kmp_str_match_false("falsex"));
196
197 // Partial prefixes also match due to minimum-length matching
198 EXPECT_TRUE(__kmp_str_match_true("t"));
199 EXPECT_TRUE(__kmp_str_match_true("tru"));
200 EXPECT_TRUE(__kmp_str_match_false("f"));
201 EXPECT_TRUE(__kmp_str_match_false("fals"));
202 EXPECT_TRUE(__kmp_str_match_true("y"));
203 EXPECT_TRUE(__kmp_str_match_true("yess"));
204 EXPECT_TRUE(__kmp_str_match_false("n"));
205 EXPECT_TRUE(__kmp_str_match_false("noo"));
206
207 // "on" and "off" require at least 2 characters
208 EXPECT_TRUE(__kmp_str_match_true("on"));
209 EXPECT_TRUE(__kmp_str_match_false("of"));
210 EXPECT_TRUE(__kmp_str_match_false("off"));
211
212 // "enabled" and "disabled" require exact match (len=0)
213 EXPECT_TRUE(__kmp_str_match_true("enabled"));
214 EXPECT_TRUE(__kmp_str_match_false("disabled"));
215}
216
217// Test string match for invalid bool values
218TEST(KmpStrTest, MatchBoolInvalid) {
219 // Empty string is neither true nor false
220 EXPECT_FALSE(__kmp_str_match_true(""));
221 EXPECT_FALSE(__kmp_str_match_false(""));
222
223 // Random strings are neither true nor false
224 EXPECT_FALSE(__kmp_str_match_true("hello"));
225 EXPECT_FALSE(__kmp_str_match_false("hello"));
226 EXPECT_FALSE(__kmp_str_match_true("abc"));
227 EXPECT_FALSE(__kmp_str_match_false("abc"));
228
229 // Numbers other than 0/1 are neither true nor false
230 EXPECT_FALSE(__kmp_str_match_true("2"));
231 EXPECT_FALSE(__kmp_str_match_false("2"));
232 EXPECT_FALSE(__kmp_str_match_true("42"));
233 EXPECT_FALSE(__kmp_str_match_false("42"));
234 EXPECT_FALSE(__kmp_str_match_true("-1"));
235 EXPECT_FALSE(__kmp_str_match_false("-1"));
236
237 // Leading whitespace prevents matching
238 EXPECT_FALSE(__kmp_str_match_true(" true"));
239 EXPECT_FALSE(__kmp_str_match_false(" false"));
240
241 // "on" and "off" require at least 2 characters
242 EXPECT_FALSE(__kmp_str_match_true("o"));
243 EXPECT_FALSE(__kmp_str_match_false("o"));
244
245 // "enabled" and "disabled" require exact match (len=0)
246 EXPECT_FALSE(__kmp_str_match_true("enable"));
247 EXPECT_FALSE(__kmp_str_match_false("disable"));
248
249 // True values don't match as false and vice versa
250 EXPECT_FALSE(__kmp_str_match_false("true"));
251 EXPECT_FALSE(__kmp_str_match_false("1"));
252 EXPECT_FALSE(__kmp_str_match_false("yes"));
253 EXPECT_FALSE(__kmp_str_match_true("false"));
254 EXPECT_FALSE(__kmp_str_match_true("0"));
255 EXPECT_FALSE(__kmp_str_match_true("no"));
256}
257
258// Test string replace
259TEST(KmpStrTest, StrReplace) {
260 char str[] = "Hello World";
261 __kmp_str_replace(str, ' ', '_');
262 EXPECT_STREQ(str, "Hello_World");
263
264 __kmp_str_replace(str, 'o', '0');
265 EXPECT_STREQ(str, "Hell0_W0rld");
266}
267
268// Test string split
269TEST(KmpStrTest, StrSplit) {
270 char str[] = "key=value";
271 char *head = nullptr;
272 char *tail = nullptr;
273
274 __kmp_str_split(str, '=', &head, &tail);
275
276 EXPECT_STREQ(head, "key");
277 EXPECT_STREQ(tail, "value");
278}
279
280// Test file name parsing
281TEST(KmpStrTest, FileNameInit) {
282 const char *path = "/path/to/file.txt";
283 kmp_str_fname_t fname;
284 __kmp_str_fname_init(&fname, path);
285
286 EXPECT_NE(fname.path, nullptr);
287 EXPECT_STREQ(fname.path, path);
288 EXPECT_NE(fname.base, nullptr);
289 EXPECT_STREQ(fname.base, "file.txt");
290
291 __kmp_str_fname_free(&fname);
292}
293
294// Test string format
295TEST(KmpStrTest, StrFormat) {
296 char *result = __kmp_str_format("Number: %d, String: %s", 42, "test");
297
298 EXPECT_NE(result, nullptr);
299 EXPECT_STREQ(result, "Number: 42, String: test");
300
302 EXPECT_EQ(result, nullptr);
303}
304
305// Test string buffer concatenate buffers
306TEST(KmpStrTest, BufferCatBuf) {
307 kmp_str_buf_t buf1, buf2;
308 __kmp_str_buf_init(&buf1);
309 __kmp_str_buf_init(&buf2);
310
311 __kmp_str_buf_print(&buf1, "Hello");
312 __kmp_str_buf_print(&buf2, " World");
313
314 __kmp_str_buf_catbuf(&buf1, &buf2);
315
316 EXPECT_STREQ(buf1.str, "Hello World");
317
318 __kmp_str_buf_free(&buf1);
319 __kmp_str_buf_free(&buf2);
320}
321
322// Test size string parsing
323TEST(KmpStrTest, StrToSize) {
324 size_t result;
325 const char *error = nullptr;
326
327 __kmp_str_to_size("100", &result, 1, &error);
328 EXPECT_EQ(error, nullptr);
329 EXPECT_EQ(result, 100u);
330
331 __kmp_str_to_size("1K", &result, 1024, &error);
332 EXPECT_EQ(error, nullptr);
333 EXPECT_EQ(result, 1024u);
334
335 __kmp_str_to_size("2M", &result, 1024, &error);
336 EXPECT_EQ(error, nullptr);
337 EXPECT_EQ(result, 2u * 1024u * 1024u);
338}
339
340// Test uint string parsing
341TEST(KmpStrTest, StrToUint) {
343 const char *error = nullptr;
344
345 __kmp_str_to_uint("0", &result, &error);
346 EXPECT_EQ(error, nullptr);
347 EXPECT_EQ(result, 0u);
348
349 __kmp_str_to_uint("42", &result, &error);
350 EXPECT_EQ(error, nullptr);
351 EXPECT_EQ(result, 42u);
352
353 __kmp_str_to_uint("1234567890", &result, &error);
354 EXPECT_EQ(error, nullptr);
355 EXPECT_EQ(result, 1234567890u);
356}
357
358} // namespace
#define TEST(test_suite_name, test_name)
int result[2]
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void * data
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d __itt_event ITT_FORMAT __itt_group_mark d void const wchar_t const wchar_t int ITT_FORMAT __itt_group_sync __itt_group_fsync x void const wchar_t int const wchar_t int int ITT_FORMAT __itt_group_sync __itt_group_fsync x void ITT_FORMAT __itt_group_sync __itt_group_fsync p void ITT_FORMAT __itt_group_sync __itt_group_fsync p void size_t ITT_FORMAT lu no args __itt_obj_prop_t __itt_obj_state_t ITT_FORMAT d const char ITT_FORMAT s const char ITT_FORMAT s __itt_frame ITT_FORMAT p __itt_counter ITT_FORMAT p __itt_counter unsigned long long ITT_FORMAT lu __itt_counter unsigned long long ITT_FORMAT lu __itt_counter __itt_clock_domain unsigned long long void ITT_FORMAT p const wchar_t ITT_FORMAT S __itt_mark_type const wchar_t ITT_FORMAT S __itt_mark_type const char ITT_FORMAT s __itt_mark_type ITT_FORMAT d __itt_caller ITT_FORMAT p __itt_caller ITT_FORMAT p no args const __itt_domain __itt_clock_domain unsigned long long __itt_id ITT_FORMAT lu const __itt_domain __itt_clock_domain unsigned long long __itt_id __itt_id void ITT_FORMAT p const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_clock_domain unsigned long long __itt_id __itt_string_handle __itt_scope ITT_FORMAT d const __itt_domain __itt_scope __itt_string_handle const char size_t ITT_FORMAT lu const __itt_domain __itt_clock_domain unsigned long long __itt_relation __itt_id ITT_FORMAT lu __itt_track_group __itt_string_handle __itt_track_group_type ITT_FORMAT d __itt_track ITT_FORMAT p void int const int int const char int ITT_FORMAT d void void const char * path
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id head
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id tail
unsigned long long kmp_uint64
void __kmp_str_fname_init(kmp_str_fname_t *fname, char const *path)
Definition kmp_str.cpp:246
void __kmp_str_to_uint(char const *str, kmp_uint64 *out, char const **error)
Definition kmp_str.cpp:807
void __kmp_str_to_size(char const *str, size_t *out, size_t dfactor, char const **error)
Definition kmp_str.cpp:706
void __kmp_str_fname_free(kmp_str_fname_t *fname)
Definition kmp_str.cpp:277
void __kmp_str_split(char *str, char delim, char **head, char **tail)
Definition kmp_str.cpp:571
void __kmp_str_buf_clear(kmp_str_buf_t *buffer)
Definition kmp_str.cpp:71
void __kmp_str_replace(char *str, char search_for, char replace_with)
Definition kmp_str.cpp:561
bool __kmp_str_contains(char const *target, int len, char const *data)
Definition kmp_str.cpp:520
void __kmp_str_buf_reserve(kmp_str_buf_t *buffer, size_t size)
Definition kmp_str.cpp:80
int __kmp_str_match(char const *target, int len, char const *data)
Definition kmp_str.cpp:505
int __kmp_basic_str_to_int(char const *str, size_t maxlen)
Definition kmp_str.cpp:622
void __kmp_str_buf_free(kmp_str_buf_t *buffer)
Definition kmp_str.cpp:123
char * __kmp_str_format(char const *format,...)
Definition kmp_str.cpp:448
int __kmp_str_match_true(char const *data)
Definition kmp_str.cpp:552
void __kmp_str_buf_cat(kmp_str_buf_t *buffer, char const *str, size_t len)
Definition kmp_str.cpp:134
void __kmp_str_buf_catbuf(kmp_str_buf_t *dest, const kmp_str_buf_t *src)
Definition kmp_str.cpp:146
int __kmp_str_buf_print(kmp_str_buf_t *buffer, char const *format,...)
Definition kmp_str.cpp:221
int __kmp_str_match_false(char const *data)
Definition kmp_str.cpp:543
void __kmp_str_free(char **str)
Definition kmp_str.cpp:494
struct kmp_str_fname kmp_str_fname_t
Definition kmp_str.h:73
struct kmp_str_buf kmp_str_buf_t
Definition kmp_str.h:39
#define __kmp_str_buf_init(b)
Definition kmp_str.h:41
unsigned int size
Definition kmp_str.h:35
char * str
Definition kmp_str.h:34
char * base
Definition kmp_str.h:71
char * path
Definition kmp_str.h:69