From 7b193ec6c254488870c0360a2a5bf004d1d848b4 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sun, 5 Feb 2012 14:33:17 +0000 Subject: A bunch of panel beating: * HTMLElement and HTMLDocument now have vtables * All HTML nodes require an HTMLDocument to create * Miscellaneous other cleanups svn path=/trunk/libdom/; revision=13424 --- include/dom/html/html_document.h | 25 ++---------- include/dom/html/html_element.h | 88 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 21 deletions(-) (limited to 'include') diff --git a/include/dom/html/html_document.h b/include/dom/html/html_document.h index a6d0362..d09cd36 100644 --- a/include/dom/html/html_document.h +++ b/include/dom/html/html_document.h @@ -8,6 +8,7 @@ #ifndef dom_html_document_h_ #define dom_html_document_h_ +#include #include #include #include @@ -19,28 +20,10 @@ struct dom_nodelist; typedef struct dom_html_document dom_html_document; -/** - * Callbacks for UI related function calls - */ -struct dom_ui_handler { - dom_exception (*element_focus)(struct dom_element *element); - /* Callback for a focus DOM call */ - dom_exception (*element_select)(struct dom_element *element); - /* Callback for a select DOM call */ - dom_exception (*element_blur)(struct dom_element *element); - /* Callback for a blur DOM call */ - dom_exception (*element_enable)(struct dom_element *element, - bool enable); - /* Callback for enable/disable an element */ -}; -typedef struct dom_ui_handler dom_ui_handler; - -/* Create a HTMLDocument */ -dom_exception dom_html_document_create( - dom_events_default_action_fetcher daf, dom_ui_handler *ui, - dom_html_document **doc); +typedef struct dom_html_document_vtable { + struct dom_document_vtable base; +} dom_html_document_vtable; -/*-----------------------------------------------------------------------*/ /* The DOM spec public API */ dom_exception dom_html_document_get_title(dom_html_document *doc, diff --git a/include/dom/html/html_element.h b/include/dom/html/html_element.h index ea07c72..1c5f223 100644 --- a/include/dom/html/html_element.h +++ b/include/dom/html/html_element.h @@ -19,6 +19,22 @@ typedef struct dom_html_element_vtable { dom_string **id); dom_exception (*dom_html_element_set_id)(struct dom_html_element *element, dom_string *id); + dom_exception (*dom_html_element_get_title)(struct dom_html_element *element, + dom_string **title); + dom_exception (*dom_html_element_set_title)(struct dom_html_element *element, + dom_string *title); + dom_exception (*dom_html_element_get_lang)(struct dom_html_element *element, + dom_string **lang); + dom_exception (*dom_html_element_set_lang)(struct dom_html_element *element, + dom_string *lang); + dom_exception (*dom_html_element_get_dir)(struct dom_html_element *element, + dom_string **dir); + dom_exception (*dom_html_element_set_dir)(struct dom_html_element *element, + dom_string *dir); + dom_exception (*dom_html_element_get_classname)(struct dom_html_element *element, + dom_string **classname); + dom_exception (*dom_html_element_set_classname)(struct dom_html_element *element, + dom_string *classname); } dom_html_element_vtable; static inline dom_exception dom_html_element_get_id(struct dom_html_element *element, @@ -39,5 +55,77 @@ static inline dom_exception dom_html_element_set_id(struct dom_html_element *ele #define dom_html_element_set_id(e, id) dom_html_element_set_id( \ (dom_html_element *) (e), (dom_string *) (id)) +static inline dom_exception dom_html_element_get_title(struct dom_html_element *element, + dom_string **title) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_get_title(element, title); +} +#define dom_html_element_get_title(e, title) dom_html_element_get_title( \ + (dom_html_element *) (e), (dom_string **) (title)) + +static inline dom_exception dom_html_element_set_title(struct dom_html_element *element, + dom_string *title) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_set_title(element, title); +} +#define dom_html_element_set_title(e, title) dom_html_element_set_title( \ + (dom_html_element *) (e), (dom_string *) (title)) + +static inline dom_exception dom_html_element_get_lang(struct dom_html_element *element, + dom_string **lang) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_get_lang(element, lang); +} +#define dom_html_element_get_lang(e, lang) dom_html_element_get_lang( \ + (dom_html_element *) (e), (dom_string **) (lang)) + +static inline dom_exception dom_html_element_set_lang(struct dom_html_element *element, + dom_string *lang) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_set_lang(element, lang); +} +#define dom_html_element_set_lang(e, lang) dom_html_element_set_lang( \ + (dom_html_element *) (e), (dom_string *) (lang)) + +static inline dom_exception dom_html_element_get_dir(struct dom_html_element *element, + dom_string **dir) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_get_dir(element, dir); +} +#define dom_html_element_get_dir(e, dir) dom_html_element_get_dir( \ + (dom_html_element *) (e), (dom_string **) (dir)) + +static inline dom_exception dom_html_element_set_dir(struct dom_html_element *element, + dom_string *dir) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_set_dir(element, dir); +} +#define dom_html_element_set_dir(e, dir) dom_html_element_set_dir( \ + (dom_html_element *) (e), (dom_string *) (dir)) + +static inline dom_exception dom_html_element_get_classname(struct dom_html_element *element, + dom_string **classname) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_get_classname(element, classname); +} +#define dom_html_element_get_classname(e, classname) dom_html_element_get_classname( \ + (dom_html_element *) (e), (dom_string **) (classname)) + +static inline dom_exception dom_html_element_set_classname(struct dom_html_element *element, + dom_string *classname) +{ + return ((dom_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_element_set_classname(element, classname); +} +#define dom_html_element_set_classname(e, classname) dom_html_element_set_classname( \ + (dom_html_element *) (e), (dom_string *) (classname)) + #endif -- cgit v1.2.3