diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-01-19 17:33:44 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-01-19 17:33:44 +0500 |
commit | bd49bd525f4c6c6c15c4142bf42d1dd38be6fc16 (patch) | |
tree | 9e69f473c34b53e9e57d8af1873c39698bf5c80e /libs/pwyazh/strings.h |
initial commit
Diffstat (limited to 'libs/pwyazh/strings.h')
-rw-r--r-- | libs/pwyazh/strings.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/libs/pwyazh/strings.h b/libs/pwyazh/strings.h new file mode 100644 index 0000000..43ee7c8 --- /dev/null +++ b/libs/pwyazh/strings.h @@ -0,0 +1,103 @@ +#ifndef STRINGS_H +#define STRINGS_H + +#define str8_lit(s) str8((U8 *)(s), sizeof(s)-1) + +String8 +str8(U8 *str, U64 size) +{ + String8 result = { str, size }; + return(result); +} + +B32 +str8_char_is_slash(U8 c) +{ + return((c == '/') || (c == '\\')); +} + +U8 +str8_char_uppercase(U8 c) +{ + if (c >= 'a' && c <= 'z') { + c += 'A'-'a'; + } + return(c); +} + +U8 +str8_char_lowercase(U8 c) +{ + if (c >= 'A' && c <= 'Z') { + c -= 'A'-'a'; + } + return(c); +} + +String8 +str8_range(U8 *first, U8 *second) +{ + String8 result = { first, (U64)(second-first) }; + return(result); +} + +String8 +str8_cstring(U8 *cstr) +{ + U8 *ptr = cstr; + for (; *ptr != 0; ++ptr); + String8 result = str8_range(cstr, ptr); + return(result); +} + +String8 +str8_prefix(String8 str, U64 size) +{ + U64 clamped = ClampTop(size, str.size); + String8 result = { str.str, clamped }; + return(result); +} + +String8 +str8_chop(String8 str, U64 amount) +{ + U64 clamped = ClampTop(amount, str.size); + U64 remaining = str.size-clamped; + String8 result = { str.str, remaining }; + return(result); +} + +String8 +str8_posfix(String8 str, U64 size) +{ + U64 clamped = ClampTop(size, str.size); + U64 skip = str.size-clamped; + String8 result = { str.str+skip, clamped }; + return(result); +} + +String8 +str8_skip(String8 str, U64 amount) +{ + U64 clamped = ClampTop(amount, str.size); + String8 result = { str.str+clamped, str.size-clamped }; + return(result); +} + +String8 +str8_substr_pos(String8 str, U64 start, U64 end) +{ + U64 start_clamped = ClampTop(start, str.size); + U64 end_clamped = ClampTop(end, str.size); + String8 result = { str.str+start_clamped, end_clamped-start_clamped }; + return(result); +} + +String8 +str8_substr_size(String8 str, U64 start, U64 size) +{ + String8 result = str8_substr_pos(str, start, start+size); + return(result); +} + +#endif /* STRINGS_H */ |