LCOV - code coverage report
Current view: top level - src/jamidht/eth/libdevcore - CommonData.cpp (source / functions) Coverage Total Hit
Test: jami-coverage-filtered.info Lines: 0.0 % 42 0
Test Date: 2026-06-13 09:18:46 Functions: 0.0 % 5 0

            Line data    Source code
       1              : /*
       2              :     This file is part of cpp-ethereum.
       3              : 
       4              :     cpp-ethereum is free software: you can redistribute it and/or modify
       5              :     it under the terms of the GNU General Public License as published by
       6              :     the Free Software Foundation, either version 3 of the License, or
       7              :     (at your option) any later version.
       8              : 
       9              :     cpp-ethereum is distributed in the hope that it will be useful,
      10              :     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11              :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12              :     GNU General Public License for more details.
      13              : 
      14              :     You should have received a copy of the GNU General Public License
      15              :     along with cpp-ethereum.  If not, see <http://www.gnu.org/licenses/>.
      16              : */
      17              : /** @file CommonData.cpp
      18              :  * @author Gav Wood <i@gavwood.com>
      19              :  * @date 2014
      20              :  */
      21              : 
      22              : #include "CommonData.h"
      23              : 
      24              : #include <stdexcept>
      25              : 
      26              : using namespace std;
      27              : using namespace dev;
      28              : 
      29              : namespace {
      30              : int
      31            0 : fromHexChar(char _i) noexcept
      32              : {
      33            0 :     if (_i >= '0' && _i <= '9')
      34            0 :         return _i - '0';
      35            0 :     if (_i >= 'a' && _i <= 'f')
      36            0 :         return _i - 'a' + 10;
      37            0 :     if (_i >= 'A' && _i <= 'F')
      38            0 :         return _i - 'A' + 10;
      39            0 :     return -1;
      40              : }
      41              : } // namespace
      42              : 
      43              : bool
      44            0 : dev::isHex(string const& _s) noexcept
      45              : {
      46            0 :     auto it = _s.begin();
      47            0 :     if (_s.compare(0, 2, "0x") == 0)
      48            0 :         it += 2;
      49            0 :     return std::all_of(it, _s.end(), [](char c) { return fromHexChar(c) != -1; });
      50              : }
      51              : 
      52              : bytes
      53            0 : dev::fromHex(std::string const& _s, WhenError _throw)
      54              : {
      55            0 :     unsigned s = (_s.size() >= 2 && _s[0] == '0' && _s[1] == 'x') ? 2 : 0;
      56            0 :     std::vector<uint8_t> ret;
      57            0 :     ret.reserve((_s.size() - s + 1) / 2);
      58              : 
      59            0 :     if (_s.size() % 2) {
      60            0 :         int h = fromHexChar(_s[s++]);
      61            0 :         if (h != -1)
      62            0 :             ret.push_back(h);
      63            0 :         else if (_throw == WhenError::Throw)
      64            0 :             throw std::runtime_error("BadHexCharacter");
      65              :         else
      66            0 :             return bytes();
      67              :     }
      68            0 :     for (unsigned i = s; i < _s.size(); i += 2) {
      69            0 :         int h = fromHexChar(_s[i]);
      70            0 :         int l = fromHexChar(_s[i + 1]);
      71            0 :         if (h != -1 && l != -1)
      72            0 :             ret.push_back((uint8_t) (h * 16 + l));
      73            0 :         else if (_throw == WhenError::Throw)
      74            0 :             throw std::runtime_error("BadHexCharacter");
      75              :         else
      76            0 :             return bytes();
      77              :     }
      78            0 :     return ret;
      79            0 : }
      80              : 
      81              : bytes
      82            0 : dev::asNibbles(bytesConstRef const& _s)
      83              : {
      84            0 :     std::vector<uint8_t> ret;
      85            0 :     ret.reserve(_s.size() * 2);
      86            0 :     for (auto i : _s) {
      87            0 :         ret.push_back(i / 16);
      88            0 :         ret.push_back(i % 16);
      89              :     }
      90            0 :     return ret;
      91            0 : }
        

Generated by: LCOV version 2.0-1