- Timestamp:
- 09/19/08 23:38:06 (2 months ago)
- Location:
- v6/smop
- Files:
-
- 5 modified
-
include/smop_identifiers.h (modified) (1 diff)
-
src/idconst_decl_all.h (modified) (1 diff)
-
src/idconst_init_all.c (modified) (2 diffs)
-
src/smop_s1p_map.sm0p (modified) (1 diff)
-
test/30_array_map.m0ld (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
v6/smop/include/smop_identifiers.h
r22272 r22287 116 116 extern SMOP__Object* SMOP__ID__signature; /* "signature" */ 117 117 extern SMOP__Object* SMOP__ID__STORE; /* "STORE" */ 118 extern SMOP__Object* SMOP__ID__Void; /* "Void" */ 119 118 120 #endif -
v6/smop/src/idconst_decl_all.h
r22272 r22287 104 104 SMOP__Object* SMOP__ID__signature; 105 105 SMOP__Object* SMOP__ID__STORE; 106 SMOP__Object* SMOP__ID__Void; -
v6/smop/src/idconst_init_all.c
r22272 r22287 104 104 SMOP__ID__signature = SMOP__NATIVE__idconst_create_nolist( "signature" ); 105 105 SMOP__ID__STORE = SMOP__NATIVE__idconst_create_nolist( "STORE" ); 106 constlist_size = 105; 106 SMOP__ID__Void = SMOP__NATIVE__idconst_create_nolist( "Void" ); 107 constlist_size = 106; 107 108 constlist = calloc(constlist_size,sizeof(SMOP__Object*)); 108 109 assert(constlist); … … 212 213 constlist[103] = SMOP__ID__signature; 213 214 constlist[104] = SMOP__ID__STORE; 215 constlist[105] = SMOP__ID__Void; -
v6/smop/src/smop_s1p_map.sm0p
r22180 r22287 20 20 SMOP__Object* identifier, 21 21 SMOP__Object* capture) { 22 ___UNKNOWN_METHOD___; 22 ___NATIVE_CAPTURE_ONLY___; 23 ___CONST_IDENTIFIER_ONLY___; 24 ___INVOCANT_RI_SHOULD_MATCH___; 25 SMOP__Object* ret = SMOP__NATIVE__bool_false; 26 27 if (identifier == SMOP__ID__postcircumfix_parens) { 28 ret = smop_lowlevel_alloc(sizeof(smop_s1p_array_struct)); 29 ret->RI = (SMOP__ResponderInterface*)SMOP__S1P__map; 30 ((smop_s1p_array_struct*)ret)->code = SMOP__NATIVE__capture_positional(interpreter,capture,0); 31 ((smop_s1p_array_struct*)ret)->input_iterator = SMOP__NATIVE__capture_positional(interpreter,capture,1); 32 33 } else if (identifier == SMOP__ID__Void) { 34 // map in void context should evaluate eagerly. 35 36 37 } else if (identifier == SMOP__ID__DESTROYALL) { 38 smop_lowlevel_wrlock(invocant); 39 SMOP__Object* code = ((smop_s1p_array_struct*)invocant)->code; 40 ((smop_s1p_array_struct*)invocant)->code = NULL; 41 SMOP__Object* in = ((smop_s1p_array_struct*)invocant)->input_iterator; 42 ((smop_s1p_array_struct*)invocant)->input_iterator = NULL; 43 smop_lowlevel_unlock(invocant); 44 45 if (code) SMOP_RELEASE(interpreter, code); 46 if (in) SMOP_RELEASE(interpreter, in); 47 48 } else { 49 ___UNKNOWN_METHOD___; 50 51 } 52 53 54 SMOP_RELEASE(interpreter,invocant); 55 SMOP_RELEASE(interpreter,capture); 56 return ret; 23 57 } 24 58 -
v6/smop/test/30_array_map.m0ld
r22206 r22287 48 48 my $iteritem = $iterator."FETCH"(); 49 49 50 my $otheriterator = ¢SMOP__S1P__map." map"($code1, $iteritem);50 my $otheriterator = ¢SMOP__S1P__map."postcircumfix:( )"($code1, $iteritem); 51 51 52 52 $void = $out."print"("ok 1 - map is lazy\n");
