1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax kernel math.bitwise core-foundation
5 IN: core-foundation.file-descriptors
7 TYPEDEF: void* CFFileDescriptorRef
8 TYPEDEF: int CFFileDescriptorNativeDescriptor
9 TYPEDEF: void* CFFileDescriptorCallBack
10 C-TYPE: CFFileDescriptorContext
12 FUNCTION: CFFileDescriptorRef CFFileDescriptorCreate (
13 CFAllocatorRef allocator,
14 CFFileDescriptorNativeDescriptor fd,
15 Boolean closeOnInvalidate,
16 CFFileDescriptorCallBack callout,
17 CFFileDescriptorContext* context
20 CONSTANT: kCFFileDescriptorReadCallBack 1
21 CONSTANT: kCFFileDescriptorWriteCallBack 2
23 FUNCTION: void CFFileDescriptorEnableCallBacks (
24 CFFileDescriptorRef f,
25 CFOptionFlags callBackTypes
28 : enable-all-callbacks ( fd -- )
29 flags{ kCFFileDescriptorReadCallBack kCFFileDescriptorWriteCallBack }
30 CFFileDescriptorEnableCallBacks ;
32 : <CFFileDescriptor> ( fd callback -- handle )
33 [ f swap ] [ t swap ] bi* f CFFileDescriptorCreate
34 [ "CFFileDescriptorCreate failed" throw ] unless* ;