Hi,
There's a 'flags' macro in math.bitwise:
{ DB_CREATE DB_INIT_MPOOL DB_INIT_TXN DB_INIT_LOG } flags
Also,
[ [ foo , ] each ] { } make
is better written as
[ foo ] map
Slava
On Sat, Oct 18, 2008 at 8:42 PM, Glenn Tarcea <[EMAIL PROTECTED]> wrote:
> I thought this was neat so I had to share it :-)
>
> For BerkeleyDB I was running into a situation where I had to bitor a
> bunch of constant values. The declarations look like:
>
> : DB_CREATE HEX: 0000001 ; inline
> : DB_FORCE HEX: 0000004 ; inline
> ...
> etc...
>
> So I would end up with code that looked like:
>
> DB_CREATE DB_INIT_MPOOL bitor DB_INIT_TXN bitor DB_INIT_LOG bitor .....
>
> Ugly! What I really wanted to do was treat the functions as constants
> and put them in an array so I could do a reduce.
>
> USING: kernel make words sequences ;
> IN: arrays.const
>
> : <const-array> ( seq -- seq )
> [ [ dup word? [ execute ] [ ] if , ] each ] { } make ;
>
> : const-reduce ( seq quote -- n )
> [ <const-array> 0 ] dip reduce ;
>
> Examples:
>
> { DB_CREATE DB_FORCE 23 } <const-array>
> => { 1 4 23 }
>
> { DB_CREATE DB_INIT_MPOOL DB_INIT_TXN DB_INIT LOG } [ bitor ] const-
> reduce
> => 720897
>
> Maybe something similar already exists? Either way it was fun writing
> them :-)
>
> Glenn
>
> V. Glenn Tarcea
> [EMAIL PROTECTED]
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk