view runtime/blueprint.c @ 65:1db811fa4744

Handle native Rhope functions and plain C functions separately as part of move to new C strategy
author Mike Pavone <pavone@retrodev.com>
date Tue, 01 Jun 2010 01:13:54 -0400
parents 3e20ed8959c4
children d4b44ae2e34a
line wrap: on
line source

#include "blueprint.h"
#include "builtin.h"
#include "context.h"
#include <stddef.h>

typedef struct
{
	blueprint * bp;
} l_Build;

Func(Build,
	NumParams 1,
	CallSpace 1,
	l_Build)
	
	Param(0, TYPE_BLUEPRINT)
	
	locals->bp = ((t_Blueprint *)(cdata->params[0]))->bp;
	release_ref(cdata->params[0]);
	
	Ret(0, new_object_bp(locals->bp))
EndFunc

Func(BlueprintSP_Of,
	NumParams 1,
	CallSpace 1,
	l_Build)
	
	locals->bp = get_blueprint(cdata->params[0]);
	release_ref(cdata->params[0]);
	
	Ret(0, new_object(TYPE_BLUEPRINT))
	((t_Blueprint *)cdata->params[0])->bp = locals->bp;
EndFunc

object * make_Blueprint(int32_t type_id)
{
	t_Blueprint * obj;
	object * ret = new_object(TYPE_BLUEPRINT);
	obj = (t_Blueprint *)ret;
	obj->bp = type_id ? get_blueprint_byid(type_id) : NULL;
	return ret;
}

int32_t _internal_blueprint_eq(object * left, object * right)
{
	t_Blueprint * l = (t_Blueprint *)left;
	t_Blueprint * r = (t_Blueprint *)right;
	return l->bp == r->bp;
}