diff --git a/core-foundation-sys/src/binary_heap.rs b/core-foundation-sys/src/binary_heap.rs new file mode 100644 index 0000000..479ff29 --- /dev/null +++ b/core-foundation-sys/src/binary_heap.rs @@ -0,0 +1,63 @@ +// Copyright 2023 The Servo Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::os::raw::c_void; + +use base::{CFTypeID, CFAllocatorRef, Boolean, CFIndex, CFComparisonResult}; +use string::CFStringRef; + +#[repr(C)] +pub struct __CFBinaryHeap(c_void); + +pub type CFBinaryHeapRef = *mut __CFBinaryHeap; + +#[repr(C)] +#[derive(Debug, Clone, Copy)] +pub struct CFBinaryHeapCompareContext { + pub version: CFIndex, + pub info: *mut c_void, + pub retain: extern "C" fn (info: *const c_void) -> *const c_void, + pub release: extern "C" fn (info: *const c_void), + pub copyDescription: extern "C" fn (info: *const c_void) -> CFStringRef, +} + +#[repr(C)] +#[derive(Debug, Clone, Copy)] +pub struct CFBinaryHeapCallBacks { + pub version: CFIndex, + pub retain: extern "C" fn (allocator: CFAllocatorRef, ptr: *const c_void) -> *const c_void, + pub release: extern "C" fn (allocator: CFAllocatorRef, ptr: *const c_void), + pub copyDescription: extern "C" fn (ptr: *const c_void) -> CFStringRef, + pub compare: extern "C" fn (ptr1: *const c_void, ptr2: *const c_void, context: *mut c_void) -> CFComparisonResult +} + +pub type CFBinaryHeapApplierFunction = extern "C" fn (val: *const c_void, context: *const c_void); + +extern { + /* + * CFBinaryHeap.h + */ + /* Predefined Callback Structures */ + pub static kCFStringBinaryHeapCallBacks: CFBinaryHeapCallBacks; + + /* CFBinaryHeap Miscellaneous Functions */ + pub fn CFBinaryHeapAddValue(heap: CFBinaryHeapRef, value: *const c_void); + pub fn CFBinaryHeapApplyFunction(heap: CFBinaryHeapRef, applier: CFBinaryHeapApplierFunction, context: *mut c_void); + pub fn CFBinaryHeapContainsValue(heap: CFBinaryHeapRef, value: *const c_void) -> Boolean; + pub fn CFBinaryHeapCreate(allocator: CFAllocatorRef, capacity: CFIndex, callBacks: *const CFBinaryHeapCallBacks, compareContext: *const CFBinaryHeapCompareContext) -> CFBinaryHeapRef; + pub fn CFBinaryHeapCreateCopy(allocator: CFAllocatorRef, capacity: CFIndex, heap: CFBinaryHeapRef) -> CFBinaryHeapRef; + pub fn CFBinaryHeapGetCount(heap: CFBinaryHeapRef) -> CFIndex; + pub fn CFBinaryHeapGetCountOfValue(heap: CFBinaryHeapRef, value: *const c_void) -> CFIndex; + pub fn CFBinaryHeapGetMinimum(heap: CFBinaryHeapRef) -> *const c_void; + pub fn CFBinaryHeapGetMinimumIfPresent(heap: CFBinaryHeapRef, value: *const *const c_void) -> Boolean; + pub fn CFBinaryHeapGetTypeID() -> CFTypeID; + pub fn CFBinaryHeapGetValues(heap: CFBinaryHeapRef, values: *const *const c_void); + pub fn CFBinaryHeapRemoveAllValues(heap: CFBinaryHeapRef); + pub fn CFBinaryHeapRemoveMinimumValue(heap: CFBinaryHeapRef); +} diff --git a/core-foundation-sys/src/lib.rs b/core-foundation-sys/src/lib.rs index c15b3a0..9c1f42b 100644 --- a/core-foundation-sys/src/lib.rs +++ b/core-foundation-sys/src/lib.rs @@ -23,6 +23,7 @@ extern "C" {} pub mod array; pub mod attributed_string; pub mod base; +pub mod binary_heap; pub mod bundle; pub mod calendar; pub mod characterset;