Add some CFFileDescriptor-related functions

db4
Slava Pestov 2008-12-06 17:35:04 -06:00
parent 0359ec8eac
commit d84d267948
2 changed files with 37 additions and 0 deletions

View File

@ -16,13 +16,17 @@ TYPEDEF: void* CFStringRef
TYPEDEF: void* CFURLRef TYPEDEF: void* CFURLRef
TYPEDEF: void* CFUUIDRef TYPEDEF: void* CFUUIDRef
TYPEDEF: void* CFTypeRef TYPEDEF: void* CFTypeRef
TYPEDEF: void* CFFileDescriptorRef
TYPEDEF: bool Boolean TYPEDEF: bool Boolean
TYPEDEF: long CFIndex TYPEDEF: long CFIndex
TYPEDEF: int SInt32 TYPEDEF: int SInt32
TYPEDEF: uint UInt32 TYPEDEF: uint UInt32
TYPEDEF: ulong CFTypeID TYPEDEF: ulong CFTypeID
TYPEDEF: UInt32 CFOptionFlags
TYPEDEF: double CFTimeInterval TYPEDEF: double CFTimeInterval
TYPEDEF: double CFAbsoluteTime TYPEDEF: double CFAbsoluteTime
TYPEDEF: int CFFileDescriptorNativeDescriptor
TYPEDEF: void* CFFileDescriptorCallBack
TYPEDEF: int CFNumberType TYPEDEF: int CFNumberType
: kCFNumberSInt8Type 1 ; inline : kCFNumberSInt8Type 1 ; inline
@ -121,18 +125,35 @@ FUNCTION: CFTypeID CFGetTypeID ( CFTypeRef cf ) ;
] keep CFRelease ; ] keep CFRelease ;
GENERIC: <CFNumber> ( number -- alien ) GENERIC: <CFNumber> ( number -- alien )
M: integer <CFNumber> M: integer <CFNumber>
[ f kCFNumberLongLongType ] dip <longlong> CFNumberCreate ; [ f kCFNumberLongLongType ] dip <longlong> CFNumberCreate ;
M: float <CFNumber> M: float <CFNumber>
[ f kCFNumberDoubleType ] dip <double> CFNumberCreate ; [ f kCFNumberDoubleType ] dip <double> CFNumberCreate ;
M: t <CFNumber> M: t <CFNumber>
drop f kCFNumberIntType 1 <int> CFNumberCreate ; drop f kCFNumberIntType 1 <int> CFNumberCreate ;
M: f <CFNumber> M: f <CFNumber>
drop f kCFNumberIntType 0 <int> CFNumberCreate ; drop f kCFNumberIntType 0 <int> CFNumberCreate ;
: <CFData> ( byte-array -- alien ) : <CFData> ( byte-array -- alien )
[ f ] dip dup length CFDataCreate ; [ f ] dip dup length CFDataCreate ;
FUNCTION: CFFileDescriptorRef CFFileDescriptorCreate (
CFAllocatorRef allocator,
CFFileDescriptorNativeDescriptor fd,
Boolean closeOnInvalidate,
CFFileDescriptorCallBack callout,
CFFileDescriptorContext* context
) ;
FUNCTION: void CFFileDescriptorEnableCallBacks (
CFFileDescriptorRef f,
CFOptionFlags callBackTypes
) ;
: load-framework ( name -- ) : load-framework ( name -- )
dup <CFBundle> [ dup <CFBundle> [
CFBundleLoadExecutable drop CFBundleLoadExecutable drop
@ -141,8 +162,11 @@ M: f <CFNumber>
] ?if ; ] ?if ;
TUPLE: CFRelease-destructor alien disposed ; TUPLE: CFRelease-destructor alien disposed ;
M: CFRelease-destructor dispose* alien>> CFRelease ; M: CFRelease-destructor dispose* alien>> CFRelease ;
: &CFRelease ( alien -- alien ) : &CFRelease ( alien -- alien )
dup f CFRelease-destructor boa &dispose drop ; inline dup f CFRelease-destructor boa &dispose drop ; inline
: |CFRelease ( alien -- alien ) : |CFRelease ( alien -- alien )
dup f CFRelease-destructor boa |dispose drop ; inline dup f CFRelease-destructor boa |dispose drop ; inline

View File

@ -10,6 +10,7 @@ IN: core-foundation.run-loop
: kCFRunLoopRunHandledSource 4 ; inline : kCFRunLoopRunHandledSource 4 ; inline
TYPEDEF: void* CFRunLoopRef TYPEDEF: void* CFRunLoopRef
TYPEDEF: void* CFRunLoopSourceRef
FUNCTION: CFRunLoopRef CFRunLoopGetMain ( ) ; FUNCTION: CFRunLoopRef CFRunLoopGetMain ( ) ;
FUNCTION: CFRunLoopRef CFRunLoopGetCurrent ( ) ; FUNCTION: CFRunLoopRef CFRunLoopGetCurrent ( ) ;
@ -20,6 +21,18 @@ FUNCTION: SInt32 CFRunLoopRunInMode (
Boolean returnAfterSourceHandled Boolean returnAfterSourceHandled
) ; ) ;
FUNCTION: CFRunLoopSourceRef CFFileDescriptorCreateRunLoopSource (
CFAllocatorRef allocator,
CFFileDescriptorRef f,
CFIndex order
) ;
FUNCTION: void CFRunLoopAddSource (
CFRunLoopRef rl,
CFRunLoopSourceRef source,
CFStringRef mode
) ;
: CFRunLoopDefaultMode ( -- alien ) : CFRunLoopDefaultMode ( -- alien )
#! Ugly, but we don't have static NSStrings #! Ugly, but we don't have static NSStrings
\ CFRunLoopDefaultMode get-global dup expired? [ \ CFRunLoopDefaultMode get-global dup expired? [