LCOV - code coverage report
Current view: top level - pencil/include/layout - layout_visible_classifier_iter.inl (source / functions) Hit Total Coverage
Test: crystal-facet-uml_v1.65.6_covts Lines: 0 33 0.0 %
Date: 2025-09-25 21:07:53 Functions: 0 6 0.0 %

          Line data    Source code
       1             : /* File: layout_visible_classifier_iter.inl; Copyright and License: see below */
       2             : 
       3             : #include "u8/u8_trace.h"
       4             : #include <assert.h>
       5             : 
       6           0 : static inline void layout_visible_classifier_iter_init( layout_visible_classifier_iter_t *this_,
       7             :                                                         layout_visible_set_t *items,
       8             :                                                         const universal_array_index_sorter_t *order )
       9             : {
      10           0 :     assert( items != NULL );
      11           0 :     assert( order != NULL );
      12           0 :     (*this_).next_idx = 0;
      13           0 :     (*this_).length = universal_array_index_sorter_get_count( order );
      14           0 :     (*this_).items = items;
      15           0 :     (*this_).order = order;
      16           0 : }
      17             : 
      18           0 : static inline void layout_visible_classifier_iter_init_from_processed( layout_visible_classifier_iter_t *this_,
      19             :                                                                        const layout_visible_classifier_iter_t *that )
      20             : {
      21           0 :     (*this_).next_idx = 0;
      22           0 :     (*this_).length = (*that).next_idx;
      23           0 :     (*this_).items = (*that).items;
      24           0 :     (*this_).order = (*that).order;
      25           0 : }
      26             : 
      27           0 : static inline void layout_visible_classifier_iter_destroy( layout_visible_classifier_iter_t *this_ )
      28             : {
      29           0 :     (*this_).next_idx = 0;
      30           0 :     (*this_).length = 0;
      31           0 :     (*this_).items = NULL;
      32           0 :     (*this_).order = NULL;
      33           0 : }
      34             : 
      35           0 : static inline bool layout_visible_classifier_iter_has_next( const layout_visible_classifier_iter_t *this_ )
      36             : {
      37             :     /* check that the size of the array has not shrinked */
      38             :     /* It should not have changed at all, but this cannot be checked here. */
      39           0 :     assert( (*this_).length <= universal_array_index_sorter_get_count( (*this_).order ) );
      40             : 
      41           0 :     return ( (*this_).next_idx < (*this_).length );
      42             : }
      43             : 
      44           0 : static inline layout_visible_classifier_t *layout_visible_classifier_iter_next_ptr( layout_visible_classifier_iter_t *this_ )
      45             : {
      46           0 :     layout_visible_classifier_t *result = NULL;
      47           0 :     if ( layout_visible_classifier_iter_has_next( this_ ) )
      48             :     {
      49           0 :         uint32_t array_index = universal_array_index_sorter_get_array_index( (*this_).order, (*this_).next_idx );
      50           0 :         assert( array_index < layout_visible_set_get_visible_classifier_count( (*this_).items ) );
      51           0 :         result = layout_visible_set_get_visible_classifier_ptr( (*this_).items, array_index );
      52           0 :         (*this_).next_idx ++;
      53             :     }
      54           0 :     return result;
      55             : }
      56             : 
      57           0 : static inline uint32_t layout_visible_classifier_iter_count_processed( const layout_visible_classifier_iter_t *this_ )
      58             : {
      59           0 :     return (*this_).next_idx;
      60             : }
      61             : 
      62             : 
      63             : /*
      64             : Copyright 2025-2025 Andreas Warnke
      65             : 
      66             : Licensed under the Apache License, Version 2.0 (the "License");
      67             : you may not use this file except in compliance with the License.
      68             : You may obtain a copy of the License at
      69             : 
      70             :     http://www.apache.org/licenses/LICENSE-2.0
      71             : 
      72             : Unless required by applicable law or agreed to in writing, software
      73             : distributed under the License is distributed on an "AS IS" BASIS,
      74             : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      75             : See the License for the specific language governing permissions and
      76             : limitations under the License.
      77             : */

Generated by: LCOV version 1.16