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,