StrIterRemainingLength
StrIterRemainingLength
Description
Get remaining elements left to read
Parameters
| Name | Direction | Description |
|---|---|---|
mi |
in | StrIter object |
Success
Returns remaining element count
Failure
Returns 0 for invalid iterators
Usage example (Cross-references)
Usage examples (Cross-references)
- In
KvConfig.c:153:
StrIter KvConfigSkipWhitespace(StrIter si) {
while (StrIterRemainingLength(&si) && kvconfig_is_space(StrIterPeek(&si))) {
StrIterNext(&si);
}- In
KvConfig.c:161:
StrIter KvConfigSkipLine(StrIter si) {
while (StrIterRemainingLength(&si) && !kvconfig_is_line_end(StrIterPeek(&si))) {
StrIterNext(&si);
}- In
KvConfig.c:178:
si = KvConfigSkipWhitespace(si);
while (StrIterRemainingLength(&si)) {
char c = StrIterPeek(&si);- In
KvConfig.c:209:
si = KvConfigSkipWhitespace(si);
if (!StrIterRemainingLength(&si) || kvconfig_is_line_end(StrIterPeek(&si)) ||
kvconfig_is_comment_start(StrIterPeek(&si))) {
return si;- In
KvConfig.c:218:
StrIterNext(&si);
while (StrIterRemainingLength(&si)) {
char c = StrIterPeek(&si);- In
KvConfig.c:228:
if (c == '\\') {
StrIterNext(&si);
if (!StrIterRemainingLength(&si)) {
LOG_ERROR("Unexpected end of quoted config value");
StrClear(value);- In
KvConfig.c:268:
}
while (StrIterRemainingLength(&si) && !kvconfig_is_line_end(StrIterPeek(&si))) {
char c = StrIterPeek(&si);- In
KvConfig.c:352:
ValidateMap(cfg);
while (StrIterRemainingLength(&si)) {
Str key = StrInit();
Str value = StrInit();- In
KvConfig.c:357:
StrIter read_si;
while (StrIterRemainingLength(&si)) {
char c = StrIterPeek(&si);- In
KvConfig.c:376:
}
if (!StrIterRemainingLength(&si)) {
break;
}- In
JSON.c:7:
static StrIter JSkipObject(StrIter si) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:90:
static StrIter JSkipArray(StrIter si) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:146:
StrIter JSkipWhitespace(StrIter si) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:150:
}
while (StrIterRemainingLength(&si) && StrIterPeek(&si)) {
switch (StrIterPeek(&si)) {
case ' ' :- In
JSON.c:167:
StrIter JReadString(StrIter si, Str *str) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:180:
// string start
if (StrIterRemainingLength(&si) && StrIterPeek(&si) == '"') {
StrIterNext(&si);- In
JSON.c:184:
// while a printable character
while (StrIterRemainingLength(&si) && StrIterPeek(&si)) {
// three cases
// - end of string (return)
- In
JSON.c:198:
case '\\' :
StrIterNext(&si);
if (!StrIterRemainingLength(&si)) {
LOG_ERROR("Unexpected end of string.");
StrClear(str);- In
JSON.c:275:
StrIter JReadNumber(StrIter si, Number *num) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:299:
bool is_parsing = true;
while (is_parsing && StrIterRemainingLength(&si) && StrIterPeek(&si)) {
switch (StrIterPeek(&si)) {
case 'E' :- In
JSON.c:403:
StrIter JReadInteger(StrIter si, i64 *val) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:432:
StrIter JReadFloat(StrIter si, f64 *val) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:460:
StrIter JReadBool(StrIter si, bool *b) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:472:
si = JSkipWhitespace(si);
if (StrIterRemainingLength(&si) >= 4) {
if (StrIterPeek(&si) == 't') {
const char *pos = StrIterPos(&si);- In
JSON.c:484:
}
if (StrIterRemainingLength(&si) >= 5) {
if (StrIterPeek(&si) == 'f') {
const char *pos = StrIterPos(&si);- In
JSON.c:509:
StrIter JReadNull(StrIter si, bool *is_null) {
if (!StrIterRemainingLength(&si)) {
return si;
}- In
JSON.c:522:
*is_null = false;
if (StrIterRemainingLength(&si) >= 4) {
if (StrIterPeek(&si) == 'n') {
const char *pos = StrIterPos(&si);- In
JSON.c:545:
StrIter JSkipValue(StrIter si) {
if (!StrIterRemainingLength(&si)) {
return si;
} bool success = true;
if (!StrIterRemainingLength(&si)) {
WriteFmt("[DEBUG] Remaining length check failed: expected > 0, got {}\n", StrIterRemainingLength(&si));
success = false;
if (!StrIterRemainingLength(&si)) {
WriteFmt("[DEBUG] Remaining length check failed: expected > 0, got {}\n", StrIterRemainingLength(&si));
success = false;
}- In
JSON.h:408:
#define JR_ARR(si, reader) \
do { \
if (!StrIterRemainingLength(&si)) { \
break; \
} \- In
JSON.h:500:
#define JR_OBJ(si, reader) \
do { \
if (!StrIterRemainingLength(&si)) { \
break; \
} \
Last updated on