]> gitweb.factorcode.org Git - factor.git/blob - basis/core-foundation/data/data.factor
Merge branch 'master' into experimental
[factor.git] / basis / core-foundation / data / data.factor
1 ! Copyright (C) 2008 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.syntax alien.c-types sequences kernel math ;
4 IN: core-foundation.data
5
6 TYPEDEF: void* CFDataRef
7 TYPEDEF: void* CFDictionaryRef
8 TYPEDEF: void* CFMutableDictionaryRef
9 TYPEDEF: void* CFNumberRef
10 TYPEDEF: void* CFSetRef
11
12 TYPEDEF: int CFNumberType
13 : kCFNumberSInt8Type 1 ; inline
14 : kCFNumberSInt16Type 2 ; inline
15 : kCFNumberSInt32Type 3 ; inline
16 : kCFNumberSInt64Type 4 ; inline
17 : kCFNumberFloat32Type 5 ; inline
18 : kCFNumberFloat64Type 6 ; inline
19 : kCFNumberCharType 7 ; inline
20 : kCFNumberShortType 8 ; inline
21 : kCFNumberIntType 9 ; inline
22 : kCFNumberLongType 10 ; inline
23 : kCFNumberLongLongType 11 ; inline
24 : kCFNumberFloatType 12 ; inline
25 : kCFNumberDoubleType 13 ; inline
26 : kCFNumberCFIndexType 14 ; inline
27 : kCFNumberNSIntegerType 15 ; inline
28 : kCFNumberCGFloatType 16 ; inline
29 : kCFNumberMaxType 16 ; inline
30
31 TYPEDEF: int CFPropertyListMutabilityOptions
32 : kCFPropertyListImmutable                  0 ; inline
33 : kCFPropertyListMutableContainers          1 ; inline
34 : kCFPropertyListMutableContainersAndLeaves 2 ; inline
35
36 FUNCTION: CFNumberRef CFNumberCreate ( CFAllocatorRef allocator, CFNumberType theType, void* valuePtr ) ;
37
38 FUNCTION: CFDataRef CFDataCreate ( CFAllocatorRef allocator, uchar* bytes, CFIndex length ) ;
39
40 FUNCTION: CFTypeID CFGetTypeID ( CFTypeRef cf ) ;
41
42 GENERIC: <CFNumber> ( number -- alien )
43
44 M: integer <CFNumber>
45     [ f kCFNumberLongLongType ] dip <longlong> CFNumberCreate ;
46
47 M: float <CFNumber>
48     [ f kCFNumberDoubleType ] dip <double> CFNumberCreate ;
49
50 M: t <CFNumber>
51     drop f kCFNumberIntType 1 <int> CFNumberCreate ;
52
53 M: f <CFNumber>
54     drop f kCFNumberIntType 0 <int> CFNumberCreate ;
55
56 : <CFData> ( byte-array -- alien )
57     [ f ] dip dup length CFDataCreate ;