/* This file was autogenerated by jig 0.3.0 from file ENodeAttrib.jsi * * I
* have since been modifying it directly to acheive what I need * from it.
* -Ian */
#include <njs/jig.h>
#include "js-ENodeAttrib.h"
/*
* Javascript binding for Entity
* Copyright (c) 2000 Ian Main
*
* Author: Ian Main <imain@gtk.org>
*
*/
/*
* This renderer is free software; please see the LICENSE file for
* specific information as to licensing conditions.
*/
/*
* $Source: /home/cvs/entity/renderers/javascript/js-ENodeAttrib.c,v $
* $Id: js-ENodeAttrib.c,v 1.11 2000/12/10 00:29:15 imain Exp $
*/
static int
ENodeAttrib_method (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
void *js_ictx, JSSymbol js_method,
JSNode * js_retval, JSNode * js_args)
{
return JS_PROPERTY_UNKNOWN;
}
/********************************************************************
* The important ones
********************************************************************/
static int
ENodeAttrib_property (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
void *js_ictx, JSSymbol js_property,
int js_op, JSNode * js_value)
{
ENodeAttribInstanceCtx *js_instance = (ENodeAttribInstanceCtx *) js_ictx;
if (js_ictx == NULL) {
return JS_PROPERTY_UNKNOWN;
}
if (js_op == JS_BUILTIN_PROP_SET) {
JSNode js_tempnode;
EBuf *value;
const char *attrib = js_vm_symname (js_vm, js_property);
js_vm_to_string (js_vm, js_value, &js_tempnode);
value =
ebuf_new_with_data (js_tempnode.u.vstring->data,
js_tempnode.u.vstring->len);
enode_attrib (js_instance->enode, (char *) attrib, value);
} else if (js_op == JS_BUILTIN_PROP_GET) {
EBufConst *value;
const char *attrib = js_vm_symname (js_vm, js_property);
EDEBUG (
("javascript", "Getting attrib '%s' (%d) from node %p - '%s'",
attrib, js_property, js_instance->enode,
js_instance->enode->element->str));
value = enode_attrib (js_instance->enode, (char *) attrib, NULL);
EDEBUG (
("javascript",
"Attribute value for '%s' is '%s' from node '%s'", attrib,
value->str, js_instance->enode->element->str));
js_value->type = JS_STRING;
js_vm_make_string (js_vm, js_value, value->str, value->len);
}
return JS_PROPERTY_FOUND;
}
static int
ENodeAttribVal_property (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
void *js_ictx, JSSymbol js_property,
int js_op, JSNode * js_value)
{
ENodeAttribInstanceCtx *js_instance = (ENodeAttribInstanceCtx *) js_ictx;
if (js_ictx == NULL) {
return JS_PROPERTY_UNKNOWN;
}
if (js_op == JS_BUILTIN_PROP_SET) {
JSNode js_tempnode;
EBuf *value;
const char *attrib = js_vm_symname (js_vm, js_property);
js_vm_to_string (js_vm, js_value, &js_tempnode);
value =
ebuf_new_with_data (js_tempnode.u.vstring->data,
js_tempnode.u.vstring->len);
enode_attrib (js_instance->enode, (char *) attrib, value);
} else if (js_op == JS_BUILTIN_PROP_GET) {
EBufConst *value;
float fval;
char *end;
const char *attrib = js_vm_symname (js_vm, js_property);
if (attrib) {
EDEBUG (("js-embed", "Getting attrib %s as value", attrib));
value = enode_attrib (js_instance->enode, (char *) attrib, NULL);
EDEBUG (("js-embed", "calculating float value of %s", value->str));
fval = strtod (value->str, &end);
if (end && (value->str == end))
fval = 0.0;
EDEBUG (("js-embed", "float value of %s is %f", value->str, fval));
js_value->type = JS_FLOAT;
js_value->u.vfloat = fval;
}
}
return JS_PROPERTY_FOUND;
}
static void
ENodeAttrib_constructor (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
JSNode * js_args, JSNode * js_retval)
{
ENodeAttribInstanceCtx *js_instance =
js_calloc (js_vm, 1, sizeof (*js_instance));
char *basename = NULL;
JSNode js_tempnode;
if (js_args->u.vinteger != 1) {
js_free (js_instance);
js_vm_set_err (js_vm, "ENodeAttrib(): illegal number of arguments");
js_vm_error (js_vm);
}
js_vm_to_string (js_vm, &js_args[1], &js_tempnode);
basename = js_string_to_c_string (js_vm, &js_tempnode);
do {
js_instance->enode = enode (basename);
enode_ref (js_instance->enode);
} while (0);
js_free (basename);
js_vm_builtin_create (js_vm, js_retval, js_info, js_instance);
}
static void
ENodeAttrib_destructor (JSBuiltinInfo * js_info, void *js_ictx)
{
ENodeAttribInstanceCtx *js_instance = js_ictx;
if (js_instance) {
/* g_print ("deleting node attrib %s\n",
* js_instance->enode->element->str); */
enode_unref (js_instance->enode);
js_free (js_instance);
}
}
static int
ENodeAttrib_query (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
void *js_ictx, JSSymbol js_symbol)
{
return JS_PROPERTY_UNKNOWN;
}
static int
ENodeAttrib_enumerate (JSVirtualMachine * js_vm, JSBuiltinInfo * js_info,
void *js_ictx, int js_nth, JSNode * js_retval)
{
if (js_ictx == NULL) {
switch (js_nth) {
default:
return js_vm_object_nth (js_vm, js_info->prototype, js_nth - 0,
js_retval);
}
}
switch (js_nth) {
default:
return js_vm_object_nth (js_vm, js_retval->u.vbuiltin->prototype,
js_nth - 0, js_retval);
}
}
void
js_Entity_ENodeAttrib (JSVirtualMachine * js_vm)
{
JSNode *js_node;
JSBuiltinInfo *js_info;
ENodeAttribCtx *ctx;
ctx = js_calloc (js_vm, 1, sizeof (*ctx));
js_info = js_vm_builtin_info_create (js_vm);
js_info->method_proc = ENodeAttrib_method;
js_info->property_proc = ENodeAttrib_property;
js_info->new_proc = ENodeAttrib_constructor;
js_info->delete_proc = ENodeAttrib_destructor;
js_info->query_proc = ENodeAttrib_query;
js_info->enumerate_proc = ENodeAttrib_enumerate;
js_info->obj_context = ctx;
js_info->obj_context_delete = js_free;
js_node = &js_vm->globals[js_vm_intern (js_vm, "ENodeAttrib")];
js_vm_builtin_create (js_vm, js_node, js_info, NULL);
ctx = js_calloc (js_vm, 1, sizeof (*ctx));
js_info = js_vm_builtin_info_create (js_vm);
js_info->method_proc = ENodeAttrib_method;
js_info->property_proc = ENodeAttribVal_property;
js_info->new_proc = ENodeAttrib_constructor;
js_info->delete_proc = ENodeAttrib_destructor;
js_info->query_proc = ENodeAttrib_query;
js_info->enumerate_proc = ENodeAttrib_enumerate;
js_info->obj_context = ctx;
js_info->obj_context_delete = js_free;
js_node = &js_vm->globals[js_vm_intern (js_vm, "ENodeAttribVal")];
js_vm_builtin_create (js_vm, js_node, js_info, NULL);
}
syntax highlighted by Code2HTML, v. 0.9.1