Update IOSurface to new AbstractCFType trait.

This commit is contained in:
Brian J. Burg
2012-11-01 19:51:08 -07:00
parent 2dddb35d7d
commit bc32ae3eea
+27 -18
View File
@@ -1,14 +1,19 @@
// Rust bindings to the IOSurface framework on Mac OS X.
use core_foundation::base::{AbstractCFType, CFRelease, CFType, CFTypeOps, CFTypeRef};
use core_foundation::dictionary::{CFDictionary, CFDictionaryRef};
use core_foundation::number::CFNumber;
use core_foundation::string::{CFString, CFStringRef};
use cf = core_foundation;
use cf::base::{AbstractCFType, AbstractCFTypeRef, CFRelease, CFType, CFTypeOps, CFTypeRef};
use cf::dictionary::{CFDictionary, CFDictionaryRef};
use cf::number::CFNumber;
use cf::string::{CFString, CFStringRef};
use cast::transmute;
struct __IOSurface { private: () }
pub type IOSurfaceRef = *__IOSurface;
impl IOSurfaceRef : AbstractCFTypeRef {
pure fn as_type_ref(&self) -> CFTypeRef { *self as CFTypeRef }
}
pub type IOSurfaceID = u32;
pub struct IOSurface {
@@ -22,25 +27,29 @@ pub struct IOSurface {
}
pub impl IOSurface {
static fn new_io_surface(properties: &CFDictionary<CFStringRef, CFTypeRef, CFString, CFType>) -> IOSurface {
cf::base::wrap(IOSurfaceCreate(properties.obj))
}
static fn lookup(csid: IOSurfaceID) -> IOSurface {
cf::base::wrap(IOSurfaceLookup(csid))
}
}
impl IOSurface : AbstractCFType<IOSurfaceRef> {
pure fn as_type_ref(&self) -> CFTypeRef {
unsafe {
transmute(copy self.obj)
}
}
static fn wrap(obj: IOSurfaceRef) -> IOSurface {
assert obj != ptr::null();
IOSurface { obj: obj }
}
static fn new_io_surface(properties: &CFDictionary<CFString,CFType>) -> IOSurface {
IOSurface::wrap(IOSurfaceCreate(properties.obj))
}
static fn lookup(csid: IOSurfaceID) -> IOSurface {
IOSurface::wrap(IOSurfaceLookup(csid))
}
}
impl IOSurface : AbstractCFType {
pure fn as_type_ref(&self) -> CFTypeRef {
unsafe {
transmute(copy self.obj)
}
static fn unwrap(wrapper: IOSurface) -> IOSurfaceRef {
wrapper.obj
}
}