Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/BLI_string.h')
-rw-r--r--source/blender/blenlib/BLI_string.h160
1 files changed, 94 insertions, 66 deletions
diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h
index 09844d75c93..47ff0a15b01 100644
--- a/source/blender/blenlib/BLI_string.h
+++ b/source/blender/blenlib/BLI_string.h
@@ -34,47 +34,76 @@ extern "C" {
#include "BLI_compiler_attrs.h"
#include "BLI_utildefines_variadic.h"
-char *BLI_strdupn(const char *str, const size_t len) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+char *BLI_strdupn(const char *str, const size_t len) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL();
char *BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC;
-char *BLI_strdupcat(const char *__restrict str1, const char *__restrict str2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC;
+char *BLI_strdupcat(const char *__restrict str1,
+ const char *__restrict str2) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL() ATTR_MALLOC;
-char *BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL();
+char *BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy)
+ ATTR_NONNULL();
-char *BLI_strncpy_ensure_pad(char *__restrict dst, const char *__restrict src, const char pad, size_t maxncpy) ATTR_NONNULL();
+char *BLI_strncpy_ensure_pad(char *__restrict dst,
+ const char *__restrict src,
+ const char pad,
+ size_t maxncpy) ATTR_NONNULL();
-size_t BLI_strncpy_rlen(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+size_t BLI_strncpy_rlen(char *__restrict dst,
+ const char *__restrict src,
+ const size_t maxncpy) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
-size_t BLI_strcpy_rlen(char *__restrict dst, const char *__restrict src) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+size_t BLI_strcpy_rlen(char *__restrict dst, const char *__restrict src) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL();
-char *BLI_str_quoted_substrN(const char *__restrict str, const char *__restrict prefix) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC;
+char *BLI_str_quoted_substrN(const char *__restrict str,
+ const char *__restrict prefix) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL() ATTR_MALLOC;
-char *BLI_str_replaceN(const char *__restrict str, const char *__restrict substr_old, const char *__restrict substr_new) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC;
+char *BLI_str_replaceN(const char *__restrict str,
+ const char *__restrict substr_old,
+ const char *__restrict substr_new) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL() ATTR_MALLOC;
void BLI_str_replace_char(char *string, char src, char dst) ATTR_NONNULL();
-size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format, ...) ATTR_NONNULL(1, 3) ATTR_PRINTF_FORMAT(3, 4);
-size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format, ...) ATTR_NONNULL(1, 3) ATTR_PRINTF_FORMAT(3, 4);
+size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format, ...)
+ ATTR_NONNULL(1, 3) ATTR_PRINTF_FORMAT(3, 4);
+size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format, ...)
+ ATTR_NONNULL(1, 3) ATTR_PRINTF_FORMAT(3, 4);
-size_t BLI_vsnprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format, va_list arg) ATTR_PRINTF_FORMAT(3, 0);
-size_t BLI_vsnprintf_rlen(char *__restrict buffer, size_t maxncpy, const char *__restrict format, va_list arg) ATTR_PRINTF_FORMAT(3, 0);
+size_t BLI_vsnprintf(char *__restrict dst,
+ size_t maxncpy,
+ const char *__restrict format,
+ va_list arg) ATTR_PRINTF_FORMAT(3, 0);
+size_t BLI_vsnprintf_rlen(char *__restrict buffer,
+ size_t maxncpy,
+ const char *__restrict format,
+ va_list arg) ATTR_PRINTF_FORMAT(3, 0);
-char *BLI_sprintfN(const char *__restrict format, ...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1, 2);
+char *BLI_sprintfN(const char *__restrict format, ...) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1, 2);
-size_t BLI_strescape(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL();
+size_t BLI_strescape(char *__restrict dst, const char *__restrict src, const size_t maxncpy)
+ ATTR_NONNULL();
size_t BLI_str_format_int_grouped(char dst[16], int num) ATTR_NONNULL();
size_t BLI_str_format_uint64_grouped(char dst[16], uint64_t num) ATTR_NONNULL();
-void BLI_str_format_byte_unit(char dst[15], long long int size, const bool base_10) ATTR_NONNULL();
+void BLI_str_format_byte_unit(char dst[15], long long int size, const bool base_10) ATTR_NONNULL();
int BLI_strcaseeq(const char *a, const char *b) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
char *BLI_strcasestr(const char *s, const char *find) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
-char *BLI_strncasestr(const char *s, const char *find, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+char *BLI_strncasestr(const char *s, const char *find, size_t len) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL();
int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
-int BLI_strncasecmp(const char *s1, const char *s2, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+int BLI_strncasecmp(const char *s1, const char *s2, size_t len) ATTR_WARN_UNUSED_RESULT
+ ATTR_NONNULL();
int BLI_natstrcmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
-int BLI_strcmp_ignore_pad(const char *str1, const char *str2, const char pad) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+int BLI_strcmp_ignore_pad(const char *str1,
+ const char *str2,
+ const char pad) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
size_t BLI_strnlen(const char *str, const size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
@@ -83,39 +112,46 @@ void BLI_str_toupper_ascii(char *str, const size_t len) ATTR_NONNULL();
void BLI_str_rstrip(char *str) ATTR_NONNULL();
int BLI_str_rstrip_float_zero(char *str, const char pad) ATTR_NONNULL();
-int BLI_str_index_in_array_n(const char *__restrict str, const char **__restrict str_array, const int str_array_len) ATTR_NONNULL();
-int BLI_str_index_in_array(const char *__restrict str, const char **__restrict str_array) ATTR_NONNULL();
+int BLI_str_index_in_array_n(const char *__restrict str,
+ const char **__restrict str_array,
+ const int str_array_len) ATTR_NONNULL();
+int BLI_str_index_in_array(const char *__restrict str, const char **__restrict str_array)
+ ATTR_NONNULL();
bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL();
-bool BLI_strn_endswith(const char *__restrict str, const char *__restrict end, size_t length) ATTR_NONNULL();
-
-size_t BLI_str_partition(const char *str, const char delim[], const char **sep, const char **suf) ATTR_NONNULL();
-size_t BLI_str_rpartition(const char *str, const char delim[], const char **sep, const char **suf) ATTR_NONNULL();
-size_t BLI_str_partition_ex(
- const char *str, const char *end, const char delim[], const char **sep, const char **suf, const bool from_right)
- ATTR_NONNULL(1, 3, 4, 5);
-
-int BLI_string_find_split_words(
- const char *str, const size_t len,
- const char delim, int r_words[][2], int words_max)
- ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
+bool BLI_strn_endswith(const char *__restrict str, const char *__restrict end, size_t length)
+ ATTR_NONNULL();
+
+size_t BLI_str_partition(const char *str, const char delim[], const char **sep, const char **suf)
+ ATTR_NONNULL();
+size_t BLI_str_rpartition(const char *str, const char delim[], const char **sep, const char **suf)
+ ATTR_NONNULL();
+size_t BLI_str_partition_ex(const char *str,
+ const char *end,
+ const char delim[],
+ const char **sep,
+ const char **suf,
+ const bool from_right) ATTR_NONNULL(1, 3, 4, 5);
+
+int BLI_string_find_split_words(const char *str,
+ const size_t len,
+ const char delim,
+ int r_words[][2],
+ int words_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
/** \name String Copy/Format Macros
* Avoid repeating destination with `sizeof(..)`.
* \note `ARRAY_SIZE` allows pointers on some platforms.
* \{ */
-#define STRNCPY(dst, src) \
- BLI_strncpy(dst, src, ARRAY_SIZE(dst))
-#define STRNCPY_RLEN(dst, src) \
- BLI_strncpy_rlen(dst, src, ARRAY_SIZE(dst))
-#define SNPRINTF(dst, format, ...) \
- BLI_snprintf(dst, ARRAY_SIZE(dst), format, __VA_ARGS__)
+#define STRNCPY(dst, src) BLI_strncpy(dst, src, ARRAY_SIZE(dst))
+#define STRNCPY_RLEN(dst, src) BLI_strncpy_rlen(dst, src, ARRAY_SIZE(dst))
+#define SNPRINTF(dst, format, ...) BLI_snprintf(dst, ARRAY_SIZE(dst), format, __VA_ARGS__)
#define SNPRINTF_RLEN(dst, format, ...) \
- BLI_snprintf_rlen(dst, ARRAY_SIZE(dst), format, __VA_ARGS__)
+ BLI_snprintf_rlen(dst, ARRAY_SIZE(dst), format, __VA_ARGS__)
#define STR_CONCAT(dst, len, suffix) \
- len += BLI_strncpy_rlen(dst + len, suffix, ARRAY_SIZE(dst) - len)
+ len += BLI_strncpy_rlen(dst + len, suffix, ARRAY_SIZE(dst) - len)
#define STR_CONCATF(dst, len, format, ...) \
- len += BLI_snprintf_rlen(dst + len, ARRAY_SIZE(dst) - len, format, __VA_ARGS__)
+ len += BLI_snprintf_rlen(dst + len, ARRAY_SIZE(dst) - len, format, __VA_ARGS__)
/** \} */
/* -------------------------------------------------------------------- */
@@ -126,47 +162,39 @@ int BLI_string_find_split_words(
/* STR_ELEM#(v, ...): is the first arg equal any others? */
/* Internal helpers. */
-#define _VA_STR_ELEM2(v, a) \
- (strcmp(v, a) == 0)
-#define _VA_STR_ELEM3(v, a, b) \
- (_VA_STR_ELEM2(v, a) || ((v) == (b)))
-#define _VA_STR_ELEM4(v, a, b, c) \
- (_VA_STR_ELEM3(v, a, b) || ((v) == (c)))
-#define _VA_STR_ELEM5(v, a, b, c, d) \
- (_VA_STR_ELEM4(v, a, b, c) || ((v) == (d)))
-#define _VA_STR_ELEM6(v, a, b, c, d, e) \
- (_VA_STR_ELEM5(v, a, b, c, d) || ((v) == (e)))
-#define _VA_STR_ELEM7(v, a, b, c, d, e, f) \
- (_VA_STR_ELEM6(v, a, b, c, d, e) || ((v) == (f)))
-#define _VA_STR_ELEM8(v, a, b, c, d, e, f, g) \
- (_VA_STR_ELEM7(v, a, b, c, d, e, f) || ((v) == (g)))
+#define _VA_STR_ELEM2(v, a) (strcmp(v, a) == 0)
+#define _VA_STR_ELEM3(v, a, b) (_VA_STR_ELEM2(v, a) || ((v) == (b)))
+#define _VA_STR_ELEM4(v, a, b, c) (_VA_STR_ELEM3(v, a, b) || ((v) == (c)))
+#define _VA_STR_ELEM5(v, a, b, c, d) (_VA_STR_ELEM4(v, a, b, c) || ((v) == (d)))
+#define _VA_STR_ELEM6(v, a, b, c, d, e) (_VA_STR_ELEM5(v, a, b, c, d) || ((v) == (e)))
+#define _VA_STR_ELEM7(v, a, b, c, d, e, f) (_VA_STR_ELEM6(v, a, b, c, d, e) || ((v) == (f)))
+#define _VA_STR_ELEM8(v, a, b, c, d, e, f, g) (_VA_STR_ELEM7(v, a, b, c, d, e, f) || ((v) == (g)))
#define _VA_STR_ELEM9(v, a, b, c, d, e, f, g, h) \
- (_VA_STR_ELEM8(v, a, b, c, d, e, f, g) || ((v) == (h)))
+ (_VA_STR_ELEM8(v, a, b, c, d, e, f, g) || ((v) == (h)))
#define _VA_STR_ELEM10(v, a, b, c, d, e, f, g, h, i) \
- (_VA_STR_ELEM9(v, a, b, c, d, e, f, g, h) || ((v) == (i)))
+ (_VA_STR_ELEM9(v, a, b, c, d, e, f, g, h) || ((v) == (i)))
#define _VA_STR_ELEM11(v, a, b, c, d, e, f, g, h, i, j) \
- (_VA_STR_ELEM10(v, a, b, c, d, e, f, g, h, i) || ((v) == (j)))
+ (_VA_STR_ELEM10(v, a, b, c, d, e, f, g, h, i) || ((v) == (j)))
#define _VA_STR_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k) \
- (_VA_STR_ELEM11(v, a, b, c, d, e, f, g, h, i, j) || ((v) == (k)))
+ (_VA_STR_ELEM11(v, a, b, c, d, e, f, g, h, i, j) || ((v) == (k)))
#define _VA_STR_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l) \
- (_VA_STR_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k) || ((v) == (l)))
+ (_VA_STR_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k) || ((v) == (l)))
#define _VA_STR_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m) \
- (_VA_STR_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l) || ((v) == (m)))
+ (_VA_STR_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l) || ((v) == (m)))
#define _VA_STR_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n) \
- (_VA_STR_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m) || ((v) == (n)))
+ (_VA_STR_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m) || ((v) == (n)))
#define _VA_STR_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) \
- (_VA_STR_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n) || ((v) == (o)))
+ (_VA_STR_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n) || ((v) == (o)))
#define _VA_STR_ELEM17(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) \
- (_VA_STR_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) || ((v) == (p)))
+ (_VA_STR_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) || ((v) == (p)))
/* reusable STR_ELEM macro */
#define STR_ELEM(...) VA_NARGS_CALL_OVERLOAD(_VA_STR_ELEM, __VA_ARGS__)
/** \} */
-
#ifdef __cplusplus
}
#endif
-#endif /* __BLI_STRING_H__ */
+#endif /* __BLI_STRING_H__ */