use std::ffi::c_void;

use crate::c::vulkan::{constants::{enums::result::VkResult, flags::memory_map::VkMemoryMapFlagBits}, types::{base::VkDeviceSize, device::VkDevice, instance::VkAllocationCallbacks, memory::{VkDeviceMemory, VkMemoryAllocateInfo}}};

pub type VkAllocateMemory = unsafe extern "system" fn(
    device: VkDevice,
    p_allocate_info: *const VkMemoryAllocateInfo,
    p_allocator: *const VkAllocationCallbacks,
    p_memory: *mut VkDeviceMemory,
) -> VkResult;

pub type VkFreeMemory = unsafe extern "system" fn(
    device: VkDevice,
    memory: VkDeviceMemory,
    p_allocator: *const VkAllocationCallbacks,
);

pub type VkMapMemory = unsafe extern "system" fn(
    device: VkDevice,
    memory: VkDeviceMemory,
    offset: VkDeviceSize,
    size: VkDeviceSize,
    flags: VkMemoryMapFlagBits,
    pp_data: *mut *mut c_void,
) -> VkResult;

pub type VkUnmapMemory = unsafe extern "system" fn(
    device: VkDevice,
    memory: VkDeviceMemory,
);

