lava 0.4.9

Rust wrapper to manipulate Vulkan more conveniently than with bindings.
Documentation
// Generated by `scripts/generate.js`

use std::os::raw::c_char;
use std::ops::Deref;
use std::ptr;
use std::cmp;
use std::mem;
use utils::c_bindings::*;
use utils::vk_convert::*;
use utils::vk_null::*;
use utils::vk_ptr::*;
use utils::vk_traits::*;
use vulkan::vk::*;
use vulkan::vk::{VkStructureType,RawVkStructureType};
use vulkan::vk::{VkFormat,RawVkFormat};
use vulkan::vk::{VkSamplerYcbcrModelConversion,RawVkSamplerYcbcrModelConversion};
use vulkan::vk::{VkSamplerYcbcrRange,RawVkSamplerYcbcrRange};
use vulkan::vk::{VkComponentMapping,RawVkComponentMapping};
use vulkan::vk::{VkChromaLocation,RawVkChromaLocation};
use vulkan::vk::{VkFilter,RawVkFilter};

/// Wrapper for [VkSamplerYcbcrConversionCreateInfo](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerYcbcrConversionCreateInfo.html).
#[derive(Debug, Clone)]
pub struct VkSamplerYcbcrConversionCreateInfo {
    pub format: VkFormat,
    pub ycbcr_model: VkSamplerYcbcrModelConversion,
    pub ycbcr_range: VkSamplerYcbcrRange,
    pub components: VkComponentMapping,
    pub x_chroma_offset: VkChromaLocation,
    pub y_chroma_offset: VkChromaLocation,
    pub chroma_filter: VkFilter,
    pub force_explicit_reconstruction: bool,
}

#[doc(hidden)]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RawVkSamplerYcbcrConversionCreateInfo {
    pub s_type: RawVkStructureType,
    pub next: *mut c_void,
    pub format: RawVkFormat,
    pub ycbcr_model: RawVkSamplerYcbcrModelConversion,
    pub ycbcr_range: RawVkSamplerYcbcrRange,
    pub components: RawVkComponentMapping,
    pub x_chroma_offset: RawVkChromaLocation,
    pub y_chroma_offset: RawVkChromaLocation,
    pub chroma_filter: RawVkFilter,
    pub force_explicit_reconstruction: u32,
}

impl VkWrappedType<RawVkSamplerYcbcrConversionCreateInfo> for VkSamplerYcbcrConversionCreateInfo {
    fn vk_to_raw(src: &VkSamplerYcbcrConversionCreateInfo, dst: &mut RawVkSamplerYcbcrConversionCreateInfo) {
        dst.s_type = vk_to_raw_value(&VkStructureType::SamplerYcbcrConversionCreateInfo);
        dst.next = ptr::null_mut();
        dst.format = vk_to_raw_value(&src.format);
        dst.ycbcr_model = vk_to_raw_value(&src.ycbcr_model);
        dst.ycbcr_range = vk_to_raw_value(&src.ycbcr_range);
        dst.components = vk_to_raw_value(&src.components);
        dst.x_chroma_offset = vk_to_raw_value(&src.x_chroma_offset);
        dst.y_chroma_offset = vk_to_raw_value(&src.y_chroma_offset);
        dst.chroma_filter = vk_to_raw_value(&src.chroma_filter);
        dst.force_explicit_reconstruction = vk_to_raw_value(&src.force_explicit_reconstruction);
    }
}

impl VkRawType<VkSamplerYcbcrConversionCreateInfo> for RawVkSamplerYcbcrConversionCreateInfo {
    fn vk_to_wrapped(src: &RawVkSamplerYcbcrConversionCreateInfo) -> VkSamplerYcbcrConversionCreateInfo {
        VkSamplerYcbcrConversionCreateInfo {
            format: RawVkFormat::vk_to_wrapped(&src.format),
            ycbcr_model: RawVkSamplerYcbcrModelConversion::vk_to_wrapped(&src.ycbcr_model),
            ycbcr_range: RawVkSamplerYcbcrRange::vk_to_wrapped(&src.ycbcr_range),
            components: RawVkComponentMapping::vk_to_wrapped(&src.components),
            x_chroma_offset: RawVkChromaLocation::vk_to_wrapped(&src.x_chroma_offset),
            y_chroma_offset: RawVkChromaLocation::vk_to_wrapped(&src.y_chroma_offset),
            chroma_filter: RawVkFilter::vk_to_wrapped(&src.chroma_filter),
            force_explicit_reconstruction: u32::vk_to_wrapped(&src.force_explicit_reconstruction),
        }
    }
}

impl Default for VkSamplerYcbcrConversionCreateInfo {
    fn default() -> VkSamplerYcbcrConversionCreateInfo {
        VkSamplerYcbcrConversionCreateInfo {
            format: Default::default(),
            ycbcr_model: Default::default(),
            ycbcr_range: Default::default(),
            components: Default::default(),
            x_chroma_offset: Default::default(),
            y_chroma_offset: Default::default(),
            chroma_filter: Default::default(),
            force_explicit_reconstruction: false,
        }
    }
}

impl VkSetup for VkSamplerYcbcrConversionCreateInfo {
    fn vk_setup(&mut self, fn_table: *mut VkFunctionTable) {
        VkSetup::vk_setup(&mut self.components, fn_table);
    }
}

impl VkFree for RawVkSamplerYcbcrConversionCreateInfo {
    fn vk_free(&self) {
        
    }
}