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