Replace info and 2info macros with simple inline words.

release
Erik Charlebois 2010-04-14 00:08:10 -07:00
parent 44639d2f6d
commit bb0c4d94e0
1 changed files with 22 additions and 15 deletions

View File

@ -1,10 +1,9 @@
! Copyright (C) 2010 Erik Charlebois. ! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.accessors alien.c-types arrays USING: accessors alien alien.c-types arrays byte-arrays combinators
byte-arrays combinators combinators.smart continuations destructors combinators.smart destructors io.encodings.ascii io.encodings.string
fry io.encodings.ascii io.encodings.string kernel libc locals macros kernel libc locals math namespaces opencl.ffi sequences shuffle
math math.order multiline opencl.ffi prettyprint sequences specialized-arrays variants ;
specialized-arrays typed variants namespaces ;
IN: opencl IN: opencl
SPECIALIZED-ARRAYS: void* char size_t ; SPECIALIZED-ARRAYS: void* char size_t ;
@ -16,17 +15,25 @@ ERROR: cl-error err ;
: cl-not-null ( err -- ) : cl-not-null ( err -- )
dup f = [ cl-error ] [ drop ] if ; inline dup f = [ cl-error ] [ drop ] if ; inline
: info-data-size ( handle name info-quot -- size_t )
[ 0 f 0 <size_t> ] dip [ call cl-success ] 2keep drop *size_t ; inline
MACRO: info ( info-quot lift-quot -- quot ) : info-data-bytes ( handle name info-quot size -- bytes )
[ dup ] dip '[ 2dup 0 f 0 <size_t> _ '[ _ call cl-success ] keep swap [ dup <byte-array> f ] dip [ call cl-success ] 3keep 2drop ; inline
*size_t dup <byte-array> _ '[ f _ call cl-success ] keep
_ call ] ; : info ( handle name info-quot lift-quot -- value )
[ 3dup info-data-size info-data-bytes ] dip call ; inline
MACRO: 2info ( info-quot lift-quot -- quot )
[ dup ] dip '[ 3dup 0 f 0 <size_t> _ '[ _ call cl-success ] keep : 2info-data-size ( handle1 handle2 name info-quot -- size_t )
*size_t dup <byte-array> _ '[ f _ call cl-success ] keep [ 0 f 0 <size_t> ] dip [ call cl-success ] 2keep drop *size_t ; inline
_ call ] ;
: 2info-data-bytes ( handle1 handle2 name info-quot size -- bytes )
swap [ dup <byte-array> f ] dip [ call cl-success ] 3keep 2drop ; inline
: 2info ( handle1 handle2 name info_quot lift_quot -- value )
[ 4dup 2info-data-size 2info-data-bytes ] dip call ; inline
: info-bool ( handle name quot -- ? ) : info-bool ( handle name quot -- ? )
[ *uint CL_TRUE = ] info ; inline [ *uint CL_TRUE = ] info ; inline