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

StrIterRemainingLength

StrIterRemainingLength Description Get remaining elements left to read

Read More

IterInitAlignedT

IterInitAlignedT Description Initialize Iter with custom alignment to iterate in forward direction.

Read More

IterInitRevAlignedT

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

Read More