1 typealias CreateDebugUtilsMessengerExt = fn 2 (instance : VkInstance) 3 * (create_info : ptr DebugUtilsMessengerCreateInfoExt) 4 * (allocator : Allocator) 5 * (messenger : mut ptr DebugUtilsMessengerExt) -> Result 6 7 typealias DestroyDebugUtilsMessengerExt = fn 8 (instance : VkInstance) 9 * (messenger : DebugUtilsMessengerExt) 10 * (allocator : Allocator) -> Unit 11 12 let callback (message_severity : DebugUtilsMessageSeverityFlagsExt 13 message_type : DebugUtilsMessageTypeFlagsExt 14 callback_data : ptr DebugUtilsMessengerCallbackDataExt 15 user_data : MutPtr) : u32 = 16 println callback_data@to_ref.message 17 0 18 19 module messenger 20 21 val create_info = 22 let message_severity = DebugUtilsMessageSeverityFlagsExt/ErrorExt 23 | DebugUtilsMessageSeverityFlagsExt/InfoExt 24 | DebugUtilsMessageSeverityFlagsExt/WarningExt 25 let message_type = DebugUtilsMessageTypeFlagsExt/GeneralExt 26 | DebugUtilsMessageTypeFlagsExt/PerformanceExt 27 | DebugUtilsMessageTypeFlagsExt/ValidationExt 28 let structure_type = StructureType/DebugUtilsMessengerCreateInfoExt 29 30 DebugUtilsMessengerCreateInfoExt 31 type = structure_type 32 next = null 33 flags = DebugUtilsMessengerCreateFlagsExt@zero 34 =message_severity 35 =message_type 36 user_callback = callback@fn 37 user_data = null 38 39 endmodule 40 41 type VkInstance 42 def create_messenger = 43 let proc_name = "vkCreateDebugUtilsMessengerEXT" 44 let proc_address = vk/get_instance_proc_addr self proc_name 45 let f = proc_address as CreateDebugUtilsMessengerExt 46 47 let create_info = messenger/create_info 48 let mut messenger = DebugUtilsMessengerExt@zero 49 50 f self create_info@ptr null messenger@mut_ptr 51 52 messenger 53 54 def destroy_messenger (messenger : DebugUtilsMessengerExt) = 55 let proc_name = "vkDestroyDebugUtilsMessengerEXT" 56 let proc_address = vk/get_instance_proc_addr self proc_name 57 let f = proc_address as DestroyDebugUtilsMessengerExt 58 59 f self messenger null 60