ITER_DATA_TYPE

Table of Contents

ITER_DATA_TYPE

Description

Get data type of Iter elements

Parameters

NameDirectionDescription
miinIter object

Usage example (Cross-references)

    /// TAGS: Memory, Size, Iter
    ///
    #define IterSize(mi) IterLength(mi) * ALIGN_UP(sizeof(ITER_DATA_TYPE(mi)), (mi)->alignment)
    
    ///
    /// 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)) :                   \
    NULL_ITER_DATA(mi))
    (IterRemainingLength(mi) ?                                                                                         \
    (ITER_DATA_TYPE(mi) *)(((u64)(mi)->data) +                                                                    \
    (mi)->pos * ALIGN_UP(sizeof(ITER_DATA_TYPE(mi)), (mi)->alignment)) :                   \
    NULL_ITER_DATA(mi))
    #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
    ///
    /// TAGS: Utility, NullValue, Iter
    #define NULL_ITER_DATA(mi) (ITER_DATA_TYPE(mi) *)0
    
    #endif // MISRA_STD_UTILITY_ITER_TYPE_H

Share :

Related Posts

IterMove

IterMove Description Move current reading position of Iterator.

Read More

IterPos

IterPos Description If there’s space left to read in memory region we’re iterating over, then return a pointer to current read position.

Read More

IterPeekAt

IterPeekAt Description Peek (not read) object from memory iter, given that - Provided Iter object is not NULL_ITER(mi). - There’s space left to read. - Length of object data is being read into is an integral multiple of size of data type this memory iter is iterating over. This is different from reading because it does not change current read position. This is good for making some decisions over data without changing the read position.

Read More