Skip to content

ListPtrAt

Description

Pointer to data in node at given index in given list

Parameters

Name Direction Description
l in List to get data from.
idx in Index to get data at.

Success

Pointer to data from node in list at given index

Failure

NULL

Usage example (Cross-references)

Usage examples (Cross-references)
                uint16_t idx = extract_u16(data, offset, data_size);
                if (idx < ListLen(list)) {
                    volatile i32 *ptr = ListPtrAt(list, idx);
                    if (ptr) {
                        volatile i32 val = *ptr;
        ListPushBackR(&list, 40);
    
        bool result = ListPtrAt(&list, 0) && (*ListPtrAt(&list, 0) == 10);
        result      = result && ListPtrAt(&list, 3) && (*ListPtrAt(&list, 3) == 40);
        result      = result && (ListAt(&list, 1) == 20);
    
        bool result = ListPtrAt(&list, 0) && (*ListPtrAt(&list, 0) == 10);
        result      = result && ListPtrAt(&list, 3) && (*ListPtrAt(&list, 3) == 40);
        result      = result && (ListAt(&list, 1) == 20);
        result      = result && (ListAt(&list, 2) == 30);
    
    static bool test_list_ptr_at_empty_fails(void) {
        WriteFmt("Testing ListPtrAt on empty list\n");
    
        List(int) list = ListInit(get_test_alloc());
    
        List(int) list = ListInit(get_test_alloc());
        ListPtrAt(&list, 0);
    
        return false;
    
    static bool test_list_ptr_at_out_of_bounds_fails(void) {
        WriteFmt("Testing ListPtrAt out of bounds\n");
    
        List(int) list = ListInit(get_test_alloc());
        List(int) list = ListInit(get_test_alloc());
        ListPushBackR(&list, 10);
        ListPtrAt(&list, 1);
    
        return false;
    
    #ifdef __cplusplus
    #    define ListAt(l, idx) (ListPtrAt((l), (idx)) ? *ListPtrAt((l), (idx)) : (LIST_DATA_TYPE(l) {0}))
    #else
    ///
    /// TAGS: List, Access, API
    ///
    #    define ListAt(l, idx) (ListPtrAt((l), (idx)) ? *ListPtrAt((l), (idx)) : ((LIST_DATA_TYPE(l)) {0}))
    #endif
Last updated on