3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
122 lines
4.4 KiB
C
122 lines
4.4 KiB
C
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/base64.h
|
|
// Purpose: declaration of BASE64 encoding/decoding functionality
|
|
// Author: Charles Reimers, Vadim Zeitlin
|
|
// Created: 2007-06-18
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_BASE64_H_
|
|
#define _WX_BASE64_H_
|
|
|
|
#if wxUSE_BASE64
|
|
|
|
#include "wx/string.h"
|
|
#include "wx/buffer.h"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// encoding functions
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// return the size needed for the buffer containing the encoded representation
|
|
// of a buffer of given length
|
|
inline size_t wxBase64EncodedSize(size_t len) { return 4*((len+2)/3); }
|
|
|
|
// raw base64 encoding function which encodes the contents of a buffer of the
|
|
// specified length into the buffer of the specified size
|
|
//
|
|
// returns the length of the encoded data or wxCONV_FAILED if the buffer is not
|
|
// large enough; to determine the needed size you can either allocate a buffer
|
|
// of wxBase64EncodedSize(srcLen) size or call the function with NULL buffer in
|
|
// which case the required size will be returned
|
|
WXDLLIMPEXP_BASE size_t
|
|
wxBase64Encode(char *dst, size_t dstLen, const void *src, size_t srcLen);
|
|
|
|
// encode the contents of the given buffer using base64 and return as string
|
|
// (there is no error return)
|
|
inline wxString wxBase64Encode(const void *src, size_t srcLen)
|
|
{
|
|
const size_t dstLen = wxBase64EncodedSize(srcLen);
|
|
wxCharBuffer dst(dstLen);
|
|
wxBase64Encode(dst.data(), dstLen, src, srcLen);
|
|
|
|
return dst;
|
|
}
|
|
|
|
inline wxString wxBase64Encode(const wxMemoryBuffer& buf)
|
|
{
|
|
return wxBase64Encode(buf.GetData(), buf.GetDataLen());
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// decoding functions
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// elements of this enum specify the possible behaviours of wxBase64Decode()
|
|
// when an invalid character is encountered
|
|
enum wxBase64DecodeMode
|
|
{
|
|
// normal behaviour: stop at any invalid characters
|
|
wxBase64DecodeMode_Strict,
|
|
|
|
// skip whitespace characters
|
|
wxBase64DecodeMode_SkipWS,
|
|
|
|
// the most lenient behaviour: simply ignore all invalid characters
|
|
wxBase64DecodeMode_Relaxed
|
|
};
|
|
|
|
// return the buffer size necessary for decoding a base64 string of the given
|
|
// length
|
|
inline size_t wxBase64DecodedSize(size_t srcLen) { return 3*srcLen/4; }
|
|
|
|
// raw decoding function which decodes the contents of the string of specified
|
|
// length (or NUL-terminated by default) into the provided buffer of the given
|
|
// size
|
|
//
|
|
// the function normally stops at any character invalid inside a base64-encoded
|
|
// string (i.e. not alphanumeric nor '+' nor '/') but can be made to skip the
|
|
// whitespace or all invalid characters using its mode argument
|
|
//
|
|
// returns the length of the decoded data or wxCONV_FAILED if an error occurs
|
|
// such as the buffer is too small or the encoded string is invalid; in the
|
|
// latter case the posErr is filled with the position where the decoding
|
|
// stopped if it is not NULL
|
|
WXDLLIMPEXP_BASE size_t
|
|
wxBase64Decode(void *dst, size_t dstLen,
|
|
const char *src, size_t srcLen = wxNO_LEN,
|
|
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
|
|
size_t *posErr = NULL);
|
|
|
|
inline size_t
|
|
wxBase64Decode(void *dst, size_t dstLen,
|
|
const wxString& src,
|
|
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
|
|
size_t *posErr = NULL)
|
|
{
|
|
// don't use str.length() here as the ASCII buffer is shorter than it for
|
|
// strings with embedded NULs
|
|
return wxBase64Decode(dst, dstLen, src.ToAscii(), wxNO_LEN, mode, posErr);
|
|
}
|
|
|
|
// decode the contents of the given string; the returned buffer is empty if an
|
|
// error occurs during decoding
|
|
WXDLLIMPEXP_BASE wxMemoryBuffer
|
|
wxBase64Decode(const char *src, size_t srcLen = wxNO_LEN,
|
|
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
|
|
size_t *posErr = NULL);
|
|
|
|
inline wxMemoryBuffer
|
|
wxBase64Decode(const wxString& src,
|
|
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
|
|
size_t *posErr = NULL)
|
|
{
|
|
// don't use str.length() here as the ASCII buffer is shorter than it for
|
|
// strings with embedded NULs
|
|
return wxBase64Decode(src.ToAscii(), wxNO_LEN, mode, posErr);
|
|
}
|
|
|
|
#endif // wxUSE_BASE64
|
|
|
|
#endif // _WX_BASE64_H_
|