9aa4a115aa
This commit renames `Base64::s_Decode` into `Base64::Decode` and improves its average performance on short strings of less than 200 characters by 4.5x. This is achieved by implementing a classic base64 decoder that reads 4 characters at a time and produces 3 output bytes. Furthermore a small 128 byte lookup table is used to quickly map characters to values. ## PR Checklist * [x] I work here * [x] Tests added/passed ## Validation Steps Performed * Run WSL in Windows Terminal * Run `printf "\033]52;c;aHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC90ZXJtaW5hbC9wdWxsLzExNDY3\a"` * Clipboard contains `https://github.com/microsoft/terminal/pull/11467` ✔️
22 lines
418 B
C++
22 lines
418 B
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
/*
|
|
Module Name:
|
|
- base64.hpp
|
|
|
|
Abstract:
|
|
- This declares standard base64 encoding and decoding, with paddings when needed.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
namespace Microsoft::Console::VirtualTerminal
|
|
{
|
|
class Base64
|
|
{
|
|
public:
|
|
static HRESULT Decode(const std::wstring_view& src, std::wstring& dst) noexcept;
|
|
};
|
|
}
|