Mercurial > repos > rhope
view runtime/integer.c @ 37:640f541e9116
Added support for type declarations on user defined workers and added a few more methods to Int32 in the runtime for the C backend
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 05 Oct 2009 23:12:43 -0400 |
parents | ea991f95ae1f |
children | a24eb366195c d2f9b0a9403d |
line wrap: on
line source
#include "integer.h" #include "builtin.h" #include "context.h" #include "bool.h" #define left ((t_Int32 *)cdata->params[0]) #define right ((t_Int32 *)cdata->params[1]) MethodNoLocals(_PL_,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num += right->num; release_ref((object *)right); EndFunc MethodNoLocals(_MN_,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num -= right->num; release_ref((object *)right); EndFunc MethodNoLocals(_TM_,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num *= right->num; release_ref((object *)right); EndFunc MethodNoLocals(_DV_,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num /= right->num; release_ref((object *)right); EndFunc MethodNoLocals(LShift,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num <<= right->num; release_ref((object *)right); EndFunc MethodNoLocals(RShift,Int32, NumParams 2, CallSpace 1) CopiedParam(0, TYPE_INT32) Param(1, TYPE_INT32) left->num <<= right->num; release_ref((object *)right); EndFunc MethodNoLocals(_LT_,Int32, NumParams 2, CallSpace 1) Param(0, TYPE_INT32) Param(1, TYPE_INT32) if(left->num < right->num) { release_ref(cdata->params[0]); Ret(0, Yes) } else { release_ref(cdata->params[0]); Ret(0, No) } release_ref(cdata->params[1]); EndFunc MethodNoLocals(_GT_,Int32, NumParams 2, CallSpace 1) Param(0, TYPE_INT32) Param(1, TYPE_INT32) if(left->num > right->num) { release_ref(cdata->params[0]); Ret(0, Yes) } else { release_ref(cdata->params[0]); Ret(0, No) } release_ref(cdata->params[1]); EndFunc object * make_Int32(int32_t val) { t_Int32 * obj; object * ret = new_object(TYPE_INT32); obj = (t_Int32 *)ret; obj->num = val; return ret; }