diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.c index 6ff40812..3150eeb8 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.c @@ -57,7 +57,7 @@ HTMLAnchorElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->shape); break; case JSP_HTML_ANCHOR_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_ANCHOR_ELEMENT_TARGET: string_to_jsval(ctx, vp, html->target); @@ -120,8 +120,7 @@ HTMLAnchorElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->shape, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_ANCHOR_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_ANCHOR_ELEMENT_TARGET: mem_free_set(&html->target, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.h index 403e6dae..453fb38b 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAnchorElement.h @@ -19,9 +19,9 @@ struct A_struct { unsigned char *rel; unsigned char *rev; unsigned char *shape; - unsigned char *tab_index; unsigned char *target; unsigned char *type; + int tab_index; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.c index f5300db5..1c4ae858 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.c @@ -48,7 +48,7 @@ HTMLAppletElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->height); break; case JSP_HTML_APPLET_ELEMENT_HSPACE: - string_to_jsval(ctx, vp, html->hspace); + int_to_jsval(ctx, vp, html->hspace); break; case JSP_HTML_APPLET_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); @@ -57,7 +57,7 @@ HTMLAppletElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->object); break; case JSP_HTML_APPLET_ELEMENT_VSPACE: - string_to_jsval(ctx, vp, html->vspace); + int_to_jsval(ctx, vp, html->vspace); break; case JSP_HTML_APPLET_ELEMENT_WIDTH: string_to_jsval(ctx, vp, html->width); @@ -107,8 +107,7 @@ HTMLAppletElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->height, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_APPLET_ELEMENT_HSPACE: - mem_free_set(&html->hspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->hspace); case JSP_HTML_APPLET_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; @@ -116,8 +115,7 @@ HTMLAppletElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->object, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_APPLET_ELEMENT_VSPACE: - mem_free_set(&html->vspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->vspace); case JSP_HTML_APPLET_ELEMENT_WIDTH: mem_free_set(&html->width, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.h index 54acee1d..7ffb30b3 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAppletElement.h @@ -16,11 +16,11 @@ struct APPLET_struct { unsigned char *code; unsigned char *code_base; unsigned char *height; - unsigned char *hspace; unsigned char *name; unsigned char *object; - unsigned char *vspace; unsigned char *width; + int hspace; + int vspace; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.c index e26d3d9f..1ff52da7 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.c @@ -42,13 +42,13 @@ HTMLAreaElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->href); break; case JSP_HTML_AREA_ELEMENT_NO_HREF: - string_to_jsval(ctx, vp, html->no_href); + boolean_to_jsval(ctx, vp, html->no_href); break; case JSP_HTML_AREA_ELEMENT_SHAPE: string_to_jsval(ctx, vp, html->shape); break; case JSP_HTML_AREA_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_AREA_ELEMENT_TARGET: string_to_jsval(ctx, vp, html->target); @@ -92,14 +92,13 @@ HTMLAreaElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->href, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_AREA_ELEMENT_NO_HREF: - mem_free_set(&html->no_href, stracpy(jsval_to_string(ctx, vp))); + html->no_href = jsval_to_boolean(ctx, vp); break; case JSP_HTML_AREA_ELEMENT_SHAPE: mem_free_set(&html->shape, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_AREA_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_AREA_ELEMENT_TARGET: mem_free_set(&html->target, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.h index 974dfc90..85557486 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLAreaElement.h @@ -14,10 +14,10 @@ struct AREA_struct { unsigned char *alt; unsigned char *coords; unsigned char *href; - unsigned char *no_href; unsigned char *shape; - unsigned char *tab_index; unsigned char *target; + int tab_index; + unsigned int no_href:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.c index 8c3f62e9..bf4b491d 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.c @@ -36,7 +36,7 @@ HTMLBaseFontElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * string_to_jsval(ctx, vp, html->face); break; case JSP_HTML_BASE_FONT_ELEMENT_SIZE: - string_to_jsval(ctx, vp, html->size); + int_to_jsval(ctx, vp, html->size); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -71,8 +71,7 @@ HTMLBaseFontElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * mem_free_set(&html->face, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_BASE_FONT_ELEMENT_SIZE: - mem_free_set(&html->size, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->size); default: return HTMLElement_setProperty(ctx, obj, id, vp); } diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.h index d40ef7f2..2c80af6c 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLBaseFontElement.h @@ -12,7 +12,7 @@ struct BASEFONT_struct { struct HTMLElement_struct html; unsigned char *color; unsigned char *face; - unsigned char *size; + int size; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c index c2aa4451..46961683 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.c @@ -37,13 +37,13 @@ HTMLButtonElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->access_key); break; case JSP_HTML_BUTTON_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_BUTTON_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_BUTTON_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_BUTTON_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -81,14 +81,13 @@ HTMLButtonElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->access_key, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_BUTTON_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_BUTTON_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_BUTTON_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_BUTTON_ELEMENT_VALUE: mem_free_set(&html->value, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h index 9c62b355..db4557d6 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLButtonElement.h @@ -12,11 +12,11 @@ struct BUTTON_struct { struct HTMLElement_struct html; unsigned char *form; /* TODO: proper type */ unsigned char *access_key; - unsigned char *disabled; unsigned char *name; - unsigned char *tab_index; unsigned char *type; unsigned char *value; + int tab_index; + unsigned char disabled:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.c index 268d4da1..db973ebd 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.c @@ -30,7 +30,7 @@ HTMLDListElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_DLIST_ELEMENT_COMPACT: - string_to_jsval(ctx, vp, html->compact); + boolean_to_jsval(ctx, vp, html->compact); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -59,7 +59,7 @@ HTMLDListElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_DLIST_ELEMENT_COMPACT: - mem_free_set(&html->compact, stracpy(jsval_to_string(ctx, vp))); + html->compact = jsval_to_boolean(ctx, vp); break; default: return HTMLElement_setProperty(ctx, obj, id, vp); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.h index a1f945df..d1cedf3e 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLDListElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLDListElement_props[]; struct DL_struct { struct HTMLElement_struct html; - unsigned char *compact; + unsigned int compact:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.c index 6f0dc5de..25e22e08 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.c @@ -30,7 +30,7 @@ HTMLDirectoryElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval switch (JSVAL_TO_INT(id)) { case JSP_HTML_DIRECTORY_ELEMENT_COMPACT: - string_to_jsval(ctx, vp, html->compact); + boolean_to_jsval(ctx, vp, html->compact); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -59,7 +59,7 @@ HTMLDirectoryElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval switch (JSVAL_TO_INT(id)) { case JSP_HTML_DIRECTORY_ELEMENT_COMPACT: - mem_free_set(&html->compact, stracpy(jsval_to_string(ctx, vp))); + html->compact = jsval_to_boolean(ctx, vp); break; default: return HTMLElement_setProperty(ctx, obj, id, vp); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.h index 171544fe..cfd83dd3 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLDirectoryElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLDirectoryElement_props[]; struct DIR_struct { struct HTMLElement_struct html; - unsigned char *compact; + unsigned int compact:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.c index 88935a88..66d3942d 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.c @@ -7,37 +7,54 @@ #include "document/dom/ecmascript/spidermonkey.h" #include "document/dom/ecmascript/spidermonkey/Node.h" #include "document/dom/ecmascript/spidermonkey/html/HTMLFormElement.h" +#include "dom/node.h" static JSBool HTMLFormElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) { + struct dom_node *node; + struct FORM_struct *html; + + if (!JSVAL_IS_INT(id)) + return JS_TRUE; + + if (!obj || (!JS_InstanceOf(ctx, obj, (JSClass *)&HTMLFormElement_class, NULL))) + return JS_FALSE; + + node = JS_GetPrivate(ctx, obj); + if (!node) + return JS_FALSE; + html = node->data.element.html_data; + if (!html) + return JS_FALSE; if (!JSVAL_IS_INT(id)) return JS_TRUE; switch (JSVAL_TO_INT(id)) { case JSP_HTML_FORM_ELEMENT_ELEMENTS: + string_to_jsval(ctx, vp, html->elements); /* Write me! */ break; case JSP_HTML_FORM_ELEMENT_LENGTH: - /* Write me! */ + int_to_jsval(ctx, vp, html->length); break; case JSP_HTML_FORM_ELEMENT_NAME: - /* Write me! */ + string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_FORM_ELEMENT_ACCEPT_CHARSET: - /* Write me! */ + string_to_jsval(ctx, vp, html->accept_charset); break; case JSP_HTML_FORM_ELEMENT_ACTION: - /* Write me! */ + string_to_jsval(ctx, vp, html->action); break; case JSP_HTML_FORM_ELEMENT_ENCTYPE: - /* Write me! */ + string_to_jsval(ctx, vp, html->enctype); break; case JSP_HTML_FORM_ELEMENT_METHOD: - /* Write me! */ + string_to_jsval(ctx, vp, html->method); break; case JSP_HTML_FORM_ELEMENT_TARGET: - /* Write me! */ + string_to_jsval(ctx, vp, html->target); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -48,27 +65,42 @@ HTMLFormElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) static JSBool HTMLFormElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) { + struct dom_node *node; + struct FORM_struct *html; + + if (!JSVAL_IS_INT(id)) + return JS_TRUE; + + if (!obj || (!JS_InstanceOf(ctx, obj, (JSClass *)&HTMLFormElement_class, NULL))) + return JS_FALSE; + + node = JS_GetPrivate(ctx, obj); + if (!node) + return JS_FALSE; + html = node->data.element.html_data; + if (!html) + return JS_FALSE; if (!JSVAL_IS_INT(id)) return JS_TRUE; switch (JSVAL_TO_INT(id)) { case JSP_HTML_FORM_ELEMENT_NAME: - /* Write me! */ + mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FORM_ELEMENT_ACCEPT_CHARSET: - /* Write me! */ + mem_free_set(&html->accept_charset, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FORM_ELEMENT_ACTION: - /* Write me! */ + mem_free_set(&html->action, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FORM_ELEMENT_ENCTYPE: - /* Write me! */ + mem_free_set(&html->enctype, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FORM_ELEMENT_METHOD: - /* Write me! */ + mem_free_set(&html->method, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FORM_ELEMENT_TARGET: - /* Write me! */ + mem_free_set(&html->target, stracpy(jsval_to_string(ctx, vp))); break; default: return HTMLElement_setProperty(ctx, obj, id, vp); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.h index e6f3c760..4f7d3f69 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFormElement.h @@ -8,17 +8,16 @@ extern const JSClass HTMLFormElement_class; extern const JSFunctionSpec HTMLFormElement_funcs[]; extern const JSPropertySpec HTMLFormElement_props[]; -struct FRAME_struct { +struct FORM_struct { struct HTMLElement_struct html; - unsigned char *frame_border; - unsigned char *long_desc; - unsigned char *margin_height; - unsigned char *margin_width; + unsigned char *elements; /* FIXME: proper type */ unsigned char *name; - unsigned char *no_resize; - unsigned char *scrolling; - unsigned char *src; - unsigned char *content_document; /* FIXME: proper type */ + unsigned char *accept_charset; + unsigned char *action; + unsigned char *enctype; + unsigned char *method; + unsigned char *target; + int length; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.c index ec088dee..3c0639fc 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.c @@ -45,7 +45,7 @@ HTMLFrameElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_FRAME_ELEMENT_NO_RESIZE: - string_to_jsval(ctx, vp, html->no_resize); + boolean_to_jsval(ctx, vp, html->no_resize); break; case JSP_HTML_FRAME_ELEMENT_SCROLLING: string_to_jsval(ctx, vp, html->scrolling); @@ -99,7 +99,7 @@ HTMLFrameElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_FRAME_ELEMENT_NO_RESIZE: - mem_free_set(&html->no_resize, stracpy(jsval_to_string(ctx, vp))); + html->no_resize = jsval_to_boolean(ctx, vp); break; case JSP_HTML_FRAME_ELEMENT_SCROLLING: mem_free_set(&html->scrolling, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.h index 455aa536..fc3abf33 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLFrameElement.h @@ -15,10 +15,10 @@ struct FRAME_struct { unsigned char *margin_height; unsigned char *margin_width; unsigned char *name; - unsigned char *no_resize; unsigned char *scrolling; unsigned char *src; unsigned char *content_document; /* FIXME: proper type */ + unsigned int no_resize:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.c index 6c003391..bd51cc87 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.c @@ -33,7 +33,7 @@ HTMLHRElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->align); break; case JSP_HTML_HR_ELEMENT_NO_SHADE: - string_to_jsval(ctx, vp, html->no_shade); + boolean_to_jsval(ctx, vp, html->no_shade); break; case JSP_HTML_HR_ELEMENT_SIZE: string_to_jsval(ctx, vp, html->size); @@ -71,7 +71,7 @@ HTMLHRElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->align, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_HR_ELEMENT_NO_SHADE: - mem_free_set(&html->no_shade, stracpy(jsval_to_string(ctx, vp))); + html->no_shade = jsval_to_boolean(ctx, vp); break; case JSP_HTML_HR_ELEMENT_SIZE: mem_free_set(&html->size, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.h index 0ccd14bf..c185797b 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLHRElement.h @@ -11,9 +11,9 @@ extern const JSPropertySpec HTMLHRElement_props[]; struct HR_struct { struct HTMLElement_struct html; unsigned char *align; - unsigned char *no_shade; unsigned char *size; unsigned char *width; + unsigned int no_shade:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.c index 76c82ac4..000cfd2a 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.c @@ -42,13 +42,13 @@ HTMLImageElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->border); break; case JSP_HTML_IMAGE_ELEMENT_HEIGHT: - string_to_jsval(ctx, vp, html->height); + int_to_jsval(ctx, vp, html->height); break; case JSP_HTML_IMAGE_ELEMENT_HSPACE: - string_to_jsval(ctx, vp, html->hspace); + int_to_jsval(ctx, vp, html->hspace); break; case JSP_HTML_IMAGE_ELEMENT_IS_MAP: - string_to_jsval(ctx, vp, html->is_map); + boolean_to_jsval(ctx, vp, html->is_map); break; case JSP_HTML_IMAGE_ELEMENT_LONG_DESC: string_to_jsval(ctx, vp, html->long_desc); @@ -60,10 +60,10 @@ HTMLImageElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->use_map); break; case JSP_HTML_IMAGE_ELEMENT_VSPACE: - string_to_jsval(ctx, vp, html->vspace); + int_to_jsval(ctx, vp, html->vspace); break; case JSP_HTML_IMAGE_ELEMENT_WIDTH: - string_to_jsval(ctx, vp, html->width); + int_to_jsval(ctx, vp, html->width); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -104,13 +104,11 @@ HTMLImageElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->border, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_IMAGE_ELEMENT_HEIGHT: - mem_free_set(&html->height, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->height); case JSP_HTML_IMAGE_ELEMENT_HSPACE: - mem_free_set(&html->hspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->hspace); case JSP_HTML_IMAGE_ELEMENT_IS_MAP: - mem_free_set(&html->is_map, stracpy(jsval_to_string(ctx, vp))); + html->is_map = jsval_to_boolean(ctx, vp); break; case JSP_HTML_IMAGE_ELEMENT_LONG_DESC: mem_free_set(&html->long_desc, stracpy(jsval_to_string(ctx, vp))); @@ -122,11 +120,9 @@ HTMLImageElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->use_map, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_IMAGE_ELEMENT_VSPACE: - mem_free_set(&html->vspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->vspace); case JSP_HTML_IMAGE_ELEMENT_WIDTH: - mem_free_set(&html->width, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->width); default: return HTMLElement_setProperty(ctx, obj, id, vp); } diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.h index 034a3e94..0d11b73b 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLImageElement.h @@ -14,14 +14,14 @@ struct IMAGE_struct { unsigned char *align; unsigned char *alt; unsigned char *border; - unsigned char *height; - unsigned char *hspace; - unsigned char *is_map; unsigned char *long_desc; unsigned char *src; unsigned char *use_map; - unsigned char *vspace; - unsigned char *width; + int height; + int hspace; + int vspace; + int width; + unsigned int is_map:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c index 556d1203..db8b38db 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.c @@ -33,7 +33,7 @@ HTMLInputElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->default_value); break; case JSP_HTML_INPUT_ELEMENT_DEFAULT_CHECKED: - string_to_jsval(ctx, vp, html->default_checked); + boolean_to_jsval(ctx, vp, html->default_checked); break; case JSP_HTML_INPUT_ELEMENT_FORM: string_to_jsval(ctx, vp, html->form); @@ -52,30 +52,28 @@ HTMLInputElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->alt); break; case JSP_HTML_INPUT_ELEMENT_CHECKED: - string_to_jsval(ctx, vp, html->checked); + boolean_to_jsval(ctx, vp, html->checked); break; case JSP_HTML_INPUT_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_INPUT_ELEMENT_MAX_LENGTH: - string_to_jsval(ctx, vp, html->max_length); - /* Write me! */ + int_to_jsval(ctx, vp, html->max_length); break; case JSP_HTML_INPUT_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_INPUT_ELEMENT_READ_ONLY: - string_to_jsval(ctx, vp, html->read_only); + boolean_to_jsval(ctx, vp, html->read_only); break; case JSP_HTML_INPUT_ELEMENT_SIZE: - string_to_jsval(ctx, vp, html->size); - /* Write me! */ + int_to_jsval(ctx, vp, html->size); break; case JSP_HTML_INPUT_ELEMENT_SRC: string_to_jsval(ctx, vp, html->src); break; case JSP_HTML_INPUT_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_INPUT_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -116,7 +114,7 @@ HTMLInputElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->default_value, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_INPUT_ELEMENT_DEFAULT_CHECKED: - mem_free_set(&html->default_checked, stracpy(jsval_to_string(ctx, vp))); + html->default_checked = jsval_to_boolean(ctx, vp); break; case JSP_HTML_INPUT_ELEMENT_ACCEPT: mem_free_set(&html->accept, stracpy(jsval_to_string(ctx, vp))); @@ -131,29 +129,26 @@ HTMLInputElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->alt, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_INPUT_ELEMENT_CHECKED: - mem_free_set(&html->checked, stracpy(jsval_to_string(ctx, vp))); + html->checked = jsval_to_boolean(ctx, vp); break; case JSP_HTML_INPUT_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_INPUT_ELEMENT_MAX_LENGTH: - mem_free_set(&html->max_length, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->max_length); case JSP_HTML_INPUT_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_INPUT_ELEMENT_READ_ONLY: - mem_free_set(&html->read_only, stracpy(jsval_to_string(ctx, vp))); + html->read_only = jsval_to_boolean(ctx, vp); break; case JSP_HTML_INPUT_ELEMENT_SIZE: - mem_free_set(&html->size, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->size); case JSP_HTML_INPUT_ELEMENT_SRC: mem_free_set(&html->src, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_INPUT_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_INPUT_ELEMENT_TYPE: mem_free_set(&html->type, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h index 02ec1791..3177d906 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLInputElement.h @@ -11,23 +11,23 @@ extern const JSPropertySpec HTMLInputElement_props[]; struct INPUT_struct { struct HTMLElement_struct html; unsigned char *default_value; - unsigned char *default_checked; unsigned char *form; /* FIXME: proper type */ unsigned char *accept; unsigned char *access_key; unsigned char *align; unsigned char *alt; - unsigned char *checked; - unsigned char *disabled; - unsigned char *max_length; unsigned char *name; - unsigned char *read_only; - unsigned char *size; unsigned char *src; - unsigned char *tab_index; unsigned char *type; unsigned char *use_map; unsigned char *value; + int max_length; + int size; + int tab_index; + unsigned int default_checked:1; + unsigned int checked:1; + unsigned int disabled:1; + unsigned int read_only:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.c index 8372e37f..63c21313 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.c @@ -33,7 +33,7 @@ HTMLLIElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) string_to_jsval(ctx, vp, html->type); break; case JSP_HTML_LI_ELEMENT_VALUE: - string_to_jsval(ctx, vp, html->value); + int_to_jsval(ctx, vp, html->value); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -65,8 +65,7 @@ HTMLLIElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) mem_free_set(&html->type, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_LI_ELEMENT_VALUE: - mem_free_set(&html->value, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->value); default: return HTMLElement_setProperty(ctx, obj, id, vp); } diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.h index 2d2fd8e7..6c6ba4dd 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLIElement.h @@ -11,7 +11,7 @@ extern const JSPropertySpec HTMLLIElement_props[]; struct LI_struct { struct HTMLElement_struct html; unsigned char *type; - unsigned char *value; + int value; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.c index 0d9945d0..928f8af3 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.c @@ -30,7 +30,7 @@ HTMLLinkElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_LINK_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_LINK_ELEMENT_CHARSET: string_to_jsval(ctx, vp, html->charset); @@ -83,7 +83,7 @@ HTMLLinkElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_LINK_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_LINK_ELEMENT_CHARSET: mem_free_set(&html->charset, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.h index cb94a9a1..594a091b 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLLinkElement.h @@ -10,7 +10,6 @@ extern const JSPropertySpec HTMLLinkElement_props[]; struct LINK_struct { struct HTMLElement_struct html; - unsigned char *disabled; unsigned char *charset; unsigned char *href; unsigned char *hreflang; @@ -19,6 +18,7 @@ struct LINK_struct { unsigned char *rev; unsigned char *target; unsigned char *type; + unsigned int disabled:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.c index a68bedf9..d536a1d9 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.c @@ -30,7 +30,7 @@ HTMLMenuElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_MENU_ELEMENT_COMPACT: - string_to_jsval(ctx, vp, html->compact); + boolean_to_jsval(ctx, vp, html->compact); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -59,7 +59,7 @@ HTMLMenuElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_MENU_ELEMENT_COMPACT: - mem_free_set(&html->compact, stracpy(jsval_to_string(ctx, vp))); + html->compact = jsval_to_boolean(ctx, vp); break; default: return HTMLElement_setProperty(ctx, obj, id, vp); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.h index 740d6088..84bdda27 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLMenuElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLMenuElement_props[]; struct MENU_struct { struct HTMLElement_struct html; - unsigned char *compact; + unsigned int compact:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.c index 937f3b81..368338ef 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.c @@ -30,10 +30,10 @@ HTMLOListElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_OLIST_ELEMENT_COMPACT: - string_to_jsval(ctx, vp, html->compact); + boolean_to_jsval(ctx, vp, html->compact); break; case JSP_HTML_OLIST_ELEMENT_START: - string_to_jsval(ctx, vp, html->start); + int_to_jsval(ctx, vp, html->start); break; case JSP_HTML_OLIST_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -65,11 +65,10 @@ HTMLOListElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_OLIST_ELEMENT_COMPACT: - mem_free_set(&html->compact, stracpy(jsval_to_string(ctx, vp))); + html->compact = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OLIST_ELEMENT_START: - mem_free_set(&html->start, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->start); case JSP_HTML_OLIST_ELEMENT_TYPE: mem_free_set(&html->type, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.h index fcd7a867..57ef78e8 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOListElement.h @@ -10,9 +10,9 @@ extern const JSPropertySpec HTMLOListElement_props[]; struct OL_struct { struct HTMLElement_struct html; - unsigned char *compact; - unsigned char *start; unsigned char *type; + int start; + unsigned int compact:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c index e5527fe3..0731019a 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.c @@ -55,13 +55,13 @@ HTMLObjectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->data); break; case JSP_HTML_OBJECT_ELEMENT_DECLARE: - string_to_jsval(ctx, vp, html->declare); + boolean_to_jsval(ctx, vp, html->declare); break; case JSP_HTML_OBJECT_ELEMENT_HEIGHT: string_to_jsval(ctx, vp, html->height); break; case JSP_HTML_OBJECT_ELEMENT_HSPACE: - string_to_jsval(ctx, vp, html->hspace); + int_to_jsval(ctx, vp, html->hspace); break; case JSP_HTML_OBJECT_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); @@ -70,7 +70,7 @@ HTMLObjectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->standby); break; case JSP_HTML_OBJECT_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_OBJECT_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -79,7 +79,7 @@ HTMLObjectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->use_map); break; case JSP_HTML_OBJECT_ELEMENT_VSPACE: - string_to_jsval(ctx, vp, html->vspace); + int_to_jsval(ctx, vp, html->vspace); break; case JSP_HTML_OBJECT_ELEMENT_WIDTH: string_to_jsval(ctx, vp, html->width); @@ -136,14 +136,13 @@ HTMLObjectElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->data, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_OBJECT_ELEMENT_DECLARE: - mem_free_set(&html->declare, stracpy(jsval_to_string(ctx, vp))); + html->declare = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OBJECT_ELEMENT_HEIGHT: mem_free_set(&html->height, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_OBJECT_ELEMENT_HSPACE: - mem_free_set(&html->hspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->hspace); case JSP_HTML_OBJECT_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; @@ -151,8 +150,7 @@ HTMLObjectElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->standby, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_OBJECT_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_OBJECT_ELEMENT_TYPE: mem_free_set(&html->type, stracpy(jsval_to_string(ctx, vp))); break; @@ -160,8 +158,7 @@ HTMLObjectElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->use_map, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_OBJECT_ELEMENT_VSPACE: - mem_free_set(&html->vspace, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->vspace); case JSP_HTML_OBJECT_ELEMENT_WIDTH: mem_free_set(&html->width, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h index ace46876..6cbb0925 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLObjectElement.h @@ -18,17 +18,17 @@ struct OBJECT_struct { unsigned char *code_base; unsigned char *code_type; unsigned char *data; - unsigned char *declare; unsigned char *height; - unsigned char *hspace; unsigned char *name; unsigned char *standby; - unsigned char *tab_index; unsigned char *type; unsigned char *use_map; - unsigned char *vspace; unsigned char *width; unsigned char *content_document; /* FIXME: proper type */ + int hspace; + int tab_index; + int vspace; + unsigned int declare:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.c index 1b81689a..916ff392 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.c @@ -30,7 +30,7 @@ HTMLOptGroupElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * switch (JSVAL_TO_INT(id)) { case JSP_HTML_OPT_GROUP_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_OPT_GROUP_ELEMENT_LABEL: string_to_jsval(ctx, vp, html->label); @@ -62,7 +62,7 @@ HTMLOptGroupElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * switch (JSVAL_TO_INT(id)) { case JSP_HTML_OPT_GROUP_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OPT_GROUP_ELEMENT_LABEL: mem_free_set(&html->label, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.h index 46d806b4..ce6523f2 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptGroupElement.h @@ -10,8 +10,8 @@ extern const JSPropertySpec HTMLOptGroupElement_props[]; struct OPTGROUP_struct { struct HTMLElement_struct html; - unsigned char *disabled; unsigned char *label; + unsigned int disabled:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c index dd71939a..237e2400 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.c @@ -34,22 +34,22 @@ HTMLOptionElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp /* Write me! */ break; case JSP_HTML_OPTION_ELEMENT_DEFAULT_SELECTED: - string_to_jsval(ctx, vp, html->default_selected); + boolean_to_jsval(ctx, vp, html->default_selected); break; case JSP_HTML_OPTION_ELEMENT_TEXT: string_to_jsval(ctx, vp, html->text); break; case JSP_HTML_OPTION_ELEMENT_INDEX: - string_to_jsval(ctx, vp, html->index); + int_to_jsval(ctx, vp, html->index); break; case JSP_HTML_OPTION_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_OPTION_ELEMENT_LABEL: string_to_jsval(ctx, vp, html->label); break; case JSP_HTML_OPTION_ELEMENT_SELECTED: - string_to_jsval(ctx, vp, html->selected); + boolean_to_jsval(ctx, vp, html->selected); break; case JSP_HTML_OPTION_ELEMENT_VALUE: string_to_jsval(ctx, vp, html->value); @@ -81,16 +81,16 @@ HTMLOptionElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_OPTION_ELEMENT_DEFAULT_SELECTED: - mem_free_set(&html->default_selected, stracpy(jsval_to_string(ctx, vp))); + html->default_selected = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OPTION_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OPTION_ELEMENT_LABEL: mem_free_set(&html->label, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_OPTION_ELEMENT_SELECTED: - mem_free_set(&html->selected, stracpy(jsval_to_string(ctx, vp))); + html->selected = jsval_to_boolean(ctx, vp); break; case JSP_HTML_OPTION_ELEMENT_VALUE: mem_free_set(&html->value, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h index 474f9d3f..992b8b5f 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLOptionElement.h @@ -11,13 +11,13 @@ extern const JSPropertySpec HTMLOptionElement_props[]; struct OPTION_struct { struct HTMLElement_struct html; unsigned char *form; /* FIXME: proper type */ - unsigned char *default_selected; unsigned char *text; - unsigned char *index; - unsigned char *disabled; unsigned char *label; - unsigned char *selected; unsigned char *value; + int index; + unsigned int default_selected:1; + unsigned int disabled:1; + unsigned int selected:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.c index 65c003e9..8c8b2144 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.c @@ -30,7 +30,7 @@ HTMLPreElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_PRE_ELEMENT_WIDTH: - string_to_jsval(ctx, vp, html->width); + int_to_jsval(ctx, vp, html->width); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -59,8 +59,7 @@ HTMLPreElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_PRE_ELEMENT_WIDTH: - mem_free_set(&html->width, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->width); default: return HTMLElement_setProperty(ctx, obj, id, vp); } diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.h index 9e203950..bb74bf5f 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLPreElement.h @@ -10,7 +10,7 @@ extern const JSPropertySpec HTMLPreElement_props[]; struct PRE_struct { struct HTMLElement_struct html; - unsigned char *width; + int width; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.c index e135a407..6b6275e4 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.c @@ -42,7 +42,7 @@ HTMLScriptElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->charset); break; case JSP_HTML_SCRIPT_ELEMENT_DEFER: - string_to_jsval(ctx, vp, html->defer); + boolean_to_jsval(ctx, vp, html->defer); break; case JSP_HTML_SCRIPT_ELEMENT_SRC: string_to_jsval(ctx, vp, html->src); @@ -89,7 +89,7 @@ HTMLScriptElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp mem_free_set(&html->charset, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_SCRIPT_ELEMENT_DEFER: - mem_free_set(&html->defer, stracpy(jsval_to_string(ctx, vp))); + html->defer = jsval_to_boolean(ctx, vp); break; case JSP_HTML_SCRIPT_ELEMENT_SRC: mem_free_set(&html->src, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.h index d06fa43a..17914814 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLScriptElement.h @@ -14,9 +14,9 @@ struct SCRIPT_struct { unsigned char *html_for; unsigned char *event; unsigned char *charset; - unsigned char *defer; unsigned char *src; unsigned char *type; + unsigned int defer:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c index fb0f53b7..27f6e39c 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.c @@ -33,13 +33,13 @@ HTMLSelectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp string_to_jsval(ctx, vp, html->type); break; case JSP_HTML_SELECT_ELEMENT_SELECTED_INDEX: - string_to_jsval(ctx, vp, html->selected_index); + int_to_jsval(ctx, vp, html->selected_index); break; case JSP_HTML_SELECT_ELEMENT_VALUE: string_to_jsval(ctx, vp, html->value); break; case JSP_HTML_SELECT_ELEMENT_LENGTH: - string_to_jsval(ctx, vp, html->length); + int_to_jsval(ctx, vp, html->length); break; case JSP_HTML_SELECT_ELEMENT_FORM: string_to_jsval(ctx, vp, html->form); @@ -50,19 +50,19 @@ HTMLSelectElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp /* Write me! */ break; case JSP_HTML_SELECT_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_SELECT_ELEMENT_MULTIPLE: - string_to_jsval(ctx, vp, html->multiple); + boolean_to_jsval(ctx, vp, html->multiple); break; case JSP_HTML_SELECT_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_SELECT_ELEMENT_SIZE: - string_to_jsval(ctx, vp, html->size); + int_to_jsval(ctx, vp, html->size); break; case JSP_HTML_SELECT_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; default: return HTMLElement_getProperty(ctx, obj, id, vp); @@ -91,29 +91,25 @@ HTMLSelectElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp switch (JSVAL_TO_INT(id)) { case JSP_HTML_SELECT_ELEMENT_SELECTED_INDEX: - mem_free_set(&html->selected_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->selected_index); case JSP_HTML_SELECT_ELEMENT_VALUE: mem_free_set(&html->value, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_SELECT_ELEMENT_LENGTH: - mem_free_set(&html->length, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->length); case JSP_HTML_SELECT_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_SELECT_ELEMENT_MULTIPLE: - mem_free_set(&html->multiple, stracpy(jsval_to_string(ctx, vp))); + html->multiple = jsval_to_boolean(ctx, vp); break; case JSP_HTML_SELECT_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_SELECT_ELEMENT_SIZE: - mem_free_set(&html->size, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->size); case JSP_HTML_SELECT_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); default: return HTMLElement_setProperty(ctx, obj, id, vp); } diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h index 61898118..1cebc27d 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLSelectElement.h @@ -11,16 +11,16 @@ extern const JSPropertySpec HTMLSelectElement_props[]; struct SELECT_struct { struct HTMLElement_struct html; unsigned char *type; - unsigned char *selected_index; unsigned char *value; - unsigned char *length; unsigned char *form; /* FIXME: proper type */ unsigned char *options; /* FIXME: proper type */ - unsigned char *disabled; - unsigned char *multiple; unsigned char *name; - unsigned char *size; - unsigned char *tab_index; + int selected_index; + int length; + int size; + int tab_index; + unsigned int disabled:1; + unsigned int multiple:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.c index 3a10419d..37386a5f 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.c @@ -30,7 +30,7 @@ HTMLStyleElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_STYLE_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_STYLE_ELEMENT_MEDIA: string_to_jsval(ctx, vp, html->media); @@ -65,7 +65,7 @@ HTMLStyleElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_STYLE_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_STYLE_ELEMENT_MEDIA: mem_free_set(&html->media, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.h index fab5eefe..b9c047f1 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLStyleElement.h @@ -10,9 +10,9 @@ extern const JSPropertySpec HTMLStyleElement_props[]; struct STYLE_struct { struct HTMLElement_struct html; - unsigned char *disabled; unsigned char *media; unsigned char *type; + unsigned int disabled:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.c index c9bd370d..2c94b27e 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.c @@ -30,7 +30,7 @@ HTMLTableCellElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval switch (JSVAL_TO_INT(id)) { case JSP_HTML_TABLE_CELL_ELEMENT_CELL_INDEX: - string_to_jsval(ctx, vp, html->cell_index); + int_to_jsval(ctx, vp, html->cell_index); break; case JSP_HTML_TABLE_CELL_ELEMENT_ABBR: string_to_jsval(ctx, vp, html->abbr); @@ -51,7 +51,7 @@ HTMLTableCellElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval string_to_jsval(ctx, vp, html->ch_off); break; case JSP_HTML_TABLE_CELL_ELEMENT_COL_SPAN: - string_to_jsval(ctx, vp, html->col_span); + int_to_jsval(ctx, vp, html->col_span); break; case JSP_HTML_TABLE_CELL_ELEMENT_HEADERS: string_to_jsval(ctx, vp, html->headers); @@ -60,10 +60,10 @@ HTMLTableCellElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval string_to_jsval(ctx, vp, html->height); break; case JSP_HTML_TABLE_CELL_ELEMENT_NO_WRAP: - string_to_jsval(ctx, vp, html->no_wrap); + boolean_to_jsval(ctx, vp, html->no_wrap); break; case JSP_HTML_TABLE_CELL_ELEMENT_ROW_SPAN: - string_to_jsval(ctx, vp, html->row_span); + int_to_jsval(ctx, vp, html->row_span); break; case JSP_HTML_TABLE_CELL_ELEMENT_SCOPE: string_to_jsval(ctx, vp, html->scope); @@ -119,8 +119,7 @@ HTMLTableCellElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval mem_free_set(&html->ch_off, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_TABLE_CELL_ELEMENT_COL_SPAN: - mem_free_set(&html->col_span, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->col_span); case JSP_HTML_TABLE_CELL_ELEMENT_HEADERS: mem_free_set(&html->headers, stracpy(jsval_to_string(ctx, vp))); break; @@ -128,11 +127,10 @@ HTMLTableCellElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval mem_free_set(&html->height, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_TABLE_CELL_ELEMENT_NO_WRAP: - mem_free_set(&html->no_wrap, stracpy(jsval_to_string(ctx, vp))); + html->no_wrap = jsval_to_boolean(ctx, vp); break; case JSP_HTML_TABLE_CELL_ELEMENT_ROW_SPAN: - mem_free_set(&html->row_span, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->row_span); case JSP_HTML_TABLE_CELL_ELEMENT_SCOPE: mem_free_set(&html->scope, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.h index 9b8728c6..b0cba046 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableCellElement.h @@ -10,21 +10,21 @@ extern const JSPropertySpec HTMLTableCellElement_props[]; struct TD_struct { struct HTMLElement_struct html; - unsigned char *cell_index; unsigned char *abbr; unsigned char *align; unsigned char *axis; unsigned char *bgcolor; unsigned char *ch; unsigned char *ch_off; - unsigned char *col_span; unsigned char *headers; unsigned char *height; - unsigned char *no_wrap; - unsigned char *row_span; unsigned char *scope; unsigned char *valign; unsigned char *width; + int cell_index; + int col_span; + int row_span; + unsigned int no_wrap:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.c index 4b9d67ce..fab5b69d 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.c @@ -39,7 +39,7 @@ HTMLTableColElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * string_to_jsval(ctx, vp, html->ch_off); break; case JSP_HTML_TABLE_COL_ELEMENT_SPAN: - string_to_jsval(ctx, vp, html->span); + int_to_jsval(ctx, vp, html->span); break; case JSP_HTML_TABLE_COL_ELEMENT_VALIGN: string_to_jsval(ctx, vp, html->valign); @@ -83,8 +83,7 @@ HTMLTableColElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * mem_free_set(&html->ch_off, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_TABLE_COL_ELEMENT_SPAN: - mem_free_set(&html->span, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->span); case JSP_HTML_TABLE_COL_ELEMENT_VALIGN: mem_free_set(&html->valign, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.h index 6779eab7..37624134 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableColElement.h @@ -13,9 +13,9 @@ struct COL_struct { unsigned char *align; unsigned char *ch; unsigned char *ch_off; - unsigned char *span; unsigned char *valign; unsigned char *width; + int span; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.c index dcc95871..40e607e5 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.c @@ -30,13 +30,14 @@ HTMLTableRowElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * switch (JSVAL_TO_INT(id)) { case JSP_HTML_TABLE_ROW_ELEMENT_ROW_INDEX: - string_to_jsval(ctx, vp, html->row_index); + int_to_jsval(ctx, vp, html->row_index); break; case JSP_HTML_TABLE_ROW_ELEMENT_SECTION_ROW_INDEX: - string_to_jsval(ctx, vp, html->section_row_index); + int_to_jsval(ctx, vp, html->section_row_index); break; case JSP_HTML_TABLE_ROW_ELEMENT_CELLS: string_to_jsval(ctx, vp, html->cells); + /* Write me! */ break; case JSP_HTML_TABLE_ROW_ELEMENT_ALIGN: string_to_jsval(ctx, vp, html->align); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.h index 9c6b0826..8a8e4285 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTableRowElement.h @@ -10,14 +10,14 @@ extern const JSPropertySpec HTMLTableRowElement_props[]; struct TR_struct { struct HTMLElement_struct html; - unsigned char *row_index; - unsigned char *section_row_index; - unsigned char *cells; + unsigned char *cells; /* FIXME: proper type */ unsigned char *align; unsigned char *bgcolor; unsigned char *ch; unsigned char *ch_off; unsigned char *valign; + int row_index; + int section_row_index; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c index 0c6ae87c..22a0bcb2 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.c @@ -40,22 +40,22 @@ HTMLTextAreaElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * string_to_jsval(ctx, vp, html->access_key); break; case JSP_HTML_TEXT_AREA_ELEMENT_COLS: - string_to_jsval(ctx, vp, html->cols); + int_to_jsval(ctx, vp, html->cols); break; case JSP_HTML_TEXT_AREA_ELEMENT_DISABLED: - string_to_jsval(ctx, vp, html->disabled); + boolean_to_jsval(ctx, vp, html->disabled); break; case JSP_HTML_TEXT_AREA_ELEMENT_NAME: string_to_jsval(ctx, vp, html->name); break; case JSP_HTML_TEXT_AREA_ELEMENT_READ_ONLY: - string_to_jsval(ctx, vp, html->read_only); + boolean_to_jsval(ctx, vp, html->read_only); break; case JSP_HTML_TEXT_AREA_ELEMENT_ROWS: - string_to_jsval(ctx, vp, html->rows); + int_to_jsval(ctx, vp, html->rows); break; case JSP_HTML_TEXT_AREA_ELEMENT_TAB_INDEX: - string_to_jsval(ctx, vp, html->tab_index); + int_to_jsval(ctx, vp, html->tab_index); break; case JSP_HTML_TEXT_AREA_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -96,23 +96,20 @@ HTMLTextAreaElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval * mem_free_set(&html->access_key, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_TEXT_AREA_ELEMENT_COLS: - mem_free_set(&html->cols, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->cols); case JSP_HTML_TEXT_AREA_ELEMENT_DISABLED: - mem_free_set(&html->disabled, stracpy(jsval_to_string(ctx, vp))); + html->disabled = jsval_to_boolean(ctx, vp); break; case JSP_HTML_TEXT_AREA_ELEMENT_NAME: mem_free_set(&html->name, stracpy(jsval_to_string(ctx, vp))); break; case JSP_HTML_TEXT_AREA_ELEMENT_READ_ONLY: - mem_free_set(&html->read_only, stracpy(jsval_to_string(ctx, vp))); + html->read_only = jsval_to_boolean(ctx, vp); break; case JSP_HTML_TEXT_AREA_ELEMENT_ROWS: - mem_free_set(&html->rows, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->rows); case JSP_HTML_TEXT_AREA_ELEMENT_TAB_INDEX: - mem_free_set(&html->tab_index, stracpy(jsval_to_string(ctx, vp))); - break; + return JS_ValueToInt32(ctx, *vp, &html->tab_index); case JSP_HTML_TEXT_AREA_ELEMENT_VALUE: mem_free_set(&html->value, stracpy(jsval_to_string(ctx, vp))); break; diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h index f0020df9..d64075b4 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLTextAreaElement.h @@ -13,15 +13,14 @@ struct TEXTAREA_struct { unsigned char *default_value; unsigned char *form; /* FIXME: proper type */ unsigned char *access_key; - unsigned char *cols; - unsigned char *disabled; unsigned char *name; - unsigned char *read_only; - unsigned char *rows; - unsigned char *tab_index; unsigned char *type; unsigned char *value; - + int cols; + int rows; + int tab_index; + unsigned int disabled:1; + unsigned int read_only:1; }; #endif diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.c b/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.c index 0958c2aa..6b99057c 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.c +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.c @@ -30,7 +30,7 @@ HTMLUListElement_getProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_ULIST_ELEMENT_COMPACT: - string_to_jsval(ctx, vp, html->compact); + boolean_to_jsval(ctx, vp, html->compact); break; case JSP_HTML_ULIST_ELEMENT_TYPE: string_to_jsval(ctx, vp, html->type); @@ -62,7 +62,7 @@ HTMLUListElement_setProperty(JSContext *ctx, JSObject *obj, jsval id, jsval *vp) switch (JSVAL_TO_INT(id)) { case JSP_HTML_ULIST_ELEMENT_COMPACT: - mem_free_set(&html->compact, stracpy(jsval_to_string(ctx, vp))); + html->compact = jsval_to_boolean(ctx, vp); break; case JSP_HTML_ULIST_ELEMENT_TYPE: mem_free_set(&html->type, stracpy(jsval_to_string(ctx, vp))); diff --git a/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.h b/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.h index 0e733a6e..d6858018 100644 --- a/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.h +++ b/src/document/dom/ecmascript/spidermonkey/html/HTMLUListElement.h @@ -10,8 +10,8 @@ extern const JSPropertySpec HTMLUListElement_props[]; struct UL_struct { struct HTMLElement_struct html; - unsigned char *compact; unsigned char *type; + unsigned int compact:1; }; #endif