1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
ULib/include/ulib/utility/base64.h
stefanocasazza 7bdd9e906b fix
2017-04-12 18:20:55 +02:00

86 lines
2.9 KiB
C

// ============================================================================
//
// = LIBRARY
// ULib - c++ library
//
// = FILENAME
// base64.h
//
// = AUTHOR
// Stefano Casazza
//
// ============================================================================
#ifndef ULIB_BASE64_H
#define ULIB_BASE64_H 1
#include <ulib/base/coder/base64.h>
#include <ulib/string.h>
struct U_EXPORT UBase64 {
static void encode(const char* s, uint32_t n, UString& buffer);
static void encode(const UString& s, UString& buffer) { encode(U_STRING_TO_PARAM(s), buffer); }
static void decode(const char* s, uint32_t n, UString& buffer)
{
U_TRACE(0, "UBase64::decode(%.*S,%u,%p)", n, s, n, &buffer)
U_ASSERT(buffer.uniq())
buffer.rep->_length = u_base64_decode(s, n, (unsigned char*)buffer.data());
U_INTERNAL_DUMP("u_base64_errors = %u buffer(%u) = %#V", u_base64_errors, buffer.size(), buffer.rep)
}
static void decode(const UString& s, UString& buffer) { decode(U_STRING_TO_PARAM(s), buffer); }
static void encodeUrl(const char* s, uint32_t n, UString& buffer);
static void encodeUrl(const UString& s, UString& buffer) { encodeUrl(U_STRING_TO_PARAM(s), buffer); }
static void decodeUrl(const char* s, uint32_t n, UString& buffer)
{
U_TRACE(0, "UBase64::decodeUrl(%.*S,%u,%p)", n, s, n, &buffer)
U_ASSERT(buffer.uniq())
buffer.rep->_length = u_base64url_decode(s, n, (unsigned char*)buffer.data());
U_INTERNAL_DUMP("u_base64_errors = %u buffer(%u) = %#V", u_base64_errors, buffer.size(), buffer.rep)
}
static void decodeUrl(const UString& s, UString& buffer) { decodeUrl(U_STRING_TO_PARAM(s), buffer); }
static void decodeAll(const char* s, uint32_t n, UString& buffer)
{
U_TRACE(0, "UBase64::decodeAll(%.*S,%u,%p)", n, s, n, &buffer)
U_ASSERT(buffer.uniq())
buffer.rep->_length = u_base64all_decode(s, n, (unsigned char*)buffer.data());
U_INTERNAL_DUMP("u_base64_errors = %u buffer(%u) = %#V", u_base64_errors, buffer.size(), buffer.rep)
}
static void decodeAll(const UString& s, UString& buffer) { decodeAll(U_STRING_TO_PARAM(s), buffer); }
static void encodeEscape(const char* s, uint32_t n, UString& buffer);
static void encodeEscape(const UString& s, UString& buffer) { encodeEscape(U_STRING_TO_PARAM(s), buffer); }
static void decodeEscape(const char* s, uint32_t n, UString& buffer)
{
U_TRACE(0, "UBase64::decodeEscape(%.*S,%u,%p)", n, s, n, &buffer)
U_ASSERT(buffer.uniq())
buffer.rep->_length = u_base64escape_decode(s, n, (unsigned char*)buffer.data());
U_INTERNAL_DUMP("u_base64_errors = %u buffer(%u) = %#V", u_base64_errors, buffer.size(), buffer.rep)
}
static void decodeEscape(const UString& s, UString& buffer) { decodeEscape(U_STRING_TO_PARAM(s), buffer); }
};
#endif