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

#include <lib/fidl/internal.h>


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 HandlevmonullableTable = {.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*)(&HandlevmonullableTable)}}
};
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"};

