diff options
Diffstat (limited to 'src/fns.rs')
-rw-r--r-- | src/fns.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/fns.rs b/src/fns.rs new file mode 100644 index 0000000..88a8354 --- /dev/null +++ b/src/fns.rs @@ -0,0 +1,33 @@ +// 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. + +macro_rules! fns { + ($struct_name:ident, { $($member:ident => $fn_struct:ident,)+ }) => { + pub struct $struct_name { + $( + pub $member: ash::vk::$fn_struct, + )+ + } + + impl $struct_name { + pub fn load<F>(mut load_fn: F) -> $struct_name + where F: FnMut(&std::ffi::CStr) -> *const std::ffi::c_void + { + $struct_name { + $( + $member: ash::vk::$fn_struct::load(&mut load_fn), + )+ + } + } + } + }; +} + +pub use crate::autogen::{DeviceFunctions, EntryFunctions, InstanceFunctions}; +pub(crate) use fns; |