:Set command
This commit is contained in:
@@ -384,8 +384,12 @@ API Int GetSize(Array<String16> array) {
|
||||
return result;
|
||||
}
|
||||
|
||||
API String16 SkipNumberEx(String16 *string) {
|
||||
API String16 SkipIntEx(String16 *string) {
|
||||
String16 col = {string->data, 0};
|
||||
if (At(*string, 0) == '-') {
|
||||
col.len += 1;
|
||||
*string = Skip(*string, 1);
|
||||
}
|
||||
for (int64_t i = 0; i < string->len; i += 1) {
|
||||
if (IsDigit(string->data[i])) {
|
||||
col.len += 1;
|
||||
@@ -397,15 +401,41 @@ API String16 SkipNumberEx(String16 *string) {
|
||||
return col;
|
||||
}
|
||||
|
||||
API Int SkipNumber(String16 *string) {
|
||||
String16 col = SkipNumberEx(string);
|
||||
if (col.len == 0) return -1;
|
||||
API Int SkipInt(String16 *string) {
|
||||
String16 col = SkipIntEx(string);
|
||||
if (col.len == 0) return 0;
|
||||
Scratch scratch;
|
||||
String num_string = ToString(scratch, col);
|
||||
Int result = strtoll(num_string.data, NULL, 10);
|
||||
return result;
|
||||
}
|
||||
|
||||
API String16 SkipFloatEx(String16 *string) {
|
||||
String16 col = {string->data, 0};
|
||||
if (At(*string, 0) == '-') {
|
||||
col.len += 1;
|
||||
*string = Skip(*string, 1);
|
||||
}
|
||||
for (int64_t i = 0; i < string->len; i += 1) {
|
||||
if (IsDigit(string->data[i]) || string->data[i] == u'.') {
|
||||
col.len += 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
*string = Skip(*string, col.len);
|
||||
return col;
|
||||
}
|
||||
|
||||
API Float SkipFloat(String16 *string) {
|
||||
String16 col = SkipFloatEx(string);
|
||||
if (col.len == 0) return 0;
|
||||
Scratch scratch;
|
||||
String num_string = ToString(scratch, col);
|
||||
Float result = strtod(num_string.data, NULL);
|
||||
return result;
|
||||
}
|
||||
|
||||
API String16 SkipUntil(String16 *string, String16 str) {
|
||||
String16 begin = *string;
|
||||
begin.len = 0;
|
||||
@@ -419,14 +449,31 @@ API String16 SkipUntil(String16 *string, String16 str) {
|
||||
|
||||
API String16 SkipWhitespace(String16 *string) {
|
||||
String16 begin = {string->data, 0};
|
||||
for (Int i = 0; i < string->len; i += 1) {
|
||||
if (!IsWhitespace(string->data[i])) break;
|
||||
for (;string->len;) {
|
||||
if (!IsWhitespace(At(*string, 0))) {
|
||||
break;
|
||||
}
|
||||
*string = Skip(*string, 1);
|
||||
begin.len += 1;
|
||||
}
|
||||
return begin;
|
||||
}
|
||||
|
||||
String16 SkipIdent(String16 *string) {
|
||||
String16 begin = {string->data, 0};
|
||||
if (IsIdent(At(*string, 0))) {
|
||||
for (;string->len;) {
|
||||
char16_t c = At(*string, 0);
|
||||
if (!IsIdent(c) && !IsDigit(c)) {
|
||||
break;
|
||||
}
|
||||
*string = Skip(*string, 1);
|
||||
begin.len += 1;
|
||||
}
|
||||
}
|
||||
return begin;
|
||||
}
|
||||
|
||||
API bool Chop(String16 *string, String16 ending) {
|
||||
if (EndsWith(*string, ending)) {
|
||||
*string = Chop(*string, ending.len);
|
||||
|
||||
Reference in New Issue
Block a user