Add wxBase64Decode(void*,size_t,wxString) overload.

We had wxBase64Decode(void*,size_t,const char*,size_t) as well as
wxBase64Decode(const char*,size_t) and wxBase64Decode(wxString) already but
not a version taking the buffer and wxString, complete the set of overloads
now.

This allows the unit test to compile in STL build (where there is no implicit
conversion from wxString to const char *).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2009-11-11 14:38:40 +00:00
parent a9a8cebc91
commit 869bc90db7
2 changed files with 36 additions and 7 deletions

View File

@ -89,6 +89,17 @@ wxBase64Decode(void *dst, size_t dstLen,
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict, wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
size_t *posErr = NULL); 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 // decode the contents of the given string; the returned buffer is empty if an
// error occurs during decoding // error occurs during decoding
WXDLLIMPEXP_BASE wxMemoryBuffer WXDLLIMPEXP_BASE wxMemoryBuffer

View File

@ -145,14 +145,30 @@ size_t wxBase64Decode(void* dst, size_t dstLen,
size_t *posErr = NULL); size_t *posErr = NULL);
/** /**
Decode a Base64-encoded wxString.
See the wxBase64Decode(void*,size_t,const char*,size_t,wxBase64DecodeMode,size_t*) See the wxBase64Decode(void*,size_t,const char*,size_t,wxBase64DecodeMode,size_t*)
overload for more info about the parameters of this function. overload for more information about the parameters of this function, the
only difference between it and this one is that a wxString is used instead
of a @c char* pointer and its length.
This overload allocates memory internally and returns it as wxMemoryBuffer @since 2.9.1
and is recommended for normal use.
This overload returns a buffer with the base64 decoded binary equivalent @header{wx/base64.h}
of the input string. In neither case is the buffer @NULL-terminated. */
size_t wxBase64Decode(void* dst, size_t dstLen,
const wxString& str,
wxBase64DecodeMode mode = wxBase64DecodeMode_Strict,
size_t *posErr = NULL);
/**
Decode a Base64-encoded string and return decoded contents in a buffer.
See the wxBase64Decode(void*,size_t,const char*,size_t,wxBase64DecodeMode,size_t*)
overload for more information about the parameters of this function. The
difference of this overload is that it allocates a buffer of necessary size
on its own and returns it, freeing you from the need to do it manually.
Because of this, it is simpler to use and is recommended for normal use.
@header{wx/base64.h} @header{wx/base64.h}
*/ */
@ -162,11 +178,13 @@ wxMemoryBuffer wxBase64Decode(const char* src,
size_t *posErr = NULL); size_t *posErr = NULL);
/** /**
Decode a Base64-encoded wxString and return decoded contents in a buffer.
See the wxBase64Decode(void*,size_t,const char*,size_t,wxBase64DecodeMode,size_t*) See the wxBase64Decode(void*,size_t,const char*,size_t,wxBase64DecodeMode,size_t*)
overload for more info about the parameters of this function. overload for more information about the parameters of this function.
This overload takes as input a wxString and returns the internally-allocated This overload takes as input a wxString and returns the internally-allocated
memory as a wxMemoryBuffer, containing the base64 decoded data. memory as a wxMemoryBuffer, containing the Base64-decoded data.
@header{wx/base64.h} @header{wx/base64.h}
*/ */