view runtime/array.c @ 48:a24eb366195c

Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
author Mike Pavone <pavone@retrodev.com>
date Tue, 02 Mar 2010 00:18:49 -0500
parents d61550e2c001
children 3e20ed8959c4
line wrap: on
line source

#include "array.h"
#include "integer.h"

Func(Array,0,
	;)
	Ret(0, new_object(TYPE_ARRAY))
	Return
EndFunc

Method(Index,Array,2,
	_t_Int32 * idx;)
	Param(1,idx,Int32)
	if (idx->num < 0 || idx->num >= me->numels) {
		Ret(0, NULL)
		Ret(1, me)
	} else {
		Ret(1, NULL)
		if (me->contents_type) {
			Ret(0, copy_from_raw(me->conents_type, (char *)me + sizeof(*me) + (idx->num * sizeof(object *))))
		} else {
			Ret(0, add_ref((object *)((char *)me + sizeof(*me) + (idx->num * sizeof(object *)))))
		}
		release_ref(me);
	}
EndFunc