// WARNING: This file is machine generated by fidlc.

#include <lib/fidl/internal.h>


extern const struct FidlCodedStruct fidl_test_json_SimpleTable;
extern const struct FidlCodedStruct fidl_test_json_BasicStructTable;


static const struct FidlCodedString String4294967295nonnullableTable = {.tag=kFidlTypeString, .max_size=4294967295u, .nullable=kFidlNullability_Nonnullable};


static const struct FidlStructField Fields21fidl_test_json_Simple[] = {
    /*FidlStructField*/{.type=(fidl_type_t*)(&fidl_internal_kBoolTable), .offset=1u, .padding=0u}
};
const struct FidlCodedStruct fidl_test_json_SimpleTable = {.tag=kFidlTypeStruct, .fields=Fields21fidl_test_json_Simple, .field_count=1u, .size=2u, .name="fidl.test.json/Simple"};

static const struct FidlStructField Fields26fidl_test_json_BasicStruct[] = {
    /*FidlStructField*/{.type=NULL, .padding_offset=4u, .padding=4u},
    /*FidlStructField*/{.type=(fidl_type_t*)(&String4294967295nonnullableTable), .offset=8u, .padding=0u}
};
const struct FidlCodedStruct fidl_test_json_BasicStructTable = {.tag=kFidlTypeStruct, .fields=Fields26fidl_test_json_BasicStruct, .field_count=2u, .size=24u, .name="fidl.test.json/BasicStruct"};

