Mercurial > repos > rhope
diff runtime/builtin.c @ 50:689fb73e7612
Add support for various integer literals and add support for raw pointers to objects and raw pointers to arrays in the FFI
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 16 Apr 2010 01:57:04 -0400 |
parents | a24eb366195c |
children | 079200bc3e75 |
line wrap: on
line diff
--- a/runtime/builtin.c Thu Apr 08 01:02:18 2010 -0400 +++ b/runtime/builtin.c Fri Apr 16 01:57:04 2010 -0400 @@ -36,7 +36,18 @@ } release_ref(cdata->params[0]); Ret(0, make_Int32(0)) -EndFunc +EndFunc + +object * make_Int64(int64_t val) +{ + t_Int64 * obj; + object * ret = new_object(TYPE_INT64); + obj = (t_Int64 *)ret; + obj->Num = val; + return ret; +} + + object * make_Int32(int32_t val) { t_Int32 * obj; @@ -46,6 +57,60 @@ return ret; } +object * make_Int16(int16_t val) +{ + t_Int16 * obj; + object * ret = new_object(TYPE_INT16); + obj = (t_Int16 *)ret; + obj->Num = val; + return ret; +} + +object * make_Int8(int8_t val) +{ + t_Int8 * obj; + object * ret = new_object(TYPE_INT8); + obj = (t_Int8 *)ret; + obj->Num = val; + return ret; +} + +object * make_UInt64(uint64_t val) +{ + t_UInt64 * obj; + object * ret = new_object(TYPE_UINT64); + obj = (t_UInt64 *)ret; + obj->Num = val; + return ret; +} + +object * make_UInt32(uint32_t val) +{ + t_UInt32 * obj; + object * ret = new_object(TYPE_UINT32); + obj = (t_UInt32 *)ret; + obj->Num = val; + return ret; +} + +object * make_UInt16(uint16_t val) +{ + t_UInt16 * obj; + object * ret = new_object(TYPE_UINT16); + obj = (t_UInt16 *)ret; + obj->Num = val; + return ret; +} + +object * make_UInt8(uint8_t val) +{ + t_UInt8 * obj; + object * ret = new_object(TYPE_UINT8); + obj = (t_UInt8 *)ret; + obj->Num = val; + return ret; +} + #define lval ((t_Boolean *)(cdata->params[0]))->Val MethodNoLocals(If,Boolean,