5 #include <ctu_std_api.h>
411 #define STR_WHITESPACE " \t\r\v\n\f"
CT_NODISCARD STA_WRITES(size) void *dst
#define RET_NOTNULL
annotate the return value as not being null
#define CT_PUREFN
mark a function as pure, always returns the same value for the same arguments
#define CT_NODISCARD
mark a function as returning a value that must be used
#define IN_NOTNULL
annotate a parameter as not being null
#define STA_FORMAT_STRING
mark a function parameter as a printf format string
#define STA_READS(size)
annotate a parameter as reading expr elements
#define RET_INSPECT
annotate the return value as needing to be inspected this is the same as CT_NODISCARD but implies tha...
#define CT_CONSTFN
mark a function as const, has no side effects and always returns the same value for the same argument...
#define IN_STRING
annotate a parameter as being a null terminated string
#define CT_NOALIAS
mark a function as only modifying pointers passed to it the same as CT_CONSTFN but allowed to modify/...
#define STA_UPDATES(size)
CT_NODISCARD CT_STD_API char * str_noext(const char *path, arena_t *arena)
remove the last file extension from a path
CT_PUREFN CT_STD_API size_t str_rfind_any(const char *str, const char *letters)
find the first instance of a set of characters in a string
CT_NODISCARD CT_PUREFN CT_STD_API bool str_endswithn(STA_READS(len) const char *str, size_t len, const char *suffix)
check if a string ends with a substring
CT_NODISCARD CT_STD_API char * str_replace(const char *str, const char *search, const char *repl, arena_t *arena)
replace all instances of a substring in a string
CT_STD_API void str_replace_inplace(INOUT_NOTNULL text_t *text, const char *search, const char *repl)
replace all instances of a substring in a string in place
CT_NODISCARD CT_STD_API bool text_view_equal(text_view_t lhs, text_view_t rhs)
check if two strings are equal
CT_NODISCARD CT_PUREFN CT_STD_API bool str_endswith(const char *str, const char *suffix)
check if a string ends with a substring
CT_PUREFN CT_STD_API size_t str_find(const char *str, const char *sub)
find the first instance of a substring in a string
CT_NODISCARD CT_STD_API char * str_normalizen(text_view_t text, arena_t *arena)
turn a string with length into a C string literal
CT_STD_API size_t str_sprintf(STA_WRITES(len) char *str, size_t len, STA_FORMAT_STRING const char *fmt,...)
format a string with printf-like syntax
CT_NODISCARD STA_FORMAT_STRING const char CT_NODISCARD CT_STD_API text_t text_vformat(arena_t *arena, const char *fmt, va_list args)
format a string
CT_STD_API void str_sort_inplace(STA_UPDATES(len) char *str, size_t len)
sort a strings contents in place
CT_NODISCARD CT_STD_API char * str_repeat(const char *str, size_t times, arena_t *arena)
repeat a string
CT_NODISCARD CT_STD_API char * str_upper(const char *str, arena_t *arena)
uppercase an ascii string
CT_STD_API size_t str_normalize_into(STA_WRITES(len) char *dst, size_t dstlen, STA_READS(srclen) const char *src, size_t srclen)
normalize a string into a buffer
CT_NODISCARD CT_STD_API char * str_filename(const char *path, arena_t *arena)
get the filename from a path
CT_NODISCARD CT_PUREFN CT_STD_API bool char_is_any_of(char c, const char *chars)
check if a character is any of a set of characters
CT_NODISCARD CT_STD_API char * str_ext(const char *path, arena_t *arena)
get the last file extension from a path
CT_NODISCARD CT_STD_API vector_t * str_split(const char *str, const char *sep, arena_t *arena)
split a string into a vector by a separator
CT_NODISCARD CT_STD_API char * str_normalize(const char *str, arena_t *arena)
turn a string into a C string literal
CT_NODISCARD CT_STD_API char * str_join(const char *sep, const vector_t *parts, arena_t *arena)
join strings
CT_NODISCARD STA_FORMAT_STRING const char * fmt
CT_STD_API void str_trim_back_inplace(INOUT_NOTNULL text_t *text, const char *chars)
trim chars from the back of a string in place
CT_STD_API size_t str_vsprintf(STA_WRITES(len) char *str, size_t len, const char *fmt, va_list args)
format a string with printf-like syntax
CT_NODISCARD CT_STD_API char * str_directory(const char *path, arena_t *arena)
get the directory segment of a path
CT_NODISCARD CT_STD_API char * str_replace_many(const char *str, const map_t *repl, arena_t *arena)
replace all instances of a each substring in a string with provided replacement
CT_NODISCARD CT_NOALIAS CT_STD_API char * str_erase(STA_READS(len) char *str, size_t len, const char *letters)
remove all instances of letters from str
CT_NODISCARD CT_STD_API const char * str_common_prefix(const vector_t *args, arena_t *arena)
find the longest common prefix of a vector of paths
CT_PUREFN CT_STD_API size_t str_rfind(const char *str, const char *sub)
find the last instance of a substring in a string
CT_NODISCARD CT_STD_API char * str_lower(const char *str, arena_t *arena)
lowercase an ascii string this allocates a new string in the provided arena
CT_NODISCARD CT_PUREFN CT_STD_API bool str_contains(const char *str, const char *search)
check if a string contains a substring
CT_NODISCARD STA_PRINTF(2, 3) CT_STD_API text_t text_format(arena_t *arena
format a string
CT_NODISCARD CT_STD_API char * str_basename(const char *path, arena_t *arena)
get the filename from a path
CT_NODISCARD STA_FORMAT_STRING const char CT_NODISCARD CT_STD_API char * str_vformat(arena_t *arena, const char *fmt, va_list args)
format a string
CT_NODISCARD CT_CONSTFN CT_STD_API char str_tolower(char c)
get the lowercase version of a character
CT_NODISCARD CT_CONSTFN CT_STD_API char str_toupper(char c)
get the uppercase version of a character
CT_NODISCARD CT_PUREFN CT_STD_API bool str_startswith(const char *str, const char *prefix)
see if a string starts with a prefix
STA_DECL text_t text_format(arena_t *arena, const char *fmt,...)
STA_DECL char * str_format(arena_t *arena, const char *fmt,...)
arena_t * arena
the arena this map allocates from
a non-owning view of text
a generic vector of pointers