sys: Introduce CFBinaryHeap

Implements CFBinaryHeap related functions and constants.
This commit is contained in:
michaelwright235
2023-06-19 00:07:10 +03:00
parent f904d7f4ad
commit d0d9362372
2 changed files with 64 additions and 0 deletions
+63
View File
@@ -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 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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);
}
+1
View File
@@ -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;