Skip to content

IterMustNext

Description

Aborting variant of IterNext. See that macro for parameter semantics and success-state effects.

Success

Returns to the caller; the underlying IterNext succeeded.

Failure

Does not return - aborts via LOG_FATAL when the iterator is already exhausted.

Usage example (Cross-references)

Usage examples (Cross-references)
    /// TAGS: StrIter, Next, Must, Alias
    ///
    #define StrIterMustNext(si) IterMustNext((si))
    
    ///
        // proves there is at least one more byte to consume (the NUL).
        if (IterIndex(cur) < IterLength(cur))
            IterMustNext(cur); // empty terminator
    
        while (IterIndex(cur) < IterLength(cur) && *IterDataAt(cur, IterIndex(cur)) != 0) {
        // include_directories terminator above.
        if (IterIndex(cur) < IterLength(cur))
            IterMustNext(cur); // empty terminator
        return true;
    }
        // terminator byte left to consume.
        if (IterIndex(&cur) < IterLength(&cur))
            IterMustNext(&cur); // empty terminator
    
        // file_names
        u8       v;
        IterRead(&it, &v);
        IterMustNext(&it);
        return true;
    }
Last updated on