/* vim: set expandtab ts=4 sw=4: */ /* * You may redistribute this program and/or modify it under the terms of * the GNU General Public License as published by the Free Software Foundation, * either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef Hex_H #define Hex_H #include "memory/Allocator.h" #include "util/Linker.h" Linker_require("util/Hex.c"); #include #include /** Returned by Hex_decode() if the input is not valid hex. */ #define Hex_BAD_INPUT -1 /** Returned by Hex_decode() or Hex_encode() if the output buffer is too small. */ #define Hex_TOO_BIG -2 int Hex_encode(uint8_t* output, const uint32_t outputLength, const uint8_t* in, const uint32_t inputLength); int Hex_decode(uint8_t* output, const uint32_t outLength, const uint8_t* in, const uint32_t inputLength); bool Hex_isHexEntity(const uint8_t character); int Hex_decodeByte(const uint8_t highNibble, const uint8_t lowNibble); uint8_t Hex_encodeLowNibble(const uint8_t nibble); char* Hex_print(void* bytes, uint32_t length, struct Allocator* alloc); #endif