aboutsummaryrefslogtreecommitdiff
path: root/src/fns.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/fns.rs')
-rw-r--r--src/fns.rs33
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;