// 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 crate::base::{CFAllocatorRef, CFComparatorFunction, CFIndex, CFTypeID}; use crate::string::CFStringRef; #[repr(C)] pub struct __CFTree(c_void); pub type CFTreeRef = *mut __CFTree; pub type CFTreeRetainCallBack = extern "C" fn(info: *const c_void) -> *const c_void; pub type CFTreeReleaseCallBack = extern "C" fn(info: *const c_void); pub type CFTreeCopyDescriptionCallBack = extern "C" fn(info: *const c_void) -> CFStringRef; pub type CFTreeApplierFunction = extern "C" fn(value: *const c_void, context: *mut c_void); #[repr(C)] pub struct CFTreeContext { pub version: CFIndex, pub info: *mut c_void, pub retain: CFTreeRetainCallBack, pub release: CFTreeReleaseCallBack, pub copyDescription: CFTreeCopyDescriptionCallBack, } extern "C" { /* * CFTree.h */ /* Creating Trees */ pub fn CFTreeCreate(allocator: CFAllocatorRef, context: *const CFTreeContext) -> CFTreeRef; /* Modifying a Tree */ pub fn CFTreeAppendChild(tree: CFTreeRef, newChild: CFTreeRef); pub fn CFTreeInsertSibling(tree: CFTreeRef, newSibling: CFTreeRef); pub fn CFTreeRemoveAllChildren(tree: CFTreeRef); pub fn CFTreePrependChild(tree: CFTreeRef, newChild: CFTreeRef); pub fn CFTreeRemove(tree: CFTreeRef); pub fn CFTreeSetContext(tree: CFTreeRef, context: *const CFTreeContext); /* Sorting a Tree */ pub fn CFTreeSortChildren( tree: CFTreeRef, comparator: CFComparatorFunction, context: *mut c_void, ); /* Examining a Tree */ pub fn CFTreeFindRoot(tree: CFTreeRef) -> CFTreeRef; pub fn CFTreeGetChildAtIndex(tree: CFTreeRef, idx: CFIndex) -> CFTreeRef; pub fn CFTreeGetChildCount(tree: CFTreeRef) -> CFIndex; pub fn CFTreeGetChildren(tree: CFTreeRef, children: *mut CFTreeRef); pub fn CFTreeGetContext(tree: CFTreeRef, context: *mut CFTreeContext); pub fn CFTreeGetFirstChild(tree: CFTreeRef) -> CFTreeRef; pub fn CFTreeGetNextSibling(tree: CFTreeRef) -> CFTreeRef; pub fn CFTreeGetParent(tree: CFTreeRef) -> CFTreeRef; /* Performing an Operation on Tree Elements */ pub fn CFTreeApplyFunctionToChildren( tree: CFTreeRef, applier: CFTreeApplierFunction, context: *mut c_void, ); /* Getting the Tree Type ID */ pub fn CFTreeGetTypeID() -> CFTypeID; }