summaryrefslogtreecommitdiff
path: root/include/dom/core
diff options
context:
space:
mode:
authorBo Yang <struggleyb.nku@gmail.com>2009-03-24 12:39:26 +0000
committerBo Yang <struggleyb.nku@gmail.com>2009-03-24 12:39:26 +0000
commitb374d40854a23f2177b6e36afdd2eea18cb5e535 (patch)
tree4df972e9d118386702261a6678a84f8dac711a24 /include/dom/core
parent6084a7057f746bfa953342270865f434bf98fef8 (diff)
downloadlibdom-b374d40854a23f2177b6e36afdd2eea18cb5e535.tar.gz
libdom-b374d40854a23f2177b6e36afdd2eea18cb5e535.tar.bz2
Convert Text to use vtable structure. Now the whole libdom is compiled successfully again.
svn path=/trunk/dom/; revision=6833
Diffstat (limited to 'include/dom/core')
-rw-r--r--include/dom/core/text.h64
1 files changed, 54 insertions, 10 deletions
diff --git a/include/dom/core/text.h b/include/dom/core/text.h
index 6f1f4d1..5e38d13 100644
--- a/include/dom/core/text.h
+++ b/include/dom/core/text.h
@@ -11,18 +11,62 @@
#include <stdbool.h>
#include <dom/core/exceptions.h>
+#include <dom/core/characterdata.h>
struct dom_characterdata;
struct dom_string;
-struct dom_text;
-
-dom_exception dom_text_split_text(struct dom_text *text,
- unsigned long offset, struct dom_text **result);
-dom_exception dom_text_get_is_element_content_whitespace(
- struct dom_text *text, bool *result);
-dom_exception dom_text_get_whole_text(struct dom_text *text,
- struct dom_string **result);
-dom_exception dom_text_replace_whole_text(struct dom_text *text,
- struct dom_string *content, struct dom_text **result);
+
+typedef struct dom_text dom_text;
+
+typedef struct dom_text_vtable {
+ struct dom_characterdata_vtable base;
+
+ dom_exception (*dom_text_split_text)(struct dom_text *text,
+ unsigned long offset, struct dom_text **result);
+ dom_exception (*dom_text_get_is_element_content_whitespace)(
+ struct dom_text *text, bool *result);
+ dom_exception (*dom_text_get_whole_text)(struct dom_text *text,
+ struct dom_string **result);
+ dom_exception (*dom_text_replace_whole_text)(struct dom_text *text,
+ struct dom_string *content, struct dom_text **result);
+} dom_text_vtable;
+
+static inline dom_exception dom_text_split_text(struct dom_text *text,
+ unsigned long offset, struct dom_text **result)
+{
+ return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
+ dom_text_split_text(text, offset, result);
+}
+#define dom_text_split_text(t, o, r) dom_text_split_text((dom_text *) (t), \
+ (unsigned long) (o), (dom_text **) (r))
+
+static inline dom_exception dom_text_get_is_element_content_whitespace(
+ struct dom_text *text, bool *result)
+{
+ return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
+ dom_text_get_is_element_content_whitespace(text,
+ result);
+}
+#define dom_text_get_is_element_content_whitespace(t, r) \
+ dom_text_get_is_element_content_whitespace((dom_text *) (t), \
+ (bool *) (r))
+
+static inline dom_exception dom_text_get_whole_text(struct dom_text *text,
+ struct dom_string **result)
+{
+ return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
+ dom_text_get_whole_text(text, result);
+}
+#define dom_text_get_whole_text(t, r) dom_text_get_whole_text((dom_text *) (t),\
+ (struct dom_string **) (r))
+
+static inline dom_exception dom_text_replace_whole_text(struct dom_text *text,
+ struct dom_string *content, struct dom_text **result)
+{
+ return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
+ dom_text_replace_whole_text(text, content, result);
+}
+#define dom_text_replace_whole_text(t, c, r) dom_text_replace_whole_text( \
+ (dom_text *) (t), (struct dom_string *) (c), (dom_text **) (r))
#endif