iron-oxide 0.1.1

Unsafe Rusty Metal.
Documentation
use crate::import_objc_macros::*;
use crate::{
    handle, DeviceCreated, MTLResource, NSRange, NSUInteger, NSUIntegerRange, Object, ObjectPointer,
};
use std::os::raw::c_void;

pub struct MTLBuffer(ObjectPointer);
handle!(MTLBuffer);

impl MTLBuffer {
    pub unsafe fn get_contents(&self) -> *mut c_void {
        msg_send![self.get_ptr(), contents]
    }
    pub unsafe fn did_modify_range(&self, range: NSUIntegerRange) {
        let range = NSRange {
            location: range.start,
            length: range.end,
        };
        msg_send![self.get_ptr(), didModifyRange: range]
    }
    pub unsafe fn get_length(&self) -> NSUInteger {
        msg_send![self.get_ptr(), length]
    }
}

impl MTLResource for MTLBuffer {}

impl DeviceCreated for MTLBuffer {}

impl Object for MTLBuffer {
    unsafe fn from_ptr(ptr: ObjectPointer) -> Self
    where
        Self: Sized,
    {
        MTLBuffer(ptr)
    }

    fn get_ptr(&self) -> ObjectPointer {
        self.0
    }
}