diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-05 14:33:17 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-05 14:33:17 +0000 |
commit | ca2566cbd69530e91f80b763beef011481d6cf94 (patch) | |
tree | 8b666110763d6da3297d19a020b9eb5279caf051 /include | |
parent | a67801b6a08dec19e015dd8a68b583ad2b807e0f (diff) | |
download | libdom-ca2566cbd69530e91f80b763beef011481d6cf94.tar.gz libdom-ca2566cbd69530e91f80b763beef011481d6cf94.tar.bz2 |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/dom/html/html_document.h | 25 | ||||
-rw-r--r-- | include/dom/html/html_element.h | 88 |
2 files changed, 92 insertions, 21 deletions
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 <dom/core/document.h> #include <dom/core/exceptions.h> #include <dom/functypes.h> #include <dom/events/document_event.h> @@ -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 |