diff options
Diffstat (limited to 'autogen/fns.rs')
-rw-r--r-- | autogen/fns.rs | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/autogen/fns.rs b/autogen/fns.rs deleted file mode 100644 index da25938..0000000 --- a/autogen/fns.rs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) 2021 The Vulkano developers -// Licensed under the Apache License, Version 2.0 -// <LICENSE-APACHE or -// https://www.apache.org/licenses/LICENSE-2.0> or the MIT -// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, -// at your option. All files in the project carrying such -// notice may not be copied, modified, or distributed except -// according to those terms. - -use heck::{CamelCase, SnakeCase}; -use indexmap::IndexMap; -use std::io::Write; -use vk_parse::{Extension, ExtensionChild, InterfaceItem}; - -pub fn write<W: Write>(writer: &mut W, extensions: &IndexMap<&str, &Extension>) { - write_fns(writer, std::iter::empty(), "Entry"); - write!(writer, "\n\n").unwrap(); - write_fns( - writer, - make_vulkano_extension_fns("instance", &extensions), - "Instance", - ); - write!(writer, "\n\n").unwrap(); - write_fns( - writer, - make_vulkano_extension_fns("device", &extensions), - "Device", - ); -} - -#[derive(Clone, Debug)] -struct VulkanoFns { - member: String, - fn_struct: String, -} - -fn make_vulkano_extension_fns( - ty: &str, - extensions: &IndexMap<&str, &Extension>, -) -> Vec<VulkanoFns> { - extensions - .values() - .filter(|ext| ext.ext_type.as_ref().unwrap() == ty) - // Filter only extensions that have functions - .filter(|ext| { - ext.children.iter().any(|ch| { - if let ExtensionChild::Require { items, .. } = ch { - items - .iter() - .any(|i| matches!(i, InterfaceItem::Command { .. })) - } else { - false - } - }) - }) - .map(|ext| { - let member = ext.name.strip_prefix("VK_").unwrap().to_snake_case(); - let fn_struct = member.to_camel_case() + "Fn"; - VulkanoFns { member, fn_struct } - }) - .collect() -} - -fn write_fns<W, I>(writer: &mut W, extension_fns: I, ty: &str) -where - W: Write, - I: IntoIterator<Item = VulkanoFns>, -{ - write!(writer, "crate::fns::fns!({}Functions, {{", ty).unwrap(); - - for version in std::array::IntoIter::new(["1_0", "1_1", "1_2"]) { - write!(writer, "\n\tv{} => {}FnV{0},", version, ty).unwrap(); - } - - for ext in extension_fns { - write!(writer, "\n\t{} => {},", ext.member, ext.fn_struct).unwrap(); - } - write!(writer, "\n}});").unwrap(); -} |