LCOV - code coverage report
Current view: top level - src/crypto - common.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 42 42 100.0 %
Date: 2025-02-23 09:33:43 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright (c) 2014-2018 The Bitcoin Core developers
       2             : // Distributed under the MIT software license, see the accompanying
       3             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #ifndef PIVX_CRYPTO_COMMON_H
       6             : #define PIVX_CRYPTO_COMMON_H
       7             : 
       8             : #if defined(HAVE_CONFIG_H)
       9             : #include <config/pivx-config.h>
      10             : #endif
      11             : 
      12             : #include <stdint.h>
      13             : #include <string.h>
      14             : 
      15             : #include <compat/endian.h>
      16             : 
      17        6254 : uint16_t static inline ReadLE16(const unsigned char* ptr)
      18             : {
      19        6254 :     uint16_t x;
      20        6254 :     memcpy((char*)&x, ptr, 2);
      21        6254 :     return le16toh(x);
      22             : }
      23             : 
      24    89921994 : uint32_t static inline ReadLE32(const unsigned char* ptr)
      25             : {
      26    89921994 :     uint32_t x;
      27    87355294 :     memcpy((char*)&x, ptr, 4);
      28    87355294 :     return le32toh(x);
      29             : }
      30             : 
      31   112445097 : uint64_t static inline ReadLE64(const unsigned char* ptr)
      32             : {
      33   112445097 :     uint64_t x;
      34    15952018 :     memcpy((char*)&x, ptr, 8);
      35    15952018 :     return le64toh(x);
      36             : }
      37             : 
      38         344 : void static inline WriteLE16(unsigned char* ptr, uint16_t x)
      39             : {
      40         344 :     uint16_t v = htole16(x);
      41         344 :     memcpy(ptr, (char*)&v, 2);
      42             : }
      43             : 
      44   251204210 : void static inline WriteLE32(unsigned char* ptr, uint32_t x)
      45             : {
      46   251204210 :     uint32_t v = htole32(x);
      47   251204210 :     memcpy(ptr, (char*)&v, 4);
      48             : }
      49             : 
      50    15321028 : void static inline WriteLE64(unsigned char* ptr, uint64_t x)
      51             : {
      52    15321028 :     uint64_t v = htole64(x);
      53    15321028 :     memcpy(ptr, (char*)&v, 8);
      54             : }
      55             : 
      56           1 : uint16_t static inline ReadBE16(const unsigned char* ptr)
      57             : {
      58           1 :     uint16_t x;
      59           1 :     memcpy((char*)&x, ptr, 2);
      60           1 :     return be16toh(x);
      61             : }
      62             : 
      63  1544110857 : uint32_t static inline ReadBE32(const unsigned char* ptr)
      64             : {
      65  1646906857 :     uint32_t x;
      66   105044457 :     memcpy((char*)&x, ptr, 4);
      67   105044457 :     return be32toh(x);
      68             : }
      69             : 
      70  1426428000 : uint64_t static inline ReadBE64(const unsigned char* ptr)
      71             : {
      72  1426428000 :     uint64_t x;
      73    89151700 :     memcpy((char*)&x, ptr, 8);
      74    89151700 :     return be64toh(x);
      75             : }
      76             : 
      77    35143661 : void static inline WriteBE32(unsigned char* ptr, uint32_t x)
      78             : {
      79    35143661 :     uint32_t v = htobe32(x);
      80    35143661 :     memcpy(ptr, (char*)&v, 4);
      81             : }
      82             : 
      83   211767281 : void static inline WriteBE64(unsigned char* ptr, uint64_t x)
      84             : {
      85   123454581 :     uint64_t v = htobe64(x);
      86   123454581 :     memcpy(ptr, (char*)&v, 8);
      87             : }
      88             : 
      89             : /** Return the smallest number n such that (x >> n) == 0 (or 64 if the highest bit in x is set. */
      90     4777649 : uint64_t static inline CountBits(uint64_t x)
      91             : {
      92             : #if HAVE_DECL___BUILTIN_CLZL
      93     4777649 :     if (sizeof(unsigned long) >= sizeof(uint64_t)) {
      94     4777649 :         return x ? 8 * sizeof(unsigned long) - __builtin_clzl(x) : 0;
      95             :     }
      96             : #endif
      97             : #if HAVE_DECL___BUILTIN_CLZLL
      98             :     if (sizeof(unsigned long long) >= sizeof(uint64_t)) {
      99             :         return x ? 8 * sizeof(unsigned long long) - __builtin_clzll(x) : 0;
     100             :     }
     101             : #endif
     102             :     int ret = 0;
     103             :     while (x) {
     104             :         x >>= 1;
     105             :         ++ret;
     106             :     }
     107             :     return ret;
     108             : }
     109             : 
     110             : #endif // PIVX_CRYPTO_COMMON_H

Generated by: LCOV version 1.14