1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax core-foundation kernel
5 IN: core-foundation.file-descriptors
7 TYPEDEF: void* CFFileDescriptorRef
8 TYPEDEF: int CFFileDescriptorNativeDescriptor
10 CALLBACK: void CFFileDescriptorCallBack (
11 CFFileDescriptorRef f,
12 CFOptionFlags callBackTypes,
16 C-TYPE: CFFileDescriptorContext
18 FUNCTION: CFFileDescriptorRef CFFileDescriptorCreate (
19 CFAllocatorRef allocator,
20 CFFileDescriptorNativeDescriptor fd,
21 Boolean closeOnInvalidate,
22 CFFileDescriptorCallBack callout,
23 CFFileDescriptorContext* context
26 CONSTANT: kCFFileDescriptorReadCallBack 1
27 CONSTANT: kCFFileDescriptorWriteCallBack 2
29 FUNCTION: void CFFileDescriptorEnableCallBacks (
30 CFFileDescriptorRef f,
31 CFOptionFlags callBackTypes
34 : enable-all-callbacks ( fd -- )
36 kCFFileDescriptorReadCallBack
37 kCFFileDescriptorWriteCallBack
38 } CFFileDescriptorEnableCallBacks ; inline
40 : <CFFileDescriptor> ( fd callback -- handle )
41 [ f ] 2dip [ t ] dip f CFFileDescriptorCreate
42 [ "CFFileDescriptorCreate failed" throw ] unless* ;