LCOV - code coverage report
Current view: top level - u8stream/include/u8arena - universal_arena_list.inl (source / functions) Coverage Total Hit
Test: crystal-facet-uml_v1.63.2_covts Lines: 100.0 % 29 29
Test Date: 2025-05-01 10:10:14 Functions: 100.0 % 5 5

            Line data    Source code
       1              : /* File: universal_arena_list.inl; Copyright and License: see below */
       2              : 
       3              : #include "u8/u8_log.h"
       4              : #include <stdint.h>
       5              : #include <assert.h>
       6              : 
       7            1 : static inline void universal_arena_list_init( universal_arena_list_t *this_,
       8              :                                               universal_memory_arena_t *allocator )
       9              : {
      10            1 :     assert( allocator != NULL );
      11            1 :     (*this_).begin = NULL;
      12            1 :     (*this_).allocator = allocator;
      13            1 : }
      14              : 
      15            1 : static inline void universal_arena_list_destroy( universal_arena_list_t *this_ )
      16              : {
      17            1 :     assert( (*this_).allocator != NULL );
      18            1 :     (*this_).allocator = NULL;
      19            1 :     (*this_).begin = NULL;
      20            1 : }
      21              : 
      22            4 : static inline u8_error_t universal_arena_list_append( universal_arena_list_t *this_, void* element )
      23              : {
      24            4 :     assert( (*this_).allocator != NULL );
      25            4 :     u8_error_t err = U8_ERROR_NONE;
      26              : 
      27              :     universal_arena_list_element_t *new_ele;
      28            4 :     err = universal_memory_arena_get_block( (*this_).allocator, sizeof(universal_arena_list_element_t), (void**)&new_ele );
      29            4 :     if ( err == U8_ERROR_NONE )
      30              :     {
      31            3 :         universal_arena_list_element_init( new_ele, element, NULL );
      32              : 
      33            3 :         if ( (*this_).begin == NULL )
      34              :         {
      35            1 :             (*this_).begin = new_ele;
      36              :         }
      37              :         else
      38              :         {
      39            2 :             universal_arena_list_element_t *find_last = (*this_).begin;
      40            5 :             for ( bool finished = false; ( ! finished ); )
      41              :             {
      42            3 :                 if ( universal_arena_list_element_get_next( find_last ) == NULL )
      43              :                 {
      44            2 :                     universal_arena_list_element_set_next( find_last, new_ele );
      45            2 :                     finished = true;
      46              :                 }
      47              :                 else
      48              :                 {
      49            1 :                     find_last = universal_arena_list_element_get_next( find_last );
      50              :                 }
      51              :             }
      52              :         }
      53              :     }
      54              : 
      55            4 :     return err;
      56              : }
      57              : 
      58            2 : static inline universal_arena_list_element_t* universal_arena_list_get_begin( universal_arena_list_t *this_ )
      59              : {
      60            2 :     return (*this_).begin;
      61              : }
      62              : 
      63            1 : static inline universal_arena_list_element_t* universal_arena_list_get_end( universal_arena_list_t *this_ )
      64              : {
      65            1 :     return NULL;
      66              : }
      67              : 
      68              : 
      69              : /*
      70              : Copyright 2021-2025 Andreas Warnke
      71              : 
      72              : Licensed under the Apache License, Version 2.0 (the "License");
      73              : you may not use this file except in compliance with the License.
      74              : You may obtain a copy of the License at
      75              : 
      76              :     http://www.apache.org/licenses/LICENSE-2.0
      77              : 
      78              : Unless required by applicable law or agreed to in writing, software
      79              : distributed under the License is distributed on an "AS IS" BASIS,
      80              : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      81              : See the License for the specific language governing permissions and
      82              : limitations under the License.
      83              : */
        

Generated by: LCOV version 2.0-1