update
This commit is contained in:
36
core.c
36
core.c
@@ -176,6 +176,15 @@ string strSlice(string str, size_t start, size_t stop) {
|
||||
};
|
||||
}
|
||||
|
||||
string strListJoin(Arena *arena, StringList list) {
|
||||
string result = PushString(arena, 0);
|
||||
for (EachEl(list, string, item)) {
|
||||
PushString(arena, item->length);
|
||||
memcpy(result.str + result.length, item->str, item->length);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
string strSliceCStr(char *data, size_t start, size_t stop) {
|
||||
return (string){
|
||||
data + start,
|
||||
@@ -183,7 +192,7 @@ string strSliceCStr(char *data, size_t start, size_t stop) {
|
||||
};
|
||||
}
|
||||
|
||||
bool stringContains(string str, char c) {
|
||||
bool strContainsChar(string str, char c) {
|
||||
for (size_t i = 0; i < str.length; i++) {
|
||||
if (str.str[i] == c) {
|
||||
return true;
|
||||
@@ -192,9 +201,24 @@ bool stringContains(string str, char c) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool strContains(string str, string search) {
|
||||
if (search.length == 0) return true;
|
||||
if (search.length <= str.length) {
|
||||
for (size_t i = 0; i <= str.length - search.length; i++) {
|
||||
for (size_t j = 0; j < search.length; j++) {
|
||||
if (str.str[i + j] != search.str[j]) {
|
||||
break;
|
||||
}
|
||||
if (j == search.length - 1) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
string NUMERIC_CHARS = s("0123456789");
|
||||
inline bool isNumeric(char c) {
|
||||
return stringContains(NUMERIC_CHARS, c);
|
||||
inline function bool isNumeric(char c) {
|
||||
return strContainsChar(NUMERIC_CHARS, c);
|
||||
}
|
||||
|
||||
StringList strSplit(Arena *arena, string splitStr, string inputStr) {
|
||||
@@ -288,7 +312,7 @@ Real32Result parsePositiveReal32(string str) {
|
||||
StringList getArgs(Arena *arena, int argc, char **argv) {
|
||||
StringList args = PushList(arena, StringList, (size_t)argc - 1);
|
||||
for (int i = 1; i < argc; i++) {
|
||||
AppendList(&args, strFromCString(arena, argv[i]));
|
||||
ListAppend(args, strFromCString(arena, argv[i]));
|
||||
}
|
||||
return args;
|
||||
}
|
||||
@@ -365,6 +389,10 @@ function void printlnStdout(const char *fmt, ...) {
|
||||
void (*print)(const char *fmt, ...) = &printStdout;
|
||||
void (*println)(const char *fmt, ...) = &printlnStdout;
|
||||
|
||||
void printStr(string str) {
|
||||
print("%S\n", str);
|
||||
}
|
||||
|
||||
void setStdout() {
|
||||
print = &printStdout;
|
||||
println = &printlnStdout;
|
||||
|
||||
Reference in New Issue
Block a user