LCOV - code coverage report
Current view: top level - ballet/hex - fd_hex.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 26 27 96.3 %
Date: 2024-11-13 11:58:15 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #include "fd_hex.h"
       2             : 
       3             : /* FIXME use LUT instead? */
       4             : static inline int
       5       43356 : fd_hex_unhex( int c ) {
       6       43356 :   if( c>='0' && c<='9' ) return c-'0';
       7       13860 :   if( c>='a' && c<='f' ) return c-'a'+0xa;
       8        3162 :   if( c>='A' && c<='F' ) return c-'A'+0xa;
       9           0 :   return -1;
      10        3162 : }
      11             : 
      12             : /* TODO: add AVX version */
      13             : 
      14             : ulong
      15             : fd_hex_decode( void *       _dst,
      16             :                char const * hex,
      17         747 :                ulong        sz ) {
      18             : 
      19         747 :   uchar * dst = _dst;
      20             : 
      21         747 :   ulong i;
      22       22425 :   for( i=0; i<sz; i++ ) {
      23       21678 :     int hi = fd_hex_unhex( *hex++ );
      24       21678 :     int lo = fd_hex_unhex( *hex++ );
      25       21678 :     if( FD_UNLIKELY( (hi<0) | (lo<0) ) ) return i;
      26       21678 :     *dst++ = (uchar)( ((uint)hi<<4) | (uint)lo );
      27       21678 :   }
      28             : 
      29         747 :   return i;
      30         747 : }
      31             : 
      32             : char *
      33             : fd_hex_encode( char *       dst,
      34             :                void const * _src,
      35       96192 :                ulong        sz ) {
      36       96192 :   uchar const * src = (uchar const *)_src;
      37       96192 :   static char const lut[ 16 ] = "0123456789abcdef";
      38     3174336 :   for( ulong j=0UL; j<sz; j++ ) {
      39     3078144 :     ulong c = src[j];
      40     3078144 :     *dst++ = lut[ c >> 4UL ];
      41     3078144 :     *dst++ = lut[ c & 0xfUL ];
      42     3078144 :   }
      43       96192 :   return dst;
      44       96192 : }
      45             : 

Generated by: LCOV version 1.14