Mercurial > repos > rhope
comparison runtime/builtin.c @ 56:d2f9b0a9403d
Initial experiment with goto and switch
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Oct 2009 01:52:38 -0400 |
parents | 640f541e9116 |
children | 04baa003de5a |
comparison
equal
deleted
inserted
replaced
38:7f05bbe82f24 | 56:d2f9b0a9403d |
---|---|
10 blueprint * bp; | 10 blueprint * bp; |
11 switch(type) | 11 switch(type) |
12 { | 12 { |
13 case TYPE_INT32: | 13 case TYPE_INT32: |
14 bp = register_type_byid(TYPE_INT32, sizeof(int32_t), NULL, NULL, NULL); | 14 bp = register_type_byid(TYPE_INT32, sizeof(int32_t), NULL, NULL, NULL); |
15 add_method(bp, METHOD_ADD, MethodName(_PL_,Int32)); | 15 /* add_method(bp, METHOD_ADD, MethodName(_PL_,Int32)); |
16 add_method(bp, METHOD_SUB, MethodName(_MN_,Int32)); | 16 add_method(bp, METHOD_SUB, MethodName(_MN_,Int32)); |
17 add_method(bp, METHOD_MUL, MethodName(_TM_,Int32)); | 17 add_method(bp, METHOD_MUL, MethodName(_TM_,Int32)); |
18 add_method(bp, METHOD_DIV, MethodName(_DV_,Int32)); | 18 add_method(bp, METHOD_DIV, MethodName(_DV_,Int32)); |
19 add_method(bp, METHOD_LSHIFT, MethodName(LShift,Int32)); | 19 add_method(bp, METHOD_LSHIFT, MethodName(LShift,Int32)); |
20 add_method(bp, METHOD_RSHIFT, MethodName(RShift,Int32)); | 20 add_method(bp, METHOD_RSHIFT, MethodName(RShift,Int32)); |
21 add_method(bp, METHOD_LESS, MethodName(_LT_,Int32)); | 21 add_method(bp, METHOD_LESS, MethodName(_LT_,Int32)); |
22 add_method(bp, METHOD_GREATER, MethodName(_GT_,Int32)); | 22 add_method(bp, METHOD_GREATER, MethodName(_GT_,Int32)); */ |
23 break; | 23 break; |
24 case TYPE_BOOLEAN: | 24 case TYPE_BOOLEAN: |
25 bp = register_type_byid(TYPE_BOOLEAN, sizeof(int32_t), NULL, NULL, NULL); | 25 bp = register_type_byid(TYPE_BOOLEAN, sizeof(int32_t), NULL, NULL, NULL); |
26 add_method(bp, METHOD_IF, MethodName(If,Boolean)); | 26 //add_method(bp, METHOD_IF, MethodName(If,Boolean)); |
27 val_yes = (t_Boolean *)new_object(TYPE_BOOLEAN); | 27 val_yes = (t_Boolean *)new_object(TYPE_BOOLEAN); |
28 val_yes->val = 1; | 28 val_yes->val = 1; |
29 val_no = (t_Boolean *)new_object(TYPE_BOOLEAN); | 29 val_no = (t_Boolean *)new_object(TYPE_BOOLEAN); |
30 val_no->val = 0; | 30 val_no->val = 0; |
31 break; | 31 break; |
32 case TYPE_BLUEPRINT: | 32 /* case TYPE_BLUEPRINT: |
33 bp = register_type_byid(TYPE_BLUEPRINT, sizeof(blueprint *), NULL, NULL, NULL); | 33 bp = register_type_byid(TYPE_BLUEPRINT, sizeof(blueprint *), NULL, NULL, NULL); |
34 break; | 34 break;*/ |
35 } | 35 } |
36 } | 36 } |
37 | 37 |
38 void register_builtin_types() | 38 void register_builtin_types() |
39 { | 39 { |
40 uint32_t i; | 40 uint32_t i; |
41 for(i = 0; i < TYPE_FIRST_USER; ++i) | 41 for(i = 0; i < TYPE_FIRST_USER; ++i) |
42 register_builtin_type(i); | 42 register_builtin_type(i); |
43 } | 43 } |
44 | 44 |
45 //TODO: Remove this when it's possible to write Print in Rhope | |
46 FuncNoLocals(Print, | |
47 NumParams 1, | |
48 CallSpace 0) | |
49 | |
50 if(get_blueprint(cdata->params[0]) == get_blueprint_byid(TYPE_INT32)) | |
51 { | |
52 printf("%d\n", ((t_Int32 *)(cdata->params[0]))->num); | |
53 } else { | |
54 puts("Don't know how to print this type"); | |
55 } | |
56 release_ref(cdata->params[0]); | |
57 Ret(0, make_Int32(0)) | |
58 EndFunc |