diff --git a/basis/bit-arrays/bit-arrays-tests.factor b/basis/bit-arrays/bit-arrays-tests.factor index 46089e3f7b..3e9daa291d 100644 --- a/basis/bit-arrays/bit-arrays-tests.factor +++ b/basis/bit-arrays/bit-arrays-tests.factor @@ -2,6 +2,8 @@ USING: alien sequences sequences.private arrays bit-arrays kernel tools.test math random ; IN: bit-arrays.tests +[ -1 ] [ T{ bad-array-length f -1 } = ] must-fail-with + [ 100 ] [ 100 length ] unit-test [ diff --git a/basis/bit-arrays/bit-arrays.factor b/basis/bit-arrays/bit-arrays.factor index ade7d8ddac..6097bed4f9 100644 --- a/basis/bit-arrays/bit-arrays.factor +++ b/basis/bit-arrays/bit-arrays.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2007, 2010 Slava Pestov. +! Copyright (C) 2007, 2011 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.data accessors io.binary math math.bitwise alien.accessors kernel kernel.private sequences @@ -41,8 +41,12 @@ TUPLE: bit-array PRIVATE> +ERROR: bad-array-length n ; + : ( n -- bit-array ) - dup bits>bytes bit-array boa ; inline + dup 0 < [ bad-array-length ] when + dup bits>bytes + bit-array boa ; inline M: bit-array length length>> ; inline diff --git a/basis/nibble-arrays/nibble-arrays-tests.factor b/basis/nibble-arrays/nibble-arrays-tests.factor index 363f30678d..92a38e509b 100644 --- a/basis/nibble-arrays/nibble-arrays-tests.factor +++ b/basis/nibble-arrays/nibble-arrays-tests.factor @@ -1,6 +1,8 @@ USING: nibble-arrays tools.test sequences kernel math ; IN: nibble-arrays.tests +[ -1 ] [ T{ bad-array-length f -1 } = ] must-fail-with + [ t ] [ 16 iota dup >nibble-array sequence= ] unit-test [ N{ 4 2 1 3 } ] [ N{ 3 1 2 4 } reverse ] unit-test [ N{ 1 4 9 0 9 4 } ] [ N{ 1 2 3 4 5 6 } [ sq ] map ] unit-test diff --git a/basis/nibble-arrays/nibble-arrays.factor b/basis/nibble-arrays/nibble-arrays.factor index 712b62f20b..0e7298165c 100644 --- a/basis/nibble-arrays/nibble-arrays.factor +++ b/basis/nibble-arrays/nibble-arrays.factor @@ -30,7 +30,10 @@ CONSTANT: nibble BIN: 1111 PRIVATE> +ERROR: bad-array-length n ; + : ( n -- nibble-array ) + dup 0 < [ bad-array-length ] when dup nibbles>bytes nibble-array boa ; inline M: nibble-array length length>> ; diff --git a/extra/graphviz/ffi/ffi.factor b/extra/graphviz/ffi/ffi.factor index 2ec65cf7ca..50fccf0a1f 100644 --- a/extra/graphviz/ffi/ffi.factor +++ b/extra/graphviz/ffi/ffi.factor @@ -3,12 +3,9 @@ USING: accessors alien alien.c-types alien.destructors alien.libraries alien.syntax combinators debugger destructors fry io kernel literals math prettyprint sequences splitting -system words.constant -graphviz -; +system memoize graphviz ; IN: graphviz.ffi -<< "libgraph" { { [ os macosx? ] [ "libgraph.dylib" ] } { [ os unix? ] [ "libgraph.so" ] } @@ -21,7 +18,6 @@ IN: graphviz.ffi { [ os unix? ] [ "libgvc.so" ] } { [ os winnt? ] [ "gvc.dll" ] } } cond cdecl add-library ->> LIBRARY: libgraph @@ -85,11 +81,7 @@ FUNCTION: int agsafeset ( void* obj, LIBRARY: libgvc ! Graphviz contexts -! This must be wrapped in << >> so that GVC_t*, gvContext, and -! &gvFreeContext can be used to compute the supported-engines -! and supported-formats constants below. -<< C-TYPE: GVC_t FUNCTION: GVC_t* gvContext ( ) ; @@ -112,7 +104,6 @@ M: ffi-errors error. int-gvFreeContext dup zero? [ drop ] [ ffi-errors ] if ; DESTRUCTOR: gvFreeContext ->> ! Layout @@ -130,8 +121,6 @@ FUNCTION: int gvRenderFilename ( GVC_t* gvc, ! Supported layout engines (dot, neato, etc.) and output ! formats (png, jpg, etc.) - -<< ->> -CONSTANT: supported-engines $[ API_layout plugin-list ] -CONSTANT: supported-formats $[ API_device plugin-list ] +MEMO: supported-engines ( -- seq ) API_layout plugin-list ; +MEMO: supported-formats ( -- seq ) API_device plugin-list ; diff --git a/extra/graphviz/render/render.factor b/extra/graphviz/render/render.factor index 0fd17a68b3..76857b1b85 100644 --- a/extra/graphviz/render/render.factor +++ b/extra/graphviz/render/render.factor @@ -1,11 +1,9 @@ ! Copyright (C) 2011 Alex Vondrak. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors combinators continuations destructors -images.viewer io.backend io.files.unique kernel locals -namespaces parser sequences summary unicode.case words -graphviz.ffi -graphviz.builder -; +USING: accessors combinators compiler.units continuations +destructors images.viewer io.backend io.files.unique kernel +locals namespaces parser sequences summary unicode.case words +graphviz.ffi graphviz.builder ; IN: graphviz.render SYMBOL: default-layout @@ -109,8 +107,6 @@ PRIVATE> : preview-window ( graph -- ) (preview) image-window ; inline -<< - PRIVATE> -supported-engines [ define-graphviz-by-engine ] each -supported-formats [ define-graphviz-by-format ] each - ->> +[ + supported-engines [ define-graphviz-by-engine ] each + supported-formats [ define-graphviz-by-format ] each +] with-compilation-unit