]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/core-foundation/strings/strings.factor
use radix literals
[factor.git] / basis / core-foundation / strings / strings.factor
index b78e1046fee3822c33447aeb584e6ae9ed54a6ed..56f6d1f90af21c8b624d79aa1f9a517821fa0532 100644 (file)
@@ -3,26 +3,26 @@
 USING: alien.c-types alien.data alien.syntax alien.strings
 io.encodings.string kernel sequences byte-arrays
 io.encodings.utf8 math core-foundation core-foundation.arrays
-destructors parser fry alien words ;
+core-foundation.data destructors parser fry alien words ;
 IN: core-foundation.strings
 
 TYPEDEF: void* CFStringRef
 
 TYPEDEF: int CFStringEncoding
-CONSTANT: kCFStringEncodingMacRoman HEX: 0
-CONSTANT: kCFStringEncodingWindowsLatin1 HEX: 0500
-CONSTANT: kCFStringEncodingISOLatin1 HEX: 0201
-CONSTANT: kCFStringEncodingNextStepLatin HEX: 0B01
-CONSTANT: kCFStringEncodingASCII HEX: 0600
-CONSTANT: kCFStringEncodingUnicode HEX: 0100
-CONSTANT: kCFStringEncodingUTF8 HEX: 08000100
-CONSTANT: kCFStringEncodingNonLossyASCII HEX: 0BFF
-CONSTANT: kCFStringEncodingUTF16 HEX: 0100
-CONSTANT: kCFStringEncodingUTF16BE HEX: 10000100
-CONSTANT: kCFStringEncodingUTF16LE HEX: 14000100
-CONSTANT: kCFStringEncodingUTF32 HEX: 0c000100
-CONSTANT: kCFStringEncodingUTF32BE HEX: 18000100
-CONSTANT: kCFStringEncodingUTF32LE HEX: 1c000100
+CONSTANT: kCFStringEncodingMacRoman 0x0
+CONSTANT: kCFStringEncodingWindowsLatin1 0x0500
+CONSTANT: kCFStringEncodingISOLatin1 0x0201
+CONSTANT: kCFStringEncodingNextStepLatin 0x0B01
+CONSTANT: kCFStringEncodingASCII 0x0600
+CONSTANT: kCFStringEncodingUnicode 0x0100
+CONSTANT: kCFStringEncodingUTF8 0x08000100
+CONSTANT: kCFStringEncodingNonLossyASCII 0x0BFF
+CONSTANT: kCFStringEncodingUTF16 0x0100
+CONSTANT: kCFStringEncodingUTF16BE 0x10000100
+CONSTANT: kCFStringEncodingUTF16LE 0x14000100
+CONSTANT: kCFStringEncodingUTF32 0x0c000100
+CONSTANT: kCFStringEncodingUTF32BE 0x18000100
+CONSTANT: kCFStringEncodingUTF32LE 0x1c000100
 
 FUNCTION: CFStringRef CFStringCreateWithBytes (
     CFAllocatorRef alloc,
@@ -60,10 +60,13 @@ FUNCTION: CFStringRef CFStringCreateWithCString (
     CFStringEncoding encoding
 ) ;
 
+FUNCTION: CFStringRef CFCopyDescription ( CFTypeRef cf ) ;
+FUNCTION: CFStringRef CFCopyTypeIDDescription ( CFTypeID type_id ) ;
+
 : prepare-CFString ( string -- byte-array )
     [
-        dup HEX: 10ffff >
-        [ drop HEX: fffd ] when
+        dup 0x10ffff >
+        [ drop 0xfffd ] when
     ] map utf8 encode ;
 
 : <CFString> ( string -- alien )
@@ -78,8 +81,7 @@ FUNCTION: CFStringRef CFStringCreateWithCString (
     [ 0 swap <CFRange> kCFStringEncodingUTF8 0 f ] keep
     4 * 1 + <byte-array> [
         dup length
-        { CFIndex } [ CFStringGetBytes drop ] [ ]
-        with-out-parameters
+        { CFIndex } [ CFStringGetBytes drop ] with-out-parameters
     ] keep
     swap head-slice utf8 decode ;
 
@@ -89,7 +91,12 @@ FUNCTION: CFStringRef CFStringCreateWithCString (
 : <CFStringArray> ( seq -- alien )
     [ [ <CFString> &CFRelease ] map <CFArray> ] with-destructors ;
 
+: CF>description ( cf -- description )
+    [ CFCopyDescription &CFRelease CF>string ] with-destructors ;
+: CFType>description ( cf -- description )
+    CFGetTypeID [ CFCopyTypeIDDescription &CFRelease CF>string ] with-destructors ;
+
 SYNTAX: CFSTRING: 
-    CREATE scan-object 
+    scan-new-word scan-object 
     [ drop ] [ '[ _ [ _ <CFString> ] initialize-alien ] ] 2bi
-    (( -- alien )) define-declared ;
+    ( -- alien ) define-declared ;