]> gitweb.factorcode.org Git - factor.git/blob - basis/core-foundation/file-descriptors/file-descriptors.factor
c9fe3131b148271497b9ffe60f69c31272bb1736
[factor.git] / basis / core-foundation / file-descriptors / file-descriptors.factor
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
5
6 TYPEDEF: void* CFFileDescriptorRef
7 TYPEDEF: int CFFileDescriptorNativeDescriptor
8 TYPEDEF: void* CFFileDescriptorCallBack
9
10 FUNCTION: CFFileDescriptorRef CFFileDescriptorCreate (
11     CFAllocatorRef allocator,
12     CFFileDescriptorNativeDescriptor fd,
13     Boolean closeOnInvalidate,
14     CFFileDescriptorCallBack callout, 
15     CFFileDescriptorContext* context
16 ) ;
17
18 CONSTANT: kCFFileDescriptorReadCallBack 1
19 CONSTANT: kCFFileDescriptorWriteCallBack 2
20    
21 FUNCTION: void CFFileDescriptorEnableCallBacks (
22     CFFileDescriptorRef f,
23     CFOptionFlags callBackTypes
24 ) ;
25
26 : enable-all-callbacks ( fd -- )
27     { kCFFileDescriptorReadCallBack kCFFileDescriptorWriteCallBack } flags
28     CFFileDescriptorEnableCallBacks ;
29
30 : <CFFileDescriptor> ( fd callback -- handle )
31     [ f swap ] [ t swap ] bi* f CFFileDescriptorCreate
32     [ "CFFileDescriptorCreate failed" throw ] unless* ;