IterRemainingLength

Table of Contents

IterRemainingLength

Description

Get remaining length left to read this memory iterator.

Success

If provided Iter object is not NULL_ITER(mi) then remaining size left to read in memory region is returned.

Failure

If provided Iter is NULL_ITER(mi) then returns 0

Usage example (Cross-references)

    ///
    /// TAGS: StrIter, Length, Query, Iter
    #define StrIterRemainingLength(mi) IterRemainingLength(mi)
    
    ///
    #define IterMove(mi, n)                                                                                                \
    do {                                                                                                               \
    if (IterRemainingLength(mi) - (mi)->dir * (n) <= IterLength(mi))                                               \
    (mi)->pos += (mi)->dir * (n);                                                                              \
    } while (0)
    /// TAGS: Memory, Iter, Size
    ///
    #define IterRemainingSize(mi) IterRemainingLength(mi) * ALIGN_UP(sizeof(ITER_DATA_TYPE(mi)), (mi)->alignment)
    
    ///
    ///
    #define IterPos(mi)                                                                                                    \
    (IterRemainingLength(mi) ?                                                                                         \
    (ITER_DATA_TYPE(mi) *)(((u64)(mi)->data) +                                                                    \
    (mi)->pos * ALIGN_UP(sizeof(ITER_DATA_TYPE(mi)), (mi)->alignment)) :                   \
    ///
    #define IterRead(mi)                                                                                                   \
    (IterRemainingLength(mi) ? (((mi)->pos = (mi)->pos + (mi)->dir), (mi)->data[(mi)->pos - (mi)->dir]) :              \
    (ITER_DATA_TYPE(mi)) {0})
    ///
    #define IterPeekAt(mi, n)                                                                                              \
    (IterRemainingLength(mi) > (n) || (mi)->pos + (n) >= 0 ? (mi)->data[(mi)->pos + (n)] : (ITER_DATA_TYPE(mi)) {0})
    
    #endif // MISRA_STD_UTILITY_ITER_ACCESS_H

Share :

Related Posts

IterInitRevT

IterInitRevT Description Initialize default Iter object to iterate in backward direction.

Read More

IterPrev

IterPrev Description Move to previous element (wrapper for IterMove)

Read More

IterMove

IterMove Description Move current reading position of Iterator.

Read More