diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 09:47:21 -0800 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2021-12-05 10:54:20 -0800 |
commit | 521d01e8ad87e931af3e9a763cc84a6cf7fe5ee3 (patch) | |
tree | f544119060c3eefc7b0fec6cff1740a362541213 /include/base/string.h | |
parent | 158d9b84f14457136379f42e7c071eb79d87ee6b (diff) |
Feat: basic string and memory functions
Continue filling out the basic standard lib functions.
Included prototypes of the str* and mem* families.
Plan to add e(str|mem) and n(str|mem) variants as well.
Diffstat (limited to 'include/base/string.h')
-rw-r--r-- | include/base/string.h | 79 |
1 files changed, 49 insertions, 30 deletions
diff --git a/include/base/string.h b/include/base/string.h index 0800f60..a6d6612 100644 --- a/include/base/string.h +++ b/include/base/string.h @@ -1,34 +1,53 @@ #pragma once -typedef byte* string; +typedef char* string; + +/* basic c string (nul terminated) functions */ +intptr str·len(char *s); + +char *str·findc(char *s, int c); +char *str·nfindc(char *s, intptr n, int c); +char *str·efindc(char *s, char *e, int c); + +char *str·find(char *s, char *sub); +char *str·nfind(char *s, intptr n, char *sub); +char *str·efind(char *s, char *e, char *sub); + +char *str·copy(char *dst, char *src); +char *str·ncopy(char *dst, intptr n, char *src); +char *str·ecopy(char *dst, char *end, char *src); + +char *str·append(char *dst, char *src); +char *str·nappend(char *dst, intptr n, char *src); +char *str·eappend(char *dst, char *end, char *src); + +int str·compare(char *, char *); +int str·ncompare(char *, intptr len, char *); +int str·ecompare(char *, char *end, char *); + +int str·atoi(char *s); +char *str·itoa(char *s, int x); /* augmented string functions */ -string str·makecap(const char *s, vlong len, vlong cap); -string str·makelen(const char *s, vlong len); -string str·make(const char *s); -string str·makef(const char *fmt, ...); -void str·free(string s); -int str·len(const string s); -int str·cap(const string s); -void str·clear(string *s); -void str·grow(string *s, vlong delta); -void str·fit(string *s); -int str·appendlen(string *s, vlong len, const char *b); -int str·append(string *s, const char *b); -int str·appendf(string *s, const char *fmt, ...); -int str·appendbyte(string *s, const char b); -bool str·equals(const string s, const string t); -int str·find(string s, const char* substr); -void str·lower(string s); -void str·upper(string s); -int str·read(string s, int size, int n, void *buf); -void str·replace(string s, const byte* from, const byte* to); -string* str·split(string s, const byte* tok); -string str·join(vlong len, byte** fields, const byte* sep); - -/* raw C string functions */ -char *str·copyn(char *dst, char *src, int n); - -/* string parsing */ -int str·atoi(char *s); -char *str·itoa(char *s, int x); +string string·makecap(char *s, vlong len, vlong cap); +string string·makelen(char *s, vlong len); +string string·make(char *s); +string string·makef(char *fmt, ...); +void string·free(string s); +int string·len(string s); +int string·cap(string s); +void string·clear(string *s); +void string·grow(string *s, vlong delta); +void string·fit(string *s); +int string·appendlen(string *s, vlong len, char *b); +int string·append(string *s, char *b); +int string·appendf(string *s, char *fmt, ...); +int string·appendbyte(string *s, char b); +bool string·equals(string s, string t); +int string·find(string s, char *substr); +void string·lower(string s); +void string·upper(string s); +int string·read(string s, int size, int n, void *buf); +void string·replace(string s, byte* from, byte* to); +string* string·split(string s, byte* tok); +string string·join(vlong len, byte** fields, byte* sep); |