blob: c6351e30fec32510b42e81040ff870badaad2dc3 [file] [log] [blame]
// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
#include "upb/wire/decode_fast/function_array.h"
#include <stdint.h>
#include "upb/mini_table/internal/message.h"
#include "upb/wire/decode_fast/combinations.h"
#include "upb/wire/decode_fast/field_parsers.h"
// Must be last.
#include "upb/port/def.inc"
#define ADDR_OF_FUNC(type, card, size) \
UPB_DECODEFAST_ISENABLED(kUpb_DecodeFast_##type, kUpb_DecodeFast_##card, \
kUpb_DecodeFast_##size) \
? &UPB_DECODEFAST_FUNCNAME(type, card, size) : _upb_FastDecoder_DecodeGeneric,
static _upb_FieldParser* funcs[] = {UPB_DECODEFAST_FUNCTIONS(ADDR_OF_FUNC)};
#undef ADDR_OF_FUNC
_upb_FieldParser* upb_DecodeFast_GetFunctionPointer(uint32_t function_idx) {
if (function_idx == UINT32_MAX) return &_upb_FastDecoder_DecodeGeneric;
UPB_ASSERT(function_idx < UPB_ARRAY_SIZE(funcs));
return funcs[function_idx];
}
#include "upb/port/undef.inc"