// Copyright 2013-2015 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 crate ::array::CFArrayRef;
use crate ::base::{
mach_port_t, Boolean, CFAllocatorRef, CFHashCode, CFIndex, CFOptionFlags, CFTypeID,
};
use crate ::date::{CFAbsoluteTime, CFTimeInterval};
use crate ::string::CFStringRef;
#[ repr(C)]
pub struct __CFRunLoop(c_void);
pub type CFRunLoopRef = *
mut __CFRunLoop;
#[ repr(C)]
pub struct __CFRunLoopSource(c_void);
pub type CFRunLoopSourceRef = *
mut __CFRunLoopSource;
#[ repr(C)]
pub struct __CFRunLoopObserver(c_void);
pub type CFRunLoopObserverRef = *
mut __CFRunLoopObserver;
// Reasons for CFRunLoopRunInMode() to Return
pub const kCFRunLoopRunFinished: i32 =
1 ;
pub const kCFRunLoopRunStopped: i32 =
2 ;
pub const kCFRunLoopRunTimedOut: i32 =
3 ;
pub const kCFRunLoopRunHandledSource: i32 =
4 ;
// Run Loop Observer Activities
//typedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
pub type CFRunLoopActivity = CFOptionFlags;
pub const kCFRunLoopEntry: CFOptionFlags =
1 <<
0 ;
pub const kCFRunLoopBeforeTimers: CFOptionFlags =
1 <<
1 ;
pub const kCFRunLoopBeforeSources: CFOptionFlags =
1 <<
2 ;
pub const kCFRunLoopBeforeWaiting: CFOptionFlags =
1 <<
5 ;
pub const kCFRunLoopAfterWaiting: CFOptionFlags =
1 <<
6 ;
pub const kCFRunLoopExit: CFOptionFlags =
1 <<
7 ;
pub const kCFRunLoopAllActivities: CFOptionFlags =
0 x0FFFFFFF;
#[ repr(C)]
#[ derive(Debug, Clone, Copy)]
pub struct CFRunLoopSourceContext {
pub version: CFIndex,
pub info: *
mut c_void,
pub retain: Option<
extern "C" fn (info: *
const c_void) -> *
const c_void>,
pub release: Option<
extern "C" fn (info: *
const c_void)>,
pub copyDescription: Option<
extern "C" fn (info: *
const c_void) -> CFStringRef>,
pub equal: Option<
extern "C" fn (info1: *
const c_void, info2: *
const c_void) -> Boolean>,
pub hash: Option<
extern "C" fn (info: *
const c_void) -> CFHashCode>,
pub schedule: Option<
extern "C" fn (info: *
const c_void, rl: CFRunLoopRef, mode: CFStringRef
)>,
pub cancel: Option<extern "C" fn (info: *const c_void, rl: CFRunLoopRef, mode: CFStringRef)>,
pub perform: extern "C" fn (info: *const c_void),
}
#[ repr(C)]
#[ derive(Debug, Clone, Copy)]
pub struct CFRunLoopSourceContext1 {
pub version: CFIndex,
pub info: *mut c_void,
pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
pub release: Option<extern "C" fn (info: *const c_void)>,
pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
pub equal: Option<extern "C" fn (info1: *const c_void, info2: *const c_void) -> Boolean>,
pub hash: Option<extern "C" fn (info: *const c_void) -> CFHashCode>,
#[ cfg(any(target_os = "macos" , target_os = "ios" ))]
pub getPort: extern "C" fn (info: *mut c_void) -> mach_port_t,
#[ cfg(any(target_os = "macos" , target_os = "ios" ))]
pub perform: extern "C" fn (
msg: *mut c_void,
size: CFIndex,
allocator: CFAllocatorRef,
info: *mut c_void,
) -> *mut c_void,
#[ cfg(not(any(target_os = "macos" , target_os = "ios" )))]
pub getPort: extern "C" fn (info: *mut c_void) -> *mut c_void,
#[ cfg(not(any(target_os = "macos" , target_os = "ios" )))]
pub perform: extern "C" fn (info: *mut c_void) -> *mut c_void,
}
#[ repr(C)]
#[ derive(Debug, Clone, Copy)]
pub struct CFRunLoopObserverContext {
pub version: CFIndex,
pub info: *mut c_void,
pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
pub release: Option<extern "C" fn (info: *const c_void)>,
pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
}
pub type CFRunLoopObserverCallBack =
extern "C" fn (observer: CFRunLoopObserverRef, activity: CFRunLoopActivity, info: *mut c_void);
#[ repr(C)]
#[ derive(Clone, Copy, Debug)]
pub struct CFRunLoopTimerContext {
pub version: CFIndex,
pub info: *mut c_void,
pub retain: Option<extern "C" fn (info: *const c_void) -> *const c_void>,
pub release: Option<extern "C" fn (info: *const c_void)>,
pub copyDescription: Option<extern "C" fn (info: *const c_void) -> CFStringRef>,
}
pub type CFRunLoopTimerCallBack = extern "C" fn (timer: CFRunLoopTimerRef, info: *mut c_void);
#[ repr(C)]
pub struct __CFRunLoopTimer(c_void);
pub type CFRunLoopTimerRef = *mut __CFRunLoopTimer;
extern "C" {
/*
* CFRunLoop . h
*/
pub static kCFRunLoopDefaultMode: CFStringRef;
pub static kCFRunLoopCommonModes: CFStringRef;
/* CFRunLoop */
/* Getting a Run Loop */
pub fn CFRunLoopGetCurrent() -> CFRunLoopRef;
pub fn CFRunLoopGetMain() -> CFRunLoopRef;
/* Starting and Stopping a Run Loop */
pub fn CFRunLoopRun();
pub fn CFRunLoopRunInMode(
mode: CFStringRef,
seconds: CFTimeInterval,
returnAfterSourceHandled: Boolean,
) -> i32;
pub fn CFRunLoopWakeUp(rl: CFRunLoopRef);
pub fn CFRunLoopStop(rl: CFRunLoopRef);
pub fn CFRunLoopIsWaiting(rl: CFRunLoopRef) -> Boolean;
/* Managing Sources */
pub fn CFRunLoopAddSource(rl: CFRunLoopRef, source: CFRunLoopSourceRef, mode: CFStringRef);
pub fn CFRunLoopContainsSource(
rl: CFRunLoopRef,
source: CFRunLoopSourceRef,
mode: CFStringRef,
) -> Boolean;
pub fn CFRunLoopRemoveSource(rl: CFRunLoopRef, source: CFRunLoopSourceRef, mode: CFStringRef);
/* Managing Observers */
pub fn CFRunLoopAddObserver(
rl: CFRunLoopRef,
observer: CFRunLoopObserverRef,
mode: CFStringRef,
);
pub fn CFRunLoopContainsObserver(
rl: CFRunLoopRef,
observer: CFRunLoopObserverRef,
mode: CFStringRef,
) -> Boolean;
pub fn CFRunLoopRemoveObserver(
rl: CFRunLoopRef,
observer: CFRunLoopObserverRef,
mode: CFStringRef,
);
/* Managing Run Loop Modes */
pub fn CFRunLoopAddCommonMode(rl: CFRunLoopRef, mode: CFStringRef);
pub fn CFRunLoopCopyAllModes(rl: CFRunLoopRef) -> CFArrayRef;
pub fn CFRunLoopCopyCurrentMode(rl: CFRunLoopRef) -> CFStringRef;
/* Managing Timers */
pub fn CFRunLoopAddTimer(rl: CFRunLoopRef, timer: CFRunLoopTimerRef, mode: CFStringRef);
pub fn CFRunLoopGetNextTimerFireDate(rl: CFRunLoopRef, mode: CFStringRef) -> CFAbsoluteTime;
pub fn CFRunLoopRemoveTimer(rl: CFRunLoopRef, timer: CFRunLoopTimerRef, mode: CFStringRef);
pub fn CFRunLoopContainsTimer(
rl: CFRunLoopRef,
timer: CFRunLoopTimerRef,
mode: CFStringRef,
) -> Boolean;
/* Scheduling Blocks */
// fn CFRunLoopPerformBlock(rl: CFRunLoopRef, mode: CFTypeRef, block: void (^)(void));
/* Getting the CFRunLoop Type ID */
pub fn CFRunLoopGetTypeID() -> CFTypeID;
/* CFRunLoopSource */
/* CFRunLoopSource Miscellaneous Functions */
pub fn CFRunLoopSourceCreate(
allocator: CFAllocatorRef,
order: CFIndex,
context: *mut CFRunLoopSourceContext,
) -> CFRunLoopSourceRef;
pub fn CFRunLoopSourceGetContext(
source: CFRunLoopSourceRef,
context: *mut CFRunLoopSourceContext,
);
pub fn CFRunLoopSourceGetOrder(source: CFRunLoopSourceRef) -> CFIndex;
pub fn CFRunLoopSourceGetTypeID() -> CFTypeID;
pub fn CFRunLoopSourceInvalidate(source: CFRunLoopSourceRef);
pub fn CFRunLoopSourceIsValid(source: CFRunLoopSourceRef) -> Boolean;
pub fn CFRunLoopSourceSignal(source: CFRunLoopSourceRef);
/* CFRunLoopObserver */
/* CFRunLoopObserver Miscellaneous Functions */
// fn CFRunLoopObserverCreateWithHandler(allocator: CFAllocatorRef, activities: CFOptionFlags, repeats: Boolean, order: CFIndex, block: void (^) (CFRunLoopObserverRef observer, CFRunLoopActivity activity)) -> CFRunLoopObserverRef;
pub fn CFRunLoopObserverCreate(
allocator: CFAllocatorRef,
activities: CFOptionFlags,
repeats: Boolean,
order: CFIndex,
callout: CFRunLoopObserverCallBack,
context: *mut CFRunLoopObserverContext,
) -> CFRunLoopObserverRef;
pub fn CFRunLoopObserverDoesRepeat(observer: CFRunLoopObserverRef) -> Boolean;
pub fn CFRunLoopObserverGetActivities(observer: CFRunLoopObserverRef) -> CFOptionFlags;
pub fn CFRunLoopObserverGetContext(
observer: CFRunLoopObserverRef,
context: *mut CFRunLoopObserverContext,
);
pub fn CFRunLoopObserverGetOrder(observer: CFRunLoopObserverRef) -> CFIndex;
pub fn CFRunLoopObserverGetTypeID() -> CFTypeID;
pub fn CFRunLoopObserverInvalidate(observer: CFRunLoopObserverRef);
pub fn CFRunLoopObserverIsValid(observer: CFRunLoopObserverRef) -> Boolean;
/* CFRunLoopTimer */
/* CFRunLoopTimer Miscellaneous Functions */
// fn CFRunLoopTimerCreateWithHandler(allocator: CFAllocatorRef, fireDate: CFAbsoluteTime, interval: CFTimeInterval, flags: CFOptionFlags, order: CFIndex, block: void (^) (CFRunLoopTimerRef timer)) -> CFRunLoopTimerRef;
pub fn CFRunLoopTimerCreate(
allocator: CFAllocatorRef,
fireDate: CFAbsoluteTime,
interval: CFTimeInterval,
flags: CFOptionFlags,
order: CFIndex,
callout: CFRunLoopTimerCallBack,
context: *mut CFRunLoopTimerContext,
) -> CFRunLoopTimerRef;
pub fn CFRunLoopTimerDoesRepeat(timer: CFRunLoopTimerRef) -> Boolean;
pub fn CFRunLoopTimerGetContext(timer: CFRunLoopTimerRef, context: *mut CFRunLoopTimerContext);
pub fn CFRunLoopTimerGetInterval(timer: CFRunLoopTimerRef) -> CFTimeInterval;
pub fn CFRunLoopTimerGetNextFireDate(timer: CFRunLoopTimerRef) -> CFAbsoluteTime;
pub fn CFRunLoopTimerGetOrder(timer: CFRunLoopTimerRef) -> CFIndex;
pub fn CFRunLoopTimerGetTypeID() -> CFTypeID;
pub fn CFRunLoopTimerInvalidate(timer: CFRunLoopTimerRef);
pub fn CFRunLoopTimerIsValid(timer: CFRunLoopTimerRef) -> Boolean;
pub fn CFRunLoopTimerSetNextFireDate(timer: CFRunLoopTimerRef, fireDate: CFAbsoluteTime);
pub fn CFRunLoopTimerGetTolerance(timer: CFRunLoopTimerRef) -> CFTimeInterval; //macos(10.9)+
pub fn CFRunLoopTimerSetTolerance(timer: CFRunLoopTimerRef, tolerance: CFTimeInterval); //macos(10.9)+
}
Messung V0.5 in Prozent C=88 H=100 G=94
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-22)
¤
*© Formatika GbR, Deutschland