LCOV - code coverage report
Current view: top level - src/internal - common.h (source / functions) Coverage Total Hit
Test: pino Coverage Report Lines: 91.7 % 12 11
Test Date: 2026-01-22 09:45:38 Functions: 100.0 % 2 2
Legend: Lines: hit not hit

            Line data    Source code
       1              : /*
       2              :  * libpino - common.h
       3              :  *
       4              :  * This file is part of libpino.
       5              :  *
       6              :  * Author: Go Kudo <zeriyoshi@gmail.com>
       7              :  * SPDX-License-Identifier: MIT
       8              :  */
       9              : 
      10              : #ifndef PINO_INTERNAL_COMMON_H
      11              : #define PINO_INTERNAL_COMMON_H
      12              : 
      13              : #include <stdbool.h>
      14              : #include <stdint.h>
      15              : #include <stdlib.h>
      16              : #include <string.h>
      17              : 
      18              : #include <pino.h>
      19              : #include <pino/endianness.h>
      20              : #include <pino/handler.h>
      21              : 
      22              : #if PINO_USE_SIMD
      23              : #include "simd.h"
      24              : #endif
      25              : 
      26              : #define HANDLER_STEP 8
      27              : #define MM_STEP      16
      28              : 
      29              : #define PINO_VERSION_ID 10000000
      30              : 
      31              : #ifndef PINO_BUILDTIME
      32              : #define PINO_BUILDTIME 0
      33              : #endif
      34              : 
      35              : #define pmemcpy(dest, src, size)     memcpy(dest, src, size)
      36              : #define pmemcpy_n2l(dest, src, size) pino_endianness_memcpy_native2le(dest, src, size)
      37              : #define pmemcpy_n2b(dest, src, size) pino_endianness_memcpy_native2be(dest, src, size)
      38              : #define pmemcpy_l2n(dest, src, size) pino_endianness_memcpy_le2native(dest, src, size)
      39              : #define pmemcpy_b2n(dest, src, size) pino_endianness_memcpy_be2native(dest, src, size)
      40              : #define pmemmove(dest, src, size)    memmove(dest, src, size)
      41              : #define pmemcmp(s1, s2, size)        memcmp(s1, s2, size)
      42              : #define pmalloc(size)                malloc(size)
      43              : #define pcalloc(count, size)         calloc(count, size)
      44              : #define prealloc(ptr, size)          realloc(ptr, size)
      45              : #define pfree(ptr)                   free(ptr)
      46              : 
      47              : typedef struct {
      48              :     size_t usage;
      49              :     size_t capacity;
      50              :     void **ptrs;
      51              : } mm_t;
      52              : 
      53              : typedef struct {
      54              :     pino_magic_t magic;
      55              :     mm_t mm;
      56              :     pino_handler_t *handler;
      57              : } handler_entry_t;
      58              : 
      59         1056 : static inline bool validate_magic(pino_magic_safe_t magic)
      60              : {
      61              :     size_t i;
      62         1056 :     const char *valid_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      63              : 
      64         1056 :     if (!magic) {
      65            1 :         return false;
      66              :     }
      67              : 
      68         1055 :     if (strlen((const char *)magic) != sizeof(pino_magic_t)) {
      69            5 :         return false;
      70              :     }
      71              : 
      72         5250 :     for (i = 0; i < sizeof(pino_magic_t); i++) {
      73         4200 :         if (strchr(valid_chars, magic[i]) == NULL) {
      74            0 :             return false;
      75              :         }
      76              :     }
      77              : 
      78         1050 :     return true;
      79              : }
      80              : 
      81       501557 : static inline bool magic_equal(pino_magic_t magic, pino_magic_safe_t smagic)
      82              : {
      83       501557 :     return strncmp(magic, smagic, sizeof(pino_magic_t)) == 0;
      84              : }
      85              : 
      86              : bool pino_handler_init(size_t initialize_size);
      87              : void pino_handler_free(void);
      88              : pino_handler_t *pino_handler_find(pino_magic_safe_t magic);
      89              : 
      90              : bool pino_memory_manager_obj_init(mm_t *mm, size_t initialize_size);
      91              : void pino_memory_manager_obj_free(mm_t *mm);
      92              : 
      93              : #endif /* PINO_INTERNAL_COMMON_H */
        

Generated by: LCOV version 2.0-1