Mercurial > repos > rhope
view runtime/builtin.c @ 98:a34a982ecd32
Broken port of nworker to compiler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 03 Aug 2010 23:51:39 -0400 |
parents | a844c623c7df |
children | e09c2d1d6d5b |
line wrap: on
line source
#include "builtin.h" #include "object.h" #include "integer.h" #include "bool.h" #include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void register_builtin_type(uint32_t type) { blueprint * bp; switch(type) { case TYPE_BLUEPRINT: bp = register_type_byid(TYPE_BLUEPRINT, sizeof(blueprint *), NULL, NULL, NULL); break; } } void register_builtin_types() { uint32_t i; for(i = 0; i < TYPE_FIRST_USER; ++i) register_builtin_type(i); } 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; object * ret = new_object(TYPE_INT32); obj = (t_Int32 *)ret; obj->Num = val; 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; } object * make_String(char * text) { object * params[1]; t_Array * arr = (t_Array *)_internal_array_allocnaked(strlen(text), make_Blueprint(TYPE_UINT8)); arr->payload.Length = arr->payload.Storage; memcpy(((char *)arr) + sizeof(t_Array), text, arr->payload.Length); params[0] = (object *)arr; rhope(FUNC_String, params, 1, 1); return params[0]; } object * make_Bool(int32_t val) { t_Boolean * b = (t_Boolean *)new_object(TYPE_BOOLEAN); b->Val = val != 0; return (object*)b; } object * make_Worker(int32_t index, int16_t initialsize, int16_t initialcount) { t_Worker * worker = (t_Worker *)_internal_worker_alloc(initialsize); worker->payload.Index = index; worker->payload.Count = initialcount; return (object *)worker; }