/*
 * Copyright (C) 2020-2021 Aloysius Indrayanto
 *
 * This file is part of the eCxx library, see LICENSE file for the license details.
 */

/*
 * ----------------------------------------------------------------------------------
 * The code in this file is copied (with a slight modifications) from:
 *     TypeConversion.h - type conversion functionality
 * ----------------------------------------------------------------------------------
 * Copyright (C) 2019 Anders Löfgren
 *
 * MIT License
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in the
 * Software without restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
 * Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * ----------------------------------------------------------------------------------
 */


#ifndef ECXX_PLATFORM_NODEMCU_TYPE_CONVERSION_H
#define ECXX_PLATFORM_NODEMCU_TYPE_CONVERSION_H


#include "WString.h"


namespace eCxx {

namespace NodeMCU {

namespace TypeConversion {


extern const char    base36Chars[36];
extern const uint8_t base36CharValues[75];


extern const WString uint8ArrayToHexString(const uint8_t* uint8Array, const uint32_t arrayLength);
extern uint8_t* hexStringToUint8Array(const WString& hexString, uint8_t* uint8Array, const uint32_t arrayLength);

extern uint8_t* uint64ToUint8ArrayBE(const uint64_t value, uint8_t* resultArray);
extern uint64_t uint8ArrayToUint64BE(const uint8_t* inputArray);


} // namespace TypeConversion

} // namespace NodeMCU

} // namespace eCxx


#endif
