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