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