const int *HexDecoder::GetDefaultDecodingLookupArray() { static bool s_initialized = false; static int s_array[256]; if (!s_initialized) { InitializeDecodingLookupArray(s_array, s_vecUpper, 16, true); s_initialized = true; } return s_array; }
const int *Base64Decoder::GetDecodingLookupArray() { static volatile bool s_initialized = false; static int s_array[256]; if (!s_initialized) { InitializeDecodingLookupArray(s_array, s_vec, 64, false); s_initialized = true; } return s_array; }
const int *AltBase32Decoder::GetDefaultDecodingLookupArray() { static volatile bool s_initialized = false; static int s_array[256]; if (!s_initialized) { InitializeDecodingLookupArray(s_array, s_vecUpper, 32, true); s_initialized = true; } return s_array; }
const int *Base64Decoder::GetDecodingLookupArray() { static std::once_flag s_initialized_flag; static std::atomic<bool> s_initialized(false); static int s_array[256]; std::call_once(s_initialized_flag, [] { InitializeDecodingLookupArray(s_array, s_vec, 64, false); s_initialized = true; }); while (!s_initialized) std::this_thread::yield(); return s_array; }