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