LCOV - code coverage report
Current view: top level - data/include/set - data_stat.inl (source / functions) Hit Total Coverage
Test: crystal-facet-uml_v1.61.0_covts Lines: 50 50 100.0 %
Date: 2024-10-26 21:44:38 Functions: 10 10 100.0 %

          Line data    Source code
       1             : /* File: data_stat.inl; Copyright and License: see below */
       2             : 
       3             : #include "utf8stringbuf/utf8stringbuf.h"
       4             : #include "u8/u8_trace.h"
       5             : #include <assert.h>
       6             : 
       7         188 : static inline void data_stat_init ( data_stat_t *this_ )
       8             : {
       9             :     assert( (int)DATA_TABLE_CLASSIFIER < (int)DATA_STAT_TABLE_MAX );
      10             :     assert( (int)DATA_TABLE_FEATURE < (int)DATA_STAT_TABLE_MAX );
      11             :     assert( (int)DATA_TABLE_RELATIONSHIP < (int)DATA_STAT_TABLE_MAX );
      12             :     assert( (int)DATA_TABLE_DIAGRAMELEMENT < (int)DATA_STAT_TABLE_MAX );
      13             :     assert( (int)DATA_TABLE_DIAGRAM < (int)DATA_STAT_TABLE_MAX );
      14             : 
      15        1316 :     for ( int series_idx = 0; series_idx < DATA_STAT_SERIES_MAX; series_idx ++ )
      16             :     {
      17        7896 :         for ( int tables_idx = 0; tables_idx < DATA_STAT_TABLE_MAX; tables_idx ++ )
      18             :         {
      19        6768 :             (*this_).data[tables_idx][series_idx] = 0;
      20             :         }
      21             :     }
      22         188 : }
      23             : 
      24         188 : static inline void data_stat_destroy ( data_stat_t *this_ )
      25             : {
      26         188 : }
      27             : 
      28         235 : static inline uint_fast32_t data_stat_get_count ( const data_stat_t *this_,
      29             :                                                   data_stat_table_t table,
      30             :                                                   data_stat_series_t series )
      31             : {
      32         235 :     assert( table < DATA_STAT_TABLE_MAX );
      33         235 :     assert( series < DATA_STAT_SERIES_MAX );
      34         235 :     return (*this_).data[table][series];
      35             : }
      36             : 
      37         265 : static inline void data_stat_inc_count ( data_stat_t *this_,
      38             :                                          data_stat_table_t table,
      39             :                                          data_stat_series_t series )
      40             : {
      41         265 :     assert( table < DATA_STAT_TABLE_MAX );
      42         265 :     assert( series < DATA_STAT_SERIES_MAX );
      43         265 :     (*this_).data[table][series]++;
      44         265 : }
      45             : 
      46           1 : static inline void data_stat_add_count ( data_stat_t *this_,
      47             :                                          data_stat_table_t table,
      48             :                                          data_stat_series_t series,
      49             :                                          int_fast32_t increment )
      50             : {
      51           1 :     assert( table < DATA_STAT_TABLE_MAX );
      52           1 :     assert( series < DATA_STAT_SERIES_MAX );
      53           1 :     (*this_).data[table][series] += increment;
      54           1 : }
      55             : 
      56           1 : static inline void data_stat_add ( data_stat_t *this_, const data_stat_t *that )
      57             : {
      58           1 :     assert( that != NULL );
      59           7 :     for ( int series_idx = 0; series_idx < DATA_STAT_SERIES_MAX; series_idx ++ )
      60             :     {
      61          42 :         for ( int tables_idx = 0; tables_idx < DATA_STAT_TABLE_MAX; tables_idx ++ )
      62             :         {
      63          36 :             (*this_).data[tables_idx][series_idx] += (*that).data[tables_idx][series_idx];
      64             :         }
      65             :     }
      66           1 : }
      67             : 
      68           2 : static inline uint_fast32_t data_stat_get_series_count ( const data_stat_t *this_,
      69             :                                                          data_stat_series_t series )
      70             : {
      71           2 :     assert( series < DATA_STAT_SERIES_MAX );
      72           2 :     uint_fast32_t result = 0;
      73          14 :     for ( int tables_idx = 0; tables_idx < DATA_STAT_TABLE_MAX; tables_idx ++ )
      74             :     {
      75          12 :         result += (*this_).data[tables_idx][series];
      76             :     }
      77           2 :     return result;
      78             : }
      79             : 
      80          14 : static inline uint_fast32_t data_stat_get_table_count ( const data_stat_t *this_,
      81             :                                                         data_stat_table_t table )
      82             : {
      83          14 :     assert( table < DATA_STAT_TABLE_MAX );
      84          14 :     uint_fast32_t result = 0;
      85          98 :     for ( int series_idx = 0; series_idx < DATA_STAT_SERIES_MAX; series_idx ++ )
      86             :     {
      87          84 :         result += (*this_).data[table][series_idx];
      88             :     }
      89          14 :     return result;
      90             : }
      91             : 
      92         187 : static inline uint_fast32_t data_stat_get_total_count ( const data_stat_t *this_ )
      93             : {
      94         187 :     uint_fast32_t result = 0;
      95        1309 :     for ( int series_idx = 0; series_idx < DATA_STAT_SERIES_MAX; series_idx ++ )
      96             :     {
      97        7854 :         for ( int tables_idx = 0; tables_idx < DATA_STAT_TABLE_MAX; tables_idx ++ )
      98             :         {
      99        6732 :             result += (*this_).data[tables_idx][series_idx];
     100             :         }
     101             :     }
     102         187 :     return result;
     103             : }
     104             : 
     105           1 : static void inline data_stat_reset_series( data_stat_t *this_, data_stat_series_t series )
     106             : {
     107           1 :     assert( series < DATA_STAT_SERIES_MAX );
     108           7 :     for ( int tables_idx = 0; tables_idx < DATA_STAT_TABLE_MAX; tables_idx ++ )
     109             :     {
     110           6 :         (*this_).data[tables_idx][series] = 0;
     111             :     }
     112           1 : }
     113             : 
     114             : 
     115             : /*
     116             : Copyright 2020-2024 Andreas Warnke
     117             : 
     118             : Licensed under the Apache License, Version 2.0 (the "License");
     119             : you may not use this file except in compliance with the License.
     120             : You may obtain a copy of the License at
     121             : 
     122             :     http://www.apache.org/licenses/LICENSE-2.0
     123             : 
     124             : Unless required by applicable law or agreed to in writing, software
     125             : distributed under the License is distributed on an "AS IS" BASIS,
     126             : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     127             : See the License for the specific language governing permissions and
     128             : limitations under the License.
     129             : */

Generated by: LCOV version 1.16