diff --git a/core-foundation-sys/src/data.rs b/core-foundation-sys/src/data.rs index e5ed0dc..044e557 100644 --- a/core-foundation-sys/src/data.rs +++ b/core-foundation-sys/src/data.rs @@ -8,31 +8,34 @@ // except according to those terms. use std::os::raw::c_void; - -use base::{CFAllocatorRef, CFTypeID, CFIndex, CFRange}; +use base::{CFAllocatorRef, CFTypeID, CFIndex, CFRange, CFOptionFlags}; #[repr(C)] pub struct __CFData(c_void); pub type CFDataRef = *const __CFData; +pub type CFDataSearchFlags = CFOptionFlags; + +// typedef CF_OPTIONS(CFOptionFlags, CFDataSearchFlags) +pub const kCFDataSearchBackwards: CFDataSearchFlags = 1usize << 0; +pub const kCFDataSearchAnchored: CFDataSearchFlags = 1usize << 1; extern { /* * CFData.h */ - pub fn CFDataCreate(allocator: CFAllocatorRef, - bytes: *const u8, length: CFIndex) -> CFDataRef; - //fn CFDataFind + /* Creating a CFData Object */ + pub fn CFDataCreate(allocator: CFAllocatorRef, bytes: *const u8, length: CFIndex) -> CFDataRef; + pub fn CFDataCreateCopy(allocator: CFAllocatorRef, theData: CFDataRef) -> CFDataRef; + pub fn CFDataCreateWithBytesNoCopy(allocator: CFAllocatorRef, bytes: *const u8, length: CFIndex, bytesDeallocator: CFAllocatorRef) -> CFDataRef; + + /* Examining a CFData Object */ pub fn CFDataGetBytePtr(theData: CFDataRef) -> *const u8; pub fn CFDataGetBytes(theData: CFDataRef, range: CFRange, buffer: *mut u8); pub fn CFDataGetLength(theData: CFDataRef) -> CFIndex; - pub fn CFDataCreateWithBytesNoCopy( - allocator: CFAllocatorRef, - bytes: *const u8, - length: CFIndex, - allocator: CFAllocatorRef, - ) -> CFDataRef; + pub fn CFDataFind(theData: CFDataRef, dataToFind: CFDataRef, searchRange: CFRange, compareOptions: CFDataSearchFlags) -> CFRange; + /* Getting the CFData Type ID */ pub fn CFDataGetTypeID() -> CFTypeID; }