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