Paste: symbol not found
Author: | jedahu |
Mode: | factor |
Date: | Thu, 25 Feb 2010 03:50:12 |
Plain Text |
USING: accessors alien.c-types arrays assocs biassocs
combinators fry kernel lexer locals math parser sequences
words.constant words.symbol ;
IN: alien.enums
TUPLE: enum { assoc assoc read-only } ;
TUPLE: enum-c-type < c-type ;
: <enum-c-type> ( -- enum-c-type )
enum-c-type new ; inline
:: define-enum-type ( word enum -- )
<enum-c-type>
integer >>class
symbol >>boxed-class
enum assoc>> to>> '[ _ at ] >>boxer-quot
enum assoc>> from>> '[ _ at ] >>unboxer-quot
4 >>align
4 >>size
"box_signed_4" >>boxer
"to_fixnum" >>unboxer
word [ define-symbol ] [ typedef ] bi ;
: enum-step ( vector -- more? )
scan {
{ ";" [ drop f ] }
{ "{" [ [ scan scan-word 2array ] dip push "}" expect t ] }
} case ;
: define-enum ( word assoc -- )
[ [ create-in dup define-symbol ] dip ] assoc-map >biassoc
enum boa [ define-constant ] [ define-enum-type ] 2bi ;
SYNTAX: ENUM:
CREATE-WORD V{ } clone dup
'[ _ enum-step ] [ ] while define-enum ;
Author: | jedahu |
Mode: | c |
Date: | Thu, 25 Feb 2010 03:50:57 |
Plain Text |
typedef enum _suit {
CLUBS,
SPADES,
DIAMONDS,
HEARTS
} suit_t;
suit_t switch_suit (suit_t x) {
switch (x) {
case CLUBS: return SPADES;
case SPADES: return CLUBS;
case DIAMONDS: return HEARTS;
case HEARTS: return DIAMONDS;
}
}
Author: | jedahu |
Mode: | factor |
Date: | Thu, 25 Feb 2010 03:52:20 |
Plain Text |
( scratchpad ) LIBRARY: suits.so FUNCTION: suit_t switch_suit ( suit_t x ) ;
( scratchpad ) CLUBS switch_suit
The image refers to a library or symbol that was not found at load time
Author: | jedahu |
Mode: | factor |
Date: | Thu, 25 Feb 2010 04:14:11 |
Plain Text |
( scratchpad ) USE: alien.enums
Loading resource:extra/alien/enums/enums.factor
( scratchpad ) USE: alien.libraries
( scratchpad ) "suits" "/home/jdh/proj/factor/alien-inline-libs/libalien.enums.tests_enums.so" "cdecl" add-library
( scratchpad ) ENUM: suit_t { CLUBS 0 } { SPADES 1 } { DIAMONDS 2 } { HEARTS 3 } ;
( scratchpad ) USE: alien.syntax
( scratchpad ) LIBRARY: suits FUNCTION: suit_t switch_suits ( suit_t x ) ;
( scratchpad ) CLUBS switch_suits
The image refers to a library or symbol that was not found at load time
Type :help for debugging help.
( scratchpad )
New Annotation