From 0c1cf6209d44425d0a75ea5471725cafd5588698 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 18 Jan 2009 23:44:02 -0600 Subject: [PATCH] Fix --- .../dictionaries/dictionaries-tests.factor | 16 ++++++++++++++-- .../dictionaries/dictionaries.factor | 9 +++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/basis/core-foundation/dictionaries/dictionaries-tests.factor b/basis/core-foundation/dictionaries/dictionaries-tests.factor index 287b436990..61ca131788 100644 --- a/basis/core-foundation/dictionaries/dictionaries-tests.factor +++ b/basis/core-foundation/dictionaries/dictionaries-tests.factor @@ -1,6 +1,18 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: tools.test core-foundation core-foundation.dictionaries ; +USING: tools.test core-foundation core-foundation.dictionaries +arrays destructors core-foundation.strings kernel namespaces ; IN: core-foundation.dictionaries.tests -[ ] [ { } CFRelease ] unit-test \ No newline at end of file +[ ] [ { } CFRelease ] unit-test + +[ "raps in the back of cars and doesn't afraid of anything" ] [ + [ + "cpst" &CFRelease dup "key" set + "raps in the back of cars and doesn't afraid of anything" &CFRelease + 2array 1array &CFRelease + "key" get + CFDictionaryGetValue + dup [ CF>string ] when + ] with-destructors +] unit-test \ No newline at end of file diff --git a/basis/core-foundation/dictionaries/dictionaries.factor b/basis/core-foundation/dictionaries/dictionaries.factor index f38dc49ba8..103bf9a728 100644 --- a/basis/core-foundation/dictionaries/dictionaries.factor +++ b/basis/core-foundation/dictionaries/dictionaries.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax core-foundation kernel assocs alien.c-types +USING: alien.syntax core-foundation kernel assocs specialized-arrays.alien math sequences accessors ; IN: core-foundation.dictionaries @@ -18,10 +18,15 @@ FUNCTION: CFDictionaryRef CFDictionaryCreate ( CFDictionaryValueCallBacks* valueCallBacks ) ; +FUNCTION: void* CFDictionaryGetValue ( + CFDictionaryRef theDict, + void* key +) ; + : ( alist -- dictionary ) [ kCFAllocatorDefault ] dip unzip [ >void*-array ] bi@ - [ [ underlying>> ] bi@ ] [ nip length "void*" heap-size /i ] 2bi + [ [ underlying>> ] bi@ ] [ nip length ] 2bi &: kCFTypeDictionaryCallBacks &: kCFTypeDictionaryValueCallbacks CFDictionaryCreate ; \ No newline at end of file