IterLength

Table of Contents

IterLength

Description

Get total length of this Iter object

Success

If provided Iter object is not NULL_ITER(mi) then returns size in bytes of memory region this Iter is iterating over.

Failure

If provided Iter is NULL_ITER(mi) then returns 0

Usage example (Cross-references)

    size remaining_length_iter(GenericIter *mi) {
    if ((mi)->dir == 1) {
    if ((mi)->pos < IterLength(mi)) {
    return IterLength(mi) - (mi)->pos;
    } else {
    if ((mi)->dir == 1) {
    if ((mi)->pos < IterLength(mi)) {
    return IterLength(mi) - (mi)->pos;
    } else {
    return 0;
    }
    } else if ((mi)->dir == -1) {
    if ((mi)->pos < IterLength(mi)) {
    return (mi)->pos + 1;
    } else {
    ///
    /// TAGS: StrIter, Length, Query, Iter
    #define StrIterLength(mi) IterLength(mi)
    
    ///
    #define IterMove(mi, n)                                                                                                \
    do {                                                                                                               \
    if (IterRemainingLength(mi) - (mi)->dir * (n) <= IterLength(mi))                                               \
    (mi)->pos += (mi)->dir * (n);                                                                              \
    } while (0)
    /// TAGS: Memory, Size, Iter
    ///
    #define IterSize(mi) IterLength(mi) * ALIGN_UP(sizeof(ITER_DATA_TYPE(mi)), (mi)->alignment)
    
    ///

Share :

Related Posts

IterPrev

IterPrev Description Move to previous element (wrapper for IterMove)

Read More

IterInitRevAlignedT

IterInitRevAlignedT Description Initialize Iter with custom alignment to iterate in backward direction.

Read More

IterInitRevAligned

IterInitRevAligned Description Initialize Iter with custom alignment to iterate in backward direction.

Read More