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

#include <lib/fidl/internal.h>


extern const struct FidlCodedBits zx_rightsTable;
extern const struct FidlCodedEnum zx_obj_typeTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableVectorTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableUnionTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableStructTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableStringTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableRequestTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableProtocolTable;
extern const struct FidlCodedStruct fidl_test_nullable_StructWithNullableHandleTable;
extern const struct FidlCodedXUnion fidl_test_nullable_SimpleUnionTable;
extern const struct FidlCodedXUnion fidl_test_nullable_SimpleUnionNullableRefTable;
extern const struct FidlCodedStruct fidl_test_nullable_Int32WrapperTable;

static const struct FidlCodedStructPointer Pointer31fidl_test_nullable_Int32WrapperTable = {.tag=kFidlTypeStructPointer, .struct_type=&fidl_test_nullable_Int32WrapperTable};

static const struct FidlCodedVector Vector4294967295nullable5int32Table = {.tag=kFidlTypeVector, .element=(fidl_type_t*)(&fidl_internal_kInt32Table), .max_count=4294967295u, .element_size=4u, .nullable=kFidlNullability_Nullable};

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

static const struct FidlCodedHandle Request33fidl_test_nullable_SimpleProtocolnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_CHANNEL, .handle_rights=ZX_DEFAULT_CHANNEL_RIGHTS, .nullable=kFidlNullability_Nullable};

static const struct FidlCodedHandle Protocol33fidl_test_nullable_SimpleProtocolnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_CHANNEL, .handle_rights=ZX_DEFAULT_CHANNEL_RIGHTS, .nullable=kFidlNullability_Nullable};

static const struct FidlCodedHandle Handlevmo2147483648nullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_VMO, .handle_rights=2147483648u, .nullable=kFidlNullability_Nullable};

extern const struct FidlCodedStruct fidl_test_nullable_SimpleProtocolAddRequestTable;
const struct FidlCodedStruct fidl_test_nullable_SimpleProtocolAddRequestTable = {.tag=kFidlTypeStruct, .elements=NULL, .element_count=0u, .size=24u, .name="fidl.test.nullable/SimpleProtocolAddRequest"};

extern const struct FidlCodedStruct fidl_test_nullable_SimpleProtocolAddResponseTable;
static const struct FidlStructElement Fields44fidl_test_nullable_SimpleProtocolAddResponse[] = {
    /*FidlStructPadding*/{.padding=/*FidlStructPadding*/{.offset=20u, .header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Padding32,.is_resource=kFidlIsResource_NotResource},.mask_32=4294967295u}}
};
const struct FidlCodedStruct fidl_test_nullable_SimpleProtocolAddResponseTable = {.tag=kFidlTypeStruct, .elements=Fields44fidl_test_nullable_SimpleProtocolAddResponse, .element_count=1u, .size=24u, .name="fidl.test.nullable/SimpleProtocolAddResponse"};


static const struct FidlStructElement Fields43fidl_test_nullable_StructWithNullableVector[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=0u, .field_type=(fidl_type_t*)(&Vector4294967295nullable5int32Table)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableVectorTable = {.tag=kFidlTypeStruct, .elements=Fields43fidl_test_nullable_StructWithNullableVector, .element_count=1u, .size=16u, .name="fidl.test.nullable/StructWithNullableVector"};

static const struct FidlStructElement Fields42fidl_test_nullable_StructWithNullableUnion[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=0u, .field_type=(fidl_type_t*)(&fidl_test_nullable_SimpleUnionNullableRefTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableUnionTable = {.tag=kFidlTypeStruct, .elements=Fields42fidl_test_nullable_StructWithNullableUnion, .element_count=1u, .size=24u, .name="fidl.test.nullable/StructWithNullableUnion"};

static const struct FidlStructElement Fields43fidl_test_nullable_StructWithNullableStruct[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=0u, .field_type=(fidl_type_t*)(&Pointer31fidl_test_nullable_Int32WrapperTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableStructTable = {.tag=kFidlTypeStruct, .elements=Fields43fidl_test_nullable_StructWithNullableStruct, .element_count=1u, .size=8u, .name="fidl.test.nullable/StructWithNullableStruct"};

static const struct FidlStructElement Fields43fidl_test_nullable_StructWithNullableString[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset=0u, .field_type=(fidl_type_t*)(&String4294967295nullableTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableStringTable = {.tag=kFidlTypeStruct, .elements=Fields43fidl_test_nullable_StructWithNullableString, .element_count=1u, .size=16u, .name="fidl.test.nullable/StructWithNullableString"};

static const struct FidlStructElement Fields44fidl_test_nullable_StructWithNullableRequest[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=0u, .field_type=(fidl_type_t*)(&Request33fidl_test_nullable_SimpleProtocolnullableTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableRequestTable = {.tag=kFidlTypeStruct, .elements=Fields44fidl_test_nullable_StructWithNullableRequest, .element_count=1u, .size=4u, .name="fidl.test.nullable/StructWithNullableRequest"};

static const struct FidlStructElement Fields45fidl_test_nullable_StructWithNullableProtocol[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=0u, .field_type=(fidl_type_t*)(&Protocol33fidl_test_nullable_SimpleProtocolnullableTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableProtocolTable = {.tag=kFidlTypeStruct, .elements=Fields45fidl_test_nullable_StructWithNullableProtocol, .element_count=1u, .size=4u, .name="fidl.test.nullable/StructWithNullableProtocol"};

static const struct FidlStructElement Fields43fidl_test_nullable_StructWithNullableHandle[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset=0u, .field_type=(fidl_type_t*)(&Handlevmo2147483648nullableTable)}}
};
const struct FidlCodedStruct fidl_test_nullable_StructWithNullableHandleTable = {.tag=kFidlTypeStruct, .elements=Fields43fidl_test_nullable_StructWithNullableHandle, .element_count=1u, .size=4u, .name="fidl.test.nullable/StructWithNullableHandle"};

static const struct FidlXUnionField Fields30fidl_test_nullable_SimpleUnion[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kInt32Table)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kFloat32Table)}
};
const struct FidlCodedXUnion fidl_test_nullable_SimpleUnionTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields30fidl_test_nullable_SimpleUnion, .nullable=kFidlNullability_Nonnullable, .name="fidl.test.nullable/SimpleUnion", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlXUnionField Fields41fidl_test_nullable_SimpleUnionNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kInt32Table)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kFloat32Table)}
};
const struct FidlCodedXUnion fidl_test_nullable_SimpleUnionNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields41fidl_test_nullable_SimpleUnionNullableRef, .nullable=kFidlNullability_Nullable, .name="fidl.test.nullable/SimpleUnion", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
const struct FidlCodedStruct fidl_test_nullable_Int32WrapperTable = {.tag=kFidlTypeStruct, .elements=NULL, .element_count=0u, .size=4u, .name="fidl.test.nullable/Int32Wrapper"};

