Changeset 21202 for v6/smop/test/12_p6opaque.sm0p
- Timestamp:
- 07/04/08 02:15:06 (5 months ago)
- Files:
-
- 1 modified
-
v6/smop/test/12_p6opaque.sm0p (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
v6/smop/test/12_p6opaque.sm0p
r21201 r21202 4 4 #include <smop_slime.h> 5 5 #include <smop_oo.h> 6 #include <smop_lowlevel.h> 7 8 static SMOP__Object* test_message(SMOP__Object* interpreter, 9 SMOP__ResponderInterface* responder, 10 SMOP__Object* identifier, 11 SMOP__Object* capture) { 12 if (identifier == SMOP__ID__dispatch) { 13 printf("ok 3 - called dispatch\n"); 14 SMOP_RELEASE(interpreter, capture); 15 } else if (identifier == SMOP__ID__DESTROYALL) { 16 printf("ok 4 - called DESTROYALL\n"); 17 } else { 18 printf("not ok - unkown method\n"); 19 SMOP_RELEASE(interpreter, capture); 20 } 21 return SMOP__NATIVE__bool_true; 22 } 23 24 extern SMOP__Object* test_release(SMOP__Object* interpreter, 25 SMOP__ResponderInterface* responder, 26 SMOP__Object* obj) { 27 printf("-"); 28 smop_lowlevel_refcnt_dec(interpreter, responder, obj); 29 return obj; 30 } 31 32 extern SMOP__Object* test_reference(SMOP__Object* interpreter, 33 SMOP__ResponderInterface* responder, 34 SMOP__Object* obj) { 35 printf("+"); 36 smop_lowlevel_refcnt_inc(interpreter, responder, obj); 37 return obj; 38 } 6 39 7 40 int main() { 8 41 smop_init(); 9 42 10 printf("1.. 4\n");43 printf("1..6\n"); 11 44 12 45 … … 16 49 SMOP__INTPTR__InterpreterInstance,NULL,NULL)); 17 50 SMOP__Object* frame; 18 SMOP__Object* how = SMOP__NATIVE__bool_true; 51 SMOP__Object* how = smop_lowlevel_alloc(sizeof(SMOP__ResponderInterface)); 52 ((SMOP__ResponderInterface*)how)->MESSAGE = &test_message; 53 ((SMOP__ResponderInterface*)how)->REFERENCE = &test_reference; 54 ((SMOP__ResponderInterface*)how)->RELEASE = &test_release; 55 ((SMOP__ResponderInterface*)how)->id = "test metaclass"; 56 19 57 SMOP__Object* p6opaque = 20 58 SMOP_DISPATCH(SMOP__INTPTR__InterpreterInstance, SMOP__p6opaque__RI, … … 24 62 $frame = q:sm0p { 25 63 ; 26 $p6opaque.SMOP__ID__new(); 64 $p6opaque.SMOP__ID__REPR_how($how); 65 $p6opaque.SMOP__ID__STORE(); 27 66 }; 28 // SMOP__SLIME__CurrentFrame.move_responder(7,2);29 // SMOP__SLIME__CurrentFrame.move_capturize(SMOP__SLIME__Capturize.new(9,(),(),1));30 // SMOP__p6opaque__RI.SMOP__ID__new();31 //};32 67 33 68 if (!frame) printf("not "); 34 69 printf("ok 1 - frame created.\n"); 35 70 36 SMOP_RELEASE(interpreter,p6opaque);37 71 SMOP_DISPATCH(interpreter, SMOP_RI(interpreter), 38 72 SMOP__ID__goto, … … 41 75 printf("ok 2 - goto frame.\n"); 42 76 77 SMOP_RELEASE(interpreter,p6opaque); 43 78 SMOP_DISPATCH(interpreter, SMOP_RI(interpreter), 44 79 SMOP__ID__loop, SMOP__NATIVE__capture_create(interpreter, 45 80 SMOP_REFERENCE(interpreter,interpreter), 46 81 NULL, NULL)); 47 printf("ok 3- interpreter loop.\n");82 printf("ok 5 - interpreter loop.\n"); 48 83 49 84 50 85 SMOP_RELEASE(SMOP__INTPTR__InterpreterInstance,interpreter); 51 86 52 printf("ok 4- Scalar destroyed should free the p6opaque object also.\n");87 printf("ok 6 - Scalar destroyed should free the p6opaque object also.\n"); 53 88 54 89 smop_destr();
