Skip to content
ITER_DATA_TYPE

ITER_DATA_TYPE

ITER_DATA_TYPE

Description

Get data type of Iter elements

Parameters

Name Direction Description
mi in Iter object

Usage example (Cross-references)

Usage examples (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
Last updated on