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: Utility, NullValue, Iter
    #define NULL_ITER_DATA(mi) (ITER_DATA_TYPE(mi) *)0
    
    #endif // MISRA_STD_UTILITY_ITER_TYPE_H
    /// 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

Share :

Related Posts

StrIterPos

StrIterPos Description Get current read position pointer

Read More

StrIterRemainingLength

StrIterRemainingLength Description Get remaining elements left to read

Read More

StrIterPeek

StrIterPeek Description Peek current character without advancing

Read More