summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-07-09 13:52:00 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-07-09 13:52:00 +0000
commite41fdee01fd65331df1de32dccd1f1048b29d891 (patch)
tree337c6b5205db5a4bc81bf58d2efb73e40b12ba00 /src
parentf72aa9cb97d9173df105392efcbeae295c331843 (diff)
downloadlibhubbub-e41fdee01fd65331df1de32dccd1f1048b29d891.tar.gz
libhubbub-e41fdee01fd65331df1de32dccd1f1048b29d891.tar.bz2
Big testing hack to print the various insertion modes the treebuilder goes through.
svn path=/trunk/hubbub/; revision=4539
Diffstat (limited to 'src')
-rw-r--r--src/treebuilder/treebuilder.c61
1 files changed, 38 insertions, 23 deletions
diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c
index 5344eeb..670c1db 100644
--- a/src/treebuilder/treebuilder.c
+++ b/src/treebuilder/treebuilder.c
@@ -8,6 +8,8 @@
#include <assert.h>
#include <string.h>
+#include <stdio.h>
+
#include "treebuilder/modes.h"
#include "treebuilder/internal.h"
#include "treebuilder/treebuilder.h"
@@ -303,75 +305,86 @@ void hubbub_treebuilder_token_handler(const hubbub_token *token,
treebuilder->tree_handler == NULL)
return;
+ assert((signed) treebuilder->context.current_node >= 0);
+
+#ifdef NDEBUG
+# define hack(x) \
+ case x:
+#else
+# define hack(x) \
+ case x: \
+ printf( #x "\n");
+#endif
+
while (reprocess) {
switch (treebuilder->context.mode) {
- case INITIAL:
+ hack(INITIAL)
reprocess = handle_initial(treebuilder, token);
break;
- case BEFORE_HTML:
+ hack(BEFORE_HTML)
reprocess = handle_before_html(treebuilder, token);
break;
- case BEFORE_HEAD:
+ hack(BEFORE_HEAD)
reprocess = handle_before_head(treebuilder, token);
break;
- case IN_HEAD:
+ hack(IN_HEAD)
reprocess = handle_in_head(treebuilder, token);
break;
- case IN_HEAD_NOSCRIPT:
+ hack(IN_HEAD_NOSCRIPT)
reprocess = handle_in_head_noscript(treebuilder, token);
break;
- case AFTER_HEAD:
+ hack(AFTER_HEAD)
reprocess = handle_after_head(treebuilder, token);
break;
- case IN_BODY:
+ hack(IN_BODY)
reprocess = handle_in_body(treebuilder, token);
break;
- case IN_TABLE:
+ hack(IN_TABLE)
reprocess = handle_in_table(treebuilder, token);
break;
- case IN_CAPTION:
+ hack(IN_CAPTION)
reprocess = handle_in_caption(treebuilder, token);
break;
- case IN_COLUMN_GROUP:
+ hack(IN_COLUMN_GROUP)
reprocess = handle_in_column_group(treebuilder, token);
break;
- case IN_TABLE_BODY:
+ hack(IN_TABLE_BODY)
reprocess = handle_in_table_body(treebuilder, token);
break;
- case IN_ROW:
+ hack(IN_ROW)
reprocess = handle_in_row(treebuilder, token);
break;
- case IN_CELL:
+ hack(IN_CELL)
reprocess = handle_in_cell(treebuilder, token);
break;
- case IN_SELECT:
+ hack(IN_SELECT)
reprocess = handle_in_select(treebuilder, token);
break;
- case IN_SELECT_IN_TABLE:
+ hack(IN_SELECT_IN_TABLE)
reprocess = handle_in_select_in_table(treebuilder, token);
break;
- case IN_FOREIGN_CONTENT:
+ hack(IN_FOREIGN_CONTENT)
reprocess = handle_in_foreign_content(treebuilder, token);
break;
- case AFTER_BODY:
+ hack(AFTER_BODY)
reprocess = handle_after_body(treebuilder, token);
break;
- case IN_FRAMESET:
+ hack(IN_FRAMESET)
reprocess = handle_in_frameset(treebuilder, token);
break;
- case AFTER_FRAMESET:
+ hack(AFTER_FRAMESET)
reprocess = handle_after_frameset(treebuilder, token);
break;
- case AFTER_AFTER_BODY:
+ hack(AFTER_AFTER_BODY)
reprocess = handle_after_after_body(treebuilder, token);
break;
- case AFTER_AFTER_FRAMESET:
+ hack(AFTER_AFTER_FRAMESET)
reprocess = handle_after_after_frameset(treebuilder, token);
break;
- case GENERIC_RCDATA:
+ hack(GENERIC_RCDATA)
reprocess = handle_generic_rcdata(treebuilder, token);
break;
- case SCRIPT_COLLECT_CHARACTERS:
+ hack(SCRIPT_COLLECT_CHARACTERS)
reprocess = handle_script_collect_characters(
treebuilder, token);
break;
@@ -543,6 +556,8 @@ uint32_t element_in_scope(hubbub_treebuilder *treebuilder,
if (treebuilder->context.element_stack == NULL)
return false;
+ assert((signed) treebuilder->context.current_node >= 0);
+
for (node = treebuilder->context.current_node; node > 0; node--) {
element_type node_type =
treebuilder->context.element_stack[node].type;