LCOV - code coverage report
Current view: top level - src - poporon.c (source / functions) Coverage Total Hit
Test: poporon Coverage Report Lines: 100.0 % 24 24
Test Date: 2025-04-08 01:35:23 Functions: 100.0 % 4 4
Legend: Lines: hit not hit

            Line data    Source code
       1              : /*
       2              :  * libpoporon - poporon.c
       3              :  * 
       4              :  * Copyright (c) 2025 Go Kudo
       5              :  *
       6              :  * This library is licensed under the BSD 3-Clause License.
       7              :  * For license details, please refer to the LICENSE file.
       8              :  *
       9              :  * SPDX-FileCopyrightText: Go Kudo <zeriyoshi@gmail.com>
      10              :  * SPDX-License-Identifier: BSD-3-Clause
      11              :  */
      12              : 
      13              : #include <poporon.h>
      14              : 
      15              : #include "poporon_internal.h"
      16              : 
      17            5 : extern void poporon_destroy(poporon_t *pprn)
      18              : {
      19            5 :     if (!pprn) {
      20            1 :         return;
      21              :     }
      22              : 
      23            4 :     if (pprn->buffer) {
      24            4 :         decoder_buffer_destroy(pprn->buffer);
      25              :     }
      26              : 
      27            4 :     poporon_rs_destroy(pprn->rs);
      28              : 
      29            4 :     pfree(pprn);
      30              : }
      31              : 
      32            5 : extern poporon_t *poporon_create(uint8_t symbol_size, uint16_t generator_polynomial, uint16_t first_consective_root, uint16_t primitive_element, uint8_t num_roots)
      33              : {
      34              :     poporon_t *pprn;
      35              :     poporon_rs_t *rs;
      36              :     decoder_buffer_t *buffer;
      37              :     uint16_t primitive_inverse;
      38              : 
      39            5 :     rs = poporon_rs_create(symbol_size, generator_polynomial, first_consective_root, primitive_element, num_roots);
      40            5 :     if (!rs) {
      41            1 :         return NULL;
      42              :     }
      43              :  
      44            4 :     buffer = decoder_buffer_create(num_roots);
      45            4 :     if (!buffer) {
      46              :         /* LCOV_EXCL_START */
      47              :         poporon_rs_destroy(rs);
      48              :         return NULL;
      49              :         /* LCOV_EXCL_STOP */
      50              :     }
      51              : 
      52            4 :     for (primitive_inverse = 1; (primitive_inverse % primitive_element) != 0; primitive_inverse += rs->gf->field_size);
      53            4 :     buffer->primitive_inverse = primitive_inverse / primitive_element;
      54              : 
      55            4 :     pprn = (poporon_t *)pmalloc(sizeof(poporon_t));
      56            4 :     if (!pprn) {
      57              :         /* LCOV_EXCL_START */
      58              :         decoder_buffer_destroy(buffer);
      59              :         poporon_rs_destroy(rs);
      60              :         return NULL;
      61              :         /* LCOV_EXCL_STOP */
      62              :     }
      63              : 
      64            4 :     pprn->rs = rs;
      65            4 :     pprn->buffer = buffer;
      66              : 
      67            4 :     return pprn;
      68              : }
      69              : 
      70            1 : extern uint32_t poporon_version_id()
      71              : {
      72            1 :     return (uint32_t)POPORON_VERSION_ID;
      73              : }
      74              : 
      75            1 : extern poporon_buildtime_t poporon_buildtime()
      76              : {
      77            1 :     return (poporon_buildtime_t)POPORON_BUILDTIME;
      78              : }
        

Generated by: LCOV version 2.0-1