
#[derive(Clone, Debug, PartialEq)]
struct FunctionParameter {
    pub name: &'static str,
    pub type_name: &'static str,
}

#[derive(Clone, Debug, PartialEq)]
struct FunctionSignature {
    pub name: &'static str,
    pub parameters: &'static [FunctionParameter],
    pub return_type: Option<&'static str>,
}

#[derive(Clone, Debug, PartialEq)]
struct ObjectProperty {
    pub name: &'static str,
    pub type_name: &'static str,
    pub function: Option<FunctionSignature>,
}


static API_MAP: phf::Map<&'static str, &[ObjectProperty]> = ::phf::Map {
    key: 2689841203009609170,
    disps: &[
        (0, 7),
        (2, 0),
    ],
    entries: &[
        ("Frame", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "add_pass", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_pass", parameters: &[FunctionParameter { name: "pass", type_name: "& Pass" }], return_type: None }) }, ]),
        ("Shader", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[FunctionParameter { name: "source", type_name: "& str" }], return_type: Some("Result < Self , ShaderError >") }) }, ObjectProperty { name: "set", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set", parameters: &[FunctionParameter { name: "key", type_name: "& str" }, FunctionParameter { name: "value", type_name: "impl Into < UniformData >" }], return_type: Some("Result < () , ShaderError >") }) }, ObjectProperty { name: "get", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "get", parameters: &[FunctionParameter { name: "key", type_name: "& str" }], return_type: Some("Result < T , ShaderError >") }) }, ObjectProperty { name: "list_uniforms", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "list_uniforms", parameters: &[], return_type: Some("Vec < String >") }) }, ObjectProperty { name: "list_keys", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "list_keys", parameters: &[], return_type: Some("Vec < String >") }) }, ObjectProperty { name: "from_vertex", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "from_vertex", parameters: &[FunctionParameter { name: "v", type_name: "& crate :: mesh :: Vertex" }], return_type: Some("Self") }) }, ObjectProperty { name: "from_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "from_mesh", parameters: &[FunctionParameter { name: "mesh", type_name: "& crate :: mesh :: Mesh" }], return_type: Some("Self") }) }, ObjectProperty { name: "add_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_mesh", parameters: &[FunctionParameter { name: "mesh", type_name: "& crate :: mesh :: Mesh" }], return_type: Some("Result < () , ShaderError >") }) }, ObjectProperty { name: "remove_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "remove_mesh", parameters: &[FunctionParameter { name: "mesh", type_name: "& crate :: mesh :: Mesh" }], return_type: None }) }, ObjectProperty { name: "remove_meshes", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "remove_meshes", parameters: &[FunctionParameter { name: "list", type_name: "I" }], return_type: None }) }, ObjectProperty { name: "clear_meshes", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "clear_meshes", parameters: &[], return_type: None }) }, ObjectProperty { name: "validate_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "validate_mesh", parameters: &[FunctionParameter { name: "mesh", type_name: "& crate :: mesh :: Mesh" }], return_type: Some("Result < () , ShaderError >") }) }, ObjectProperty { name: "is_compute", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "is_compute", parameters: &[], return_type: Some("bool") }) }, ]),
        ("Pass", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[FunctionParameter { name: "name", type_name: "& str" }], return_type: Some("Self") }) }, ObjectProperty { name: "compute", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "compute", parameters: &[FunctionParameter { name: "name", type_name: "& str" }], return_type: Some("Self") }) }, ObjectProperty { name: "from_shader", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "from_shader", parameters: &[FunctionParameter { name: "name", type_name: "& str" }, FunctionParameter { name: "shader", type_name: "& Shader" }], return_type: Some("Self") }) }, ObjectProperty { name: "load_previous", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "load_previous", parameters: &[], return_type: None }) }, ObjectProperty { name: "get_input", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "get_input", parameters: &[], return_type: Some("PassInput") }) }, ObjectProperty { name: "add_shader", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_shader", parameters: &[FunctionParameter { name: "shader", type_name: "& Shader" }], return_type: None }) }, ObjectProperty { name: "add_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_mesh", parameters: &[FunctionParameter { name: "mesh", type_name: "& Mesh" }], return_type: Some("Result < () , PassError >") }) }, ObjectProperty { name: "add_mesh_to_shader", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_mesh_to_shader", parameters: &[FunctionParameter { name: "mesh", type_name: "& Mesh" }, FunctionParameter { name: "shader", type_name: "& Shader" }], return_type: Some("Result < () , PassError >") }) }, ObjectProperty { name: "set_viewport", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set_viewport", parameters: &[FunctionParameter { name: "viewport", type_name: "impl Into < Region >" }], return_type: None }) }, ObjectProperty { name: "set_clear_color", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set_clear_color", parameters: &[FunctionParameter { name: "color", type_name: "[f32 ; 4]" }], return_type: None }) }, ObjectProperty { name: "set_compute_dispatch", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set_compute_dispatch", parameters: &[FunctionParameter { name: "x", type_name: "u32" }, FunctionParameter { name: "y", type_name: "u32" }, FunctionParameter { name: "z", type_name: "u32" }], return_type: None }) }, ObjectProperty { name: "add_target", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_target", parameters: &[FunctionParameter { name: "target", type_name: "T" }], return_type: Some("Result < () , PassError >") }) }, ObjectProperty { name: "add_depth_target", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_depth_target", parameters: &[FunctionParameter { name: "target", type_name: "T" }], return_type: Some("Result < () , PassError >") }) }, ObjectProperty { name: "is_compute", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "is_compute", parameters: &[], return_type: Some("bool") }) }, ObjectProperty { name: "require", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "require", parameters: &[FunctionParameter { name: "dependencies", type_name: "& R" }], return_type: Some("Result < () , PassError >") }) }, ]),
        ("Vertex", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[FunctionParameter { name: "position", type_name: "P" }], return_type: Some("Self") }) }, ObjectProperty { name: "set", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set", parameters: &[FunctionParameter { name: "key", type_name: "& str" }, FunctionParameter { name: "v", type_name: "V" }], return_type: Some("Self") }) }, ObjectProperty { name: "create_instance", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_instance", parameters: &[], return_type: Some("Instance") }) }, ]),
        ("Texture", &[ObjectProperty { name: "size", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "size", parameters: &[], return_type: Some("crate :: Size") }) }, ObjectProperty { name: "aspect", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "aspect", parameters: &[], return_type: Some("f32") }) }, ObjectProperty { name: "set_sampler_options", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set_sampler_options", parameters: &[FunctionParameter { name: "options", type_name: "SamplerOptions" }], return_type: None }) }, ]),
        ("Renderer", &[ObjectProperty { name: "new_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new_js", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "create_target_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_target_js", parameters: &[FunctionParameter { name: "canvas", type_name: "JsValue" }], return_type: Some("Result < CanvasTarget , JsError >") }) }, ObjectProperty { name: "create_texture_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_js", parameters: &[FunctionParameter { name: "input", type_name: "& JsValue" }], return_type: Some("Result < crate :: texture :: Texture , JsError >") }) }, ObjectProperty { name: "create_texture_with_size_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_size_js", parameters: &[FunctionParameter { name: "input", type_name: "& JsValue" }, FunctionParameter { name: "size", type_name: "& JsValue" }], return_type: Some("Result < crate :: texture :: Texture , JsError >") }) }, ObjectProperty { name: "create_texture_target_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_target_js", parameters: &[FunctionParameter { name: "size", type_name: "& JsValue" }], return_type: Some("Result < crate :: TextureTarget , JsError >") }) }, ObjectProperty { name: "create_texture_with_format_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_format_js", parameters: &[FunctionParameter { name: "input", type_name: "& JsValue" }, FunctionParameter { name: "format", type_name: "crate :: TextureFormat" }], return_type: Some("Result < crate :: texture :: Texture , JsError >") }) }, ObjectProperty { name: "create_texture_with_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_js", parameters: &[FunctionParameter { name: "input", type_name: "& JsValue" }, FunctionParameter { name: "options", type_name: "& JsValue" }], return_type: Some("Result < crate :: texture :: Texture , JsError >") }) }, ObjectProperty { name: "create_storage_texture_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_storage_texture_js", parameters: &[FunctionParameter { name: "size", type_name: "& JsValue" }, FunctionParameter { name: "format", type_name: "crate :: TextureFormat" }, FunctionParameter { name: "usage", type_name: "Option < u32 >" }], return_type: Some("Result < crate :: texture :: Texture , JsError >") }) }, ObjectProperty { name: "create_depth_texture_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_depth_texture_js", parameters: &[FunctionParameter { name: "size", type_name: "& JsValue" }], return_type: Some("Result < Texture , JsError >") }) }, ObjectProperty { name: "render_js", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "render_js", parameters: &[FunctionParameter { name: "renderable", type_name: "& JsValue" }, FunctionParameter { name: "target", type_name: "& JsValue" }], return_type: Some("Result < () , RendererError >") }) }, ObjectProperty { name: "new_android", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new_android", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "create_target_android", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_target_android", parameters: &[FunctionParameter { name: "env", type_name: "* mut JNIEnv" }, FunctionParameter { name: "surface", type_name: "jobject" }], return_type: Some("Result < AndroidTarget , crate :: InitializationError >") }) }, ObjectProperty { name: "create_texture_target_android", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_target_android", parameters: &[FunctionParameter { name: "size", type_name: "impl Into < crate :: Size >" }], return_type: Some("Result < AndroidTextureTarget , crate :: InitializationError >") }) }, ObjectProperty { name: "render_android", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "render_android", parameters: &[FunctionParameter { name: "renderable", type_name: "& impl crate :: renderer :: Renderable" }, FunctionParameter { name: "target", type_name: "& impl crate :: Target" }], return_type: Some("Result < () , crate :: RendererError >") }) }, ObjectProperty { name: "new_ios", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new_ios", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "create_target_ios", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_target_ios", parameters: &[FunctionParameter { name: "metal_layer_ptr", type_name: "u64" }], return_type: Some("Result < IosTarget , crate :: InitializationError >") }) }, ObjectProperty { name: "create_texture_target_ios", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_target_ios", parameters: &[FunctionParameter { name: "size", type_name: "impl Into < crate :: Size >" }], return_type: Some("Result < IosTextureTarget , crate :: InitializationError >") }) }, ObjectProperty { name: "render_ios", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "render_ios", parameters: &[FunctionParameter { name: "renderable", type_name: "& impl crate :: renderer :: Renderable" }, FunctionParameter { name: "target", type_name: "& impl crate :: Target" }], return_type: Some("Result < () , crate :: RendererError >") }) }, ObjectProperty { name: "new_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new_py", parameters: &[], return_type: Some("Renderer") }) }, ObjectProperty { name: "create_target_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_target_py", parameters: &[FunctionParameter { name: "rendercanvas", type_name: "Py < PyAny >" }], return_type: Some("Result < Py < RenderCanvasTarget > , PyErr >") }) }, ObjectProperty { name: "create_texture_target_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_target_py", parameters: &[FunctionParameter { name: "size", type_name: "PySize" }], return_type: Some("Result < Py < PyTextureTarget > , PyErr >") }) }, ObjectProperty { name: "create_texture_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_py", parameters: &[FunctionParameter { name: "input", type_name: "Py < PyAny >" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "render_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "render_py", parameters: &[FunctionParameter { name: "renderable", type_name: "Py < PyAny >" }, FunctionParameter { name: "target", type_name: "Py < PyAny >" }], return_type: Some("Result < () , PyErr >") }) }, ObjectProperty { name: "create_depth_texture_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_depth_texture_py", parameters: &[FunctionParameter { name: "size", type_name: "PySize" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "create_storage_texture_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_storage_texture_py", parameters: &[FunctionParameter { name: "size", type_name: "PySize" }, FunctionParameter { name: "format", type_name: "crate :: TextureFormat" }, FunctionParameter { name: "usage_bits", type_name: "Option < u32 >" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "create_texture_with_size_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_size_py", parameters: &[FunctionParameter { name: "input", type_name: "Py < PyAny >" }, FunctionParameter { name: "size", type_name: "PySize" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "create_texture_with_format_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_format_py", parameters: &[FunctionParameter { name: "input", type_name: "Py < PyAny >" }, FunctionParameter { name: "format", type_name: "crate :: texture :: TextureFormat" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "create_texture_with_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_py", parameters: &[FunctionParameter { name: "input", type_name: "Py < PyAny >" }, FunctionParameter { name: "size", type_name: "Option < PySize >" }], return_type: Some("Result < crate :: texture :: Texture , PyErr >") }) }, ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "create_target", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_target", parameters: &[FunctionParameter { name: "window", type_name: "impl Into < wgpu :: SurfaceTarget < 'static > > + HasDisplaySize" }], return_type: Some("Result < crate :: RenderTarget , InitializationError >") }) }, ObjectProperty { name: "create_texture_target", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_target", parameters: &[FunctionParameter { name: "size", type_name: "impl Into < Size >" }], return_type: Some("Result < TextureTarget , InitializationError >") }) }, ObjectProperty { name: "create_texture", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture", parameters: &[FunctionParameter { name: "input", type_name: "impl Into < crate :: texture :: TextureInput >" }], return_type: Some("Result < crate :: texture :: Texture , RendererError >") }) }, ObjectProperty { name: "create_texture_with_size", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_size", parameters: &[FunctionParameter { name: "input", type_name: "impl Into < TextureInput >" }, FunctionParameter { name: "size", type_name: "impl Into < Size >" }], return_type: Some("Result < crate :: texture :: Texture , RendererError >") }) }, ObjectProperty { name: "create_texture_with_format", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with_format", parameters: &[FunctionParameter { name: "input", type_name: "impl Into < TextureInput >" }, FunctionParameter { name: "format", type_name: "impl Into < crate :: texture :: TextureFormat >" }], return_type: Some("Result < crate :: texture :: Texture , RendererError >") }) }, ObjectProperty { name: "create_texture_with", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_texture_with", parameters: &[FunctionParameter { name: "input", type_name: "impl Into < TextureInput >" }, FunctionParameter { name: "options", type_name: "impl Into < TextureOptions >" }], return_type: Some("Result < crate :: texture :: Texture , RendererError >") }) }, ObjectProperty { name: "create_storage_texture", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_storage_texture", parameters: &[FunctionParameter { name: "size", type_name: "impl Into < crate :: Size >" }, FunctionParameter { name: "format", type_name: "impl Into < crate :: TextureFormat >" }, FunctionParameter { name: "usage", type_name: "Option < wgpu :: TextureUsages >" }], return_type: Some("Result < crate :: texture :: Texture , InitializationError >") }) }, ObjectProperty { name: "create_depth_texture", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "create_depth_texture", parameters: &[FunctionParameter { name: "size", type_name: "impl Into < crate :: Size >" }], return_type: Some("Result < crate :: texture :: Texture , InitializationError >") }) }, ObjectProperty { name: "render", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "render", parameters: &[FunctionParameter { name: "renderable", type_name: "& impl Renderable" }, FunctionParameter { name: "target", type_name: "& impl Target" }], return_type: Some("Result < () , RendererError >") }) }, ]),
        ("Mesh", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[], return_type: Some("Self") }) }, ObjectProperty { name: "from_vertices", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "from_vertices", parameters: &[FunctionParameter { name: "verts", type_name: "I" }], return_type: Some("Self") }) }, ObjectProperty { name: "add_vertex", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_vertex", parameters: &[FunctionParameter { name: "v", type_name: "V" }], return_type: None }) }, ObjectProperty { name: "add_vertices", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_vertices", parameters: &[FunctionParameter { name: "vertices", type_name: "I" }], return_type: None }) }, ObjectProperty { name: "add_instance", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_instance", parameters: &[FunctionParameter { name: "instance_buffer", type_name: "T" }], return_type: None }) }, ObjectProperty { name: "add_instances", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "add_instances", parameters: &[FunctionParameter { name: "instances", type_name: "I" }], return_type: None }) }, ObjectProperty { name: "clear_instances", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "clear_instances", parameters: &[], return_type: None }) }, ObjectProperty { name: "set_instance_count", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "set_instance_count", parameters: &[FunctionParameter { name: "n", type_name: "u32" }], return_type: None }) }, ObjectProperty { name: "clear_instance_count", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "clear_instance_count", parameters: &[], return_type: None }) }, ]),
        ("Quad", &[ObjectProperty { name: "new", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new", parameters: &[FunctionParameter { name: "min", type_name: "[f32 ; 2]" }, FunctionParameter { name: "max", type_name: "[f32 ; 2]" }], return_type: Some("Self") }) }, ObjectProperty { name: "get_mesh", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "get_mesh", parameters: &[], return_type: Some("Mesh") }) }, ObjectProperty { name: "new_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "new_py", parameters: &[FunctionParameter { name: "min", type_name: "[f32 ; 2]" }, FunctionParameter { name: "max", type_name: "[f32 ; 2]" }], return_type: Some("Self") }) }, ObjectProperty { name: "get_mesh_py", type_name: "FunctionSignature", function: Some(FunctionSignature { name: "get_mesh_py", parameters: &[], return_type: Some("Mesh") }) }, ]),
    ],
};
