Hubbub
Data Structures | Macros | Typedefs | Enumerations | Functions
internal.h File Reference
#include "treebuilder/treebuilder.h"
#include <stdio.h>

Go to the source code of this file.

Data Structures

struct  element_context
 Item on the element stack. More...
 
struct  formatting_list_entry
 Entry in a formatting list. More...
 
struct  hubbub_treebuilder_context
 Context for a tree builder. More...
 
struct  hubbub_treebuilder
 Treebuilder object. More...
 

Macros

#define ELEMENT_STACK_CHUNK   128
 

Typedefs

typedef struct element_context element_context
 Item on the element stack. More...
 
typedef struct formatting_list_entry formatting_list_entry
 Entry in a formatting list. More...
 
typedef struct hubbub_treebuilder_context hubbub_treebuilder_context
 Context for a tree builder. More...
 

Enumerations

enum  element_type {
  ADDRESS, AREA, ARTICLE, ASIDE,
  BASE, BASEFONT, BGSOUND, BLOCKQUOTE,
  BODY, BR, CENTER, COL,
  COLGROUP, COMMAND, DATAGRID, DD,
  DETAILS, DIALOG, DIR, DIV,
  DL, DT, EMBED, FIELDSET,
  FIGURE, FOOTER, FORM, FRAME,
  FRAMESET, H1, H2, H3,
  H4, H5, H6, HEAD,
  HEADER, HR, IFRAME, IMAGE,
  IMG, INPUT, ISINDEX, LI,
  LINK, LISTING, MENU, META,
  NAV, NOEMBED, NOFRAMES, NOSCRIPT,
  OL, OPTGROUP, OPTION, P,
  PARAM, PLAINTEXT, PRE, SCRIPT,
  SECTION, SELECT, SPACER, STYLE,
  TBODY, TEXTAREA, TFOOT, THEAD,
  TITLE, TR, UL, WBR,
  APPLET, BUTTON, CAPTION, HTML,
  MARQUEE, OBJECT, TABLE, TD,
  TH, A, B, BIG,
  CODE, EM, FONT, I,
  NOBR, S, SMALL, STRIKE,
  STRONG, TT, U, LABEL,
  OUTPUT, RP, RT, RUBY,
  SPAN, SUB, SUP, VAR,
  XMP, MATH, MGLYPH, MALIGNMARK,
  MI, MO, MN, MS,
  MTEXT, ANNOTATION_XML, SVG, FOREIGNOBJECT,
  DESC, UNKNOWN
}
 

Functions

hubbub_error hubbub_treebuilder_token_handler (const hubbub_token *token, void *pw)
 Handle tokeniser emitting a token. More...
 
hubbub_error process_characters_expect_whitespace (hubbub_treebuilder *treebuilder, const hubbub_token *token, bool insert_into_current_node)
 Process a character token in cases where we expect only whitespace. More...
 
hubbub_error process_comment_append (hubbub_treebuilder *treebuilder, const hubbub_token *token, void *parent)
 Process a comment token, appending it to the given parent. More...
 
hubbub_error parse_generic_rcdata (hubbub_treebuilder *treebuilder, const hubbub_token *token, bool rcdata)
 Trigger parsing of generic (R)CDATA. More...
 
uint32_t element_in_scope (hubbub_treebuilder *treebuilder, element_type type, bool in_table)
 Determine if an element is in (table) scope. More...
 
hubbub_error reconstruct_active_formatting_list (hubbub_treebuilder *treebuilder)
 Reconstruct the list of active formatting elements. More...
 
void clear_active_formatting_list_to_marker (hubbub_treebuilder *treebuilder)
 Clear the list of active formatting elements up to the last marker. More...
 
hubbub_error remove_node_from_dom (hubbub_treebuilder *treebuilder, void *node)
 Remove a node from the DOM. More...
 
hubbub_error insert_element (hubbub_treebuilder *treebuilder, const hubbub_tag *tag_name, bool push)
 Create element and insert it into the DOM, potentially pushing it on the stack. More...
 
void close_implied_end_tags (hubbub_treebuilder *treebuilder, element_type except)
 Close implied end tags. More...
 
void reset_insertion_mode (hubbub_treebuilder *treebuilder)
 Reset the insertion mode. More...
 
hubbub_error append_text (hubbub_treebuilder *treebuilder, const hubbub_string *string)
 Append text to the current node, inserting into the last child of the current node, iff it's a Text node. More...
 
hubbub_error complete_script (hubbub_treebuilder *treebuilder)
 Script processing and execution. More...
 
element_type element_type_from_name (hubbub_treebuilder *treebuilder, const hubbub_string *tag_name)
 Convert an element name into an element type. More...
 
bool is_special_element (element_type type)
 Determine if a node is a special element. More...
 
bool is_scoping_element (element_type type)
 Determine if a node is a scoping element. More...
 
bool is_formatting_element (element_type type)
 Determine if a node is a formatting element. More...
 
bool is_phrasing_element (element_type type)
 Determine if a node is a phrasing element. More...
 
hubbub_error element_stack_push (hubbub_treebuilder *treebuilder, hubbub_ns ns, element_type type, void *node)
 Push an element onto the stack of open elements. More...
 
hubbub_error element_stack_pop (hubbub_treebuilder *treebuilder, hubbub_ns *ns, element_type *type, void **node)
 Pop an element off the stack of open elements. More...
 
hubbub_error element_stack_pop_until (hubbub_treebuilder *treebuilder, element_type type)
 Pop elements until an element of type "element" has been popped. More...
 
hubbub_error element_stack_remove (hubbub_treebuilder *treebuilder, uint32_t index, hubbub_ns *ns, element_type *type, void **removed)
 Remove a node from the stack of open elements. More...
 
uint32_t current_table (hubbub_treebuilder *treebuilder)
 Find the stack index of the current table. More...
 
element_type current_node (hubbub_treebuilder *treebuilder)
 Peek at the top element of the element stack. More...
 
element_type prev_node (hubbub_treebuilder *treebuilder)
 Peek at the element below the top of the element stack. More...
 
hubbub_error formatting_list_append (hubbub_treebuilder *treebuilder, hubbub_ns ns, element_type type, void *node, uint32_t stack_index)
 Append an element to the end of the list of active formatting elements. More...
 
hubbub_error formatting_list_insert (hubbub_treebuilder *treebuilder, formatting_list_entry *prev, formatting_list_entry *next, hubbub_ns ns, element_type type, void *node, uint32_t stack_index)
 Insert an element into the list of active formatting elements. More...
 
hubbub_error formatting_list_remove (hubbub_treebuilder *treebuilder, formatting_list_entry *entry, hubbub_ns *ns, element_type *type, void **node, uint32_t *stack_index)
 Remove an element from the list of active formatting elements. More...
 
hubbub_error formatting_list_replace (hubbub_treebuilder *treebuilder, formatting_list_entry *entry, hubbub_ns ns, element_type type, void *node, uint32_t stack_index, hubbub_ns *ons, element_type *otype, void **onode, uint32_t *ostack_index)
 Remove an element from the list of active formatting elements. More...
 
void adjust_mathml_attributes (hubbub_treebuilder *treebuilder, hubbub_tag *tag)
 Adjust MathML attributes. More...
 
void adjust_svg_attributes (hubbub_treebuilder *treebuilder, hubbub_tag *tag)
 Adjust SVG attributes. More...
 
void adjust_svg_tagname (hubbub_treebuilder *treebuilder, hubbub_tag *tag)
 Adjust SVG tagnmes. More...
 
void adjust_foreign_attributes (hubbub_treebuilder *treebuilder, hubbub_tag *tag)
 Adjust foreign attributes. More...
 
hubbub_error aa_insert_into_foster_parent (hubbub_treebuilder *treebuilder, void *node, void **inserted)
 Adoption agency: locate foster parent and insert node into it. More...
 
void element_stack_dump (hubbub_treebuilder *treebuilder, FILE *fp)
 Dump an element stack to the given file pointer. More...
 
void formatting_list_dump (hubbub_treebuilder *treebuilder, FILE *fp)
 Dump a formatting list to the given file pointer. More...
 
const char * element_type_to_name (element_type type)
 Convert an element type to a name. More...
 

Macro Definition Documentation

#define ELEMENT_STACK_CHUNK   128

Definition at line 78 of file internal.h.

Referenced by element_stack_push(), and hubbub_treebuilder_create().

Typedef Documentation

Item on the element stack.

Entry in a formatting list.

Context for a tree builder.

Enumeration Type Documentation

Enumerator
ADDRESS 
AREA 
ARTICLE 
ASIDE 
BASE 
BASEFONT 
BGSOUND 
BLOCKQUOTE 
BODY 
BR 
CENTER 
COL 
COLGROUP 
COMMAND 
DATAGRID 
DD 
DETAILS 
DIALOG 
DIR 
DIV 
DL 
DT 
EMBED 
FIELDSET 
FIGURE 
FOOTER 
FORM 
FRAME 
FRAMESET 
H1 
H2 
H3 
H4 
H5 
H6 
HEAD 
HEADER 
HR 
IFRAME 
IMAGE 
IMG 
INPUT 
ISINDEX 
LI 
LINK 
LISTING 
MENU 
META 
NAV 
NOEMBED 
NOFRAMES 
NOSCRIPT 
OL 
OPTGROUP 
OPTION 
PARAM 
PLAINTEXT 
PRE 
SCRIPT 
SECTION 
SELECT 
SPACER 
STYLE 
TBODY 
TEXTAREA 
TFOOT 
THEAD 
TITLE 
TR 
UL 
WBR 
APPLET 
BUTTON 
CAPTION 
HTML 
MARQUEE 
OBJECT 
TABLE 
TD 
TH 
BIG 
CODE 
EM 
FONT 
NOBR 
SMALL 
STRIKE 
STRONG 
TT 
LABEL 
Todo:
Enumerate phrasing elements
OUTPUT 
RP 
RT 
RUBY 
SPAN 
SUB 
SUP 
VAR 
XMP 
MATH 
MGLYPH 
MALIGNMARK 
MI 
MO 
MN 
MS 
MTEXT 
ANNOTATION_XML 
SVG 
FOREIGNOBJECT 
DESC 
UNKNOWN 

Definition at line 13 of file internal.h.

Function Documentation

hubbub_error aa_insert_into_foster_parent ( hubbub_treebuilder treebuilder,
void *  node,
void **  inserted 
)

Adoption agency: locate foster parent and insert node into it.

Parameters
treebuilderThe treebuilder instance
nodeThe node to insert
insertedPointer to location to receive inserted node
Returns
HUBBUB_OK on success, appropriate error otherwise

Definition at line 2222 of file in_body.c.

References hubbub_tree_handler::append_child, hubbub_treebuilder::context, hubbub_tree_handler::ctx, current_table(), hubbub_treebuilder_context::element_stack, hubbub_tree_handler::get_parent, HUBBUB_OK, hubbub_tree_handler::insert_before, element_context::node, hubbub_tree_handler::ref_node, remove_node_from_dom(), element_context::tainted, hubbub_treebuilder::tree_handler, and hubbub_tree_handler::unref_node.

Referenced by append_text(), insert_element(), process_0presentational_in_body(), process_comment_append(), and reconstruct_active_formatting_list().

void adjust_foreign_attributes ( hubbub_treebuilder treebuilder,
hubbub_tag tag 
)

Adjust foreign attributes.

Parameters
treebuilderTreebuilder instance
tagTag to adjust the attributes of

Definition at line 227 of file in_foreign_content.c.

References hubbub_tag::attributes, HUBBUB_NS_XLINK, HUBBUB_NS_XML, HUBBUB_NS_XMLNS, hubbub_string_match(), len, hubbub_string::len, hubbub_tag::n_attributes, name, hubbub_attribute::name, hubbub_attribute::ns, hubbub_string::ptr, S, SLEN, and UNUSED.

Referenced by handle_in_foreign_content(), and process_start_tag().

void adjust_mathml_attributes ( hubbub_treebuilder treebuilder,
hubbub_tag tag 
)

Adjust MathML attributes.

Parameters
treebuilderTreebuilder instance
tagTag to adjust the attributes of

Definition at line 144 of file in_foreign_content.c.

References hubbub_tag::attributes, hubbub_string_match(), len, hubbub_string::len, hubbub_tag::n_attributes, name, hubbub_attribute::name, hubbub_string::ptr, SLEN, and UNUSED.

Referenced by process_start_tag().

void adjust_svg_attributes ( hubbub_treebuilder treebuilder,
hubbub_tag tag 
)

Adjust SVG attributes.

Parameters
treebuilderTreebuilder instance
tagTag to adjust the attributes of

Definition at line 169 of file in_foreign_content.c.

References hubbub_tag::attributes, hubbub_string_match(), len, hubbub_string::len, hubbub_tag::n_attributes, N_ELEMENTS, name, hubbub_attribute::name, hubbub_string::ptr, and UNUSED.

Referenced by handle_in_foreign_content(), and process_start_tag().

void adjust_svg_tagname ( hubbub_treebuilder treebuilder,
hubbub_tag tag 
)

Adjust SVG tagnmes.

Parameters
treebuilderTreebuilder instance
tagTag to adjust the name of

Definition at line 199 of file in_foreign_content.c.

References hubbub_string_match(), len, hubbub_string::len, N_ELEMENTS, name, hubbub_tag::name, hubbub_string::ptr, and UNUSED.

Referenced by handle_in_foreign_content().

hubbub_error append_text ( hubbub_treebuilder treebuilder,
const hubbub_string string 
)
void clear_active_formatting_list_to_marker ( hubbub_treebuilder treebuilder)
void close_implied_end_tags ( hubbub_treebuilder treebuilder,
element_type  except 
)
hubbub_error complete_script ( hubbub_treebuilder treebuilder)

Script processing and execution.

Parameters
treebuilderThe treebuilder instance
Returns
HUBBUB_OK on success, appropriate error otherwise

Definition at line 926 of file treebuilder.c.

References hubbub_tree_handler::complete_script, hubbub_treebuilder::context, hubbub_tree_handler::ctx, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, HUBBUB_OK, element_context::node, and hubbub_treebuilder::tree_handler.

Referenced by handle_generic_rcdata().

element_type current_node ( hubbub_treebuilder treebuilder)
uint32_t current_table ( hubbub_treebuilder treebuilder)
uint32_t element_in_scope ( hubbub_treebuilder treebuilder,
element_type  type,
bool  in_table 
)
void element_stack_dump ( hubbub_treebuilder treebuilder,
FILE *  fp 
)

Dump an element stack to the given file pointer.

Parameters
treebuilderThe treebuilder instance
fpThe file to dump to

Definition at line 1456 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, element_type_to_name(), and type.

Referenced by handle_in_body().

hubbub_error element_stack_pop ( hubbub_treebuilder treebuilder,
hubbub_ns ns,
element_type type,
void **  node 
)

Pop an element off the stack of open elements.

Parameters
treebuilderThe treebuilder instance containing the stack
nsPointer to location to receive element namespace
typePointer to location to receive element type
nodePointer to location to receive node
Returns
HUBBUB_OK on success, appropriate error otherwise.
Todo:
Can we optimise this? (i.e. by not traversing the entire list)
Todo:
reduce allocated stack size once there's enough free

Definition at line 1113 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, hubbub_treebuilder_context::formatting_list_end, HTML, HUBBUB_OK, is_formatting_element(), is_scoping_element(), element_context::node, element_context::ns, formatting_list_entry::prev, formatting_list_entry::stack_index, TABLE, and element_context::type.

Referenced by aa_find_furthest_block(), act_as_if_end_tag_tr(), clear_stack_table_context(), close_cell(), close_implied_end_tags(), element_stack_pop_until(), foreign_break_out(), handle_generic_rcdata(), handle_in_caption(), handle_in_cell(), handle_in_column_group(), handle_in_frameset(), handle_in_head(), handle_in_head_noscript(), handle_in_row(), handle_in_select(), handle_in_table_body(), process_0applet_button_marquee_object_in_body(), process_0container_in_body(), process_0dd_dt_li_in_body(), process_0generic_in_body(), process_0h_in_body(), process_0p_in_body(), process_a_in_body(), process_applet_marquee_object_in_body(), process_button_in_body(), process_dd_dt_li_in_body(), process_hN_in_body(), process_nobr_in_body(), process_presentational_in_body(), reconstruct_active_formatting_list(), table_clear_stack(), and table_sub_start_or_table_end().

hubbub_error element_stack_pop_until ( hubbub_treebuilder treebuilder,
element_type  type 
)

Pop elements until an element of type "element" has been popped.

Returns
HUBBUB_OK on success, appropriate error otherwise.

Definition at line 1162 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_tree_handler::ctx, hubbub_treebuilder_context::current_node, element_stack_pop(), HUBBUB_OK, hubbub_treebuilder::tree_handler, UNKNOWN, and hubbub_tree_handler::unref_node.

Referenced by handle_in_select(), handle_in_select_in_table(), handle_in_table(), and process_frameset_in_body().

hubbub_error element_stack_push ( hubbub_treebuilder treebuilder,
hubbub_ns  ns,
element_type  type,
void *  node 
)

Push an element onto the stack of open elements.

Parameters
treebuilderThe treebuilder instance containing the stack
nsThe namespace of element being pushed
typeThe type of element being pushed
nodeThe node to push
Returns
HUBBUB_OK on success, appropriate error otherwise.

Definition at line 1076 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, ELEMENT_STACK_CHUNK, HUBBUB_NOMEM, HUBBUB_OK, element_context::node, element_context::ns, hubbub_treebuilder_context::stack_alloc, type, and element_context::type.

Referenced by handle_after_head(), insert_element(), and reconstruct_active_formatting_list().

hubbub_error element_stack_remove ( hubbub_treebuilder treebuilder,
uint32_t  index,
hubbub_ns ns,
element_type type,
void **  removed 
)

Remove a node from the stack of open elements.

Parameters
treebuilderThe treebuilder instance
indexThe index of the node to remove
nsPointer to location to receive namespace
typePointer to location to receive type
removedPointer to location to receive removed node
Returns
HUBBUB_OK on success, appropriate error otherwise.

Definition at line 1191 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, hubbub_treebuilder_context::formatting_list_end, HTML, HUBBUB_OK, is_formatting_element(), is_scoping_element(), element_context::node, element_context::ns, formatting_list_entry::prev, formatting_list_entry::stack_index, TABLE, and element_context::type.

Referenced by handle_after_head(), process_0form_in_body(), and process_a_in_body().

element_type element_type_from_name ( hubbub_treebuilder treebuilder,
const hubbub_string tag_name 
)
const char* element_type_to_name ( element_type  type)

Convert an element type to a name.

Parameters
typeThe element type
Returns
Pointer to name

Definition at line 1493 of file treebuilder.c.

References name_type_map.

Referenced by element_stack_dump(), and formatting_list_dump().

hubbub_error formatting_list_append ( hubbub_treebuilder treebuilder,
hubbub_ns  ns,
element_type  type,
void *  node,
uint32_t  stack_index 
)

Append an element to the end of the list of active formatting elements.

Parameters
treebuilderTreebuilder instance containing list
nsNamespace of node being inserted
typeType of node being inserted
nodeNode being inserted
stack_indexIndex into stack of open elements
Returns
HUBBUB_OK on success, appropriate error otherwise

Definition at line 1292 of file treebuilder.c.

References hubbub_treebuilder::context, formatting_list_entry::details, hubbub_treebuilder_context::formatting_list, hubbub_treebuilder_context::formatting_list_end, HUBBUB_NOMEM, HUBBUB_OK, formatting_list_entry::next, element_context::node, element_context::ns, formatting_list_entry::prev, formatting_list_entry::stack_index, type, and element_context::type.

Referenced by handle_in_row(), handle_in_table(), process_a_in_body(), process_applet_marquee_object_in_body(), process_button_in_body(), process_nobr_in_body(), and process_presentational_in_body().

void formatting_list_dump ( hubbub_treebuilder treebuilder,
FILE *  fp 
)

Dump a formatting list to the given file pointer.

Parameters
treebuilderThe treebuilder instance
fpThe file to dump to

Definition at line 1475 of file treebuilder.c.

References hubbub_treebuilder::context, formatting_list_entry::details, element_type_to_name(), hubbub_treebuilder_context::formatting_list, formatting_list_entry::next, element_context::node, formatting_list_entry::stack_index, and element_context::type.

Referenced by handle_in_body().

hubbub_error formatting_list_insert ( hubbub_treebuilder treebuilder,
formatting_list_entry prev,
formatting_list_entry next,
hubbub_ns  ns,
element_type  type,
void *  node,
uint32_t  stack_index 
)

Insert an element into the list of active formatting elements.

Parameters
treebuilderTreebuilder instance containing list
prevPrevious entry
nextNext entry
nsNamespace of node being inserted
typeType of node being inserted
nodeNode being inserted
stack_indexIndex into stack of open elements
Returns
HUBBUB_OK on success, appropriate error otherwise

Definition at line 1332 of file treebuilder.c.

References hubbub_treebuilder::context, formatting_list_entry::details, hubbub_treebuilder_context::formatting_list, hubbub_treebuilder_context::formatting_list_end, HUBBUB_NOMEM, HUBBUB_OK, formatting_list_entry::next, element_context::node, element_context::ns, formatting_list_entry::prev, formatting_list_entry::stack_index, type, and element_context::type.

Referenced by process_0presentational_in_body().

hubbub_error formatting_list_remove ( hubbub_treebuilder treebuilder,
formatting_list_entry entry,
hubbub_ns ns,
element_type type,
void **  node,
uint32_t *  stack_index 
)

Remove an element from the list of active formatting elements.

Parameters
treebuilderTreebuilder instance containing list
entryThe item to remove
nsPointer to location to receive namespace of node
typePointer to location to receive type of node
nodePointer to location to receive node
stack_indexPointer to location to receive stack index
Returns
HUBBUB_OK on success, appropriate error otherwise.

Definition at line 1384 of file treebuilder.c.

References hubbub_treebuilder::context, formatting_list_entry::details, hubbub_treebuilder_context::formatting_list, hubbub_treebuilder_context::formatting_list_end, HUBBUB_OK, formatting_list_entry::next, element_context::node, element_context::ns, formatting_list_entry::prev, formatting_list_entry::stack_index, and element_context::type.

Referenced by aa_find_and_validate_formatting_element(), aa_find_furthest_block(), clear_active_formatting_list_to_marker(), handle_in_table(), process_0presentational_in_body(), and process_a_in_body().

hubbub_error formatting_list_replace ( hubbub_treebuilder treebuilder,
formatting_list_entry entry,
hubbub_ns  ns,
element_type  type,
void *  node,
uint32_t  stack_index,
hubbub_ns ons,
element_type otype,
void **  onode,
uint32_t *  ostack_index 
)

Remove an element from the list of active formatting elements.

Parameters
treebuilderTreebuilder instance containing list
entryThe item to replace
nsReplacement node namespace
typeReplacement node type
nodeReplacement node
stack_indexReplacement stack index
onsPointer to location to receive old namespace
otypePointer to location to receive old type
onodePointer to location to receive old node
ostack_indexPointer to location to receive old stack index
Returns
HUBBUB_OK on success, appropriate error otherwise

Definition at line 1424 of file treebuilder.c.

References formatting_list_entry::details, HUBBUB_OK, element_context::node, element_context::ns, formatting_list_entry::stack_index, type, element_context::type, and UNUSED.

Referenced by aa_clone_and_replace_entries(), and reconstruct_active_formatting_list().

hubbub_error hubbub_treebuilder_token_handler ( const hubbub_token token,
void *  pw 
)
hubbub_error insert_element ( hubbub_treebuilder treebuilder,
const hubbub_tag tag,
bool  push 
)

Create element and insert it into the DOM, potentially pushing it on the stack.

Parameters
treebuilderThe treebuilder instance
tagThe element to insert
pushWhether to push the element onto the stack
Returns
HUBBUB_OK on success, appropriate error otherwise.

Definition at line 752 of file treebuilder.c.

References aa_insert_into_foster_parent(), hubbub_tree_handler::append_child, hubbub_treebuilder::context, hubbub_tree_handler::create_element, hubbub_tree_handler::ctx, hubbub_treebuilder_context::current_node, current_node(), hubbub_treebuilder_context::element_stack, element_stack_push(), element_type_from_name(), hubbub_tree_handler::form_associate, hubbub_treebuilder_context::form_element, HUBBUB_OK, hubbub_treebuilder_context::in_table_foster, is_form_associated(), hubbub_tag::name, element_context::node, hubbub_tag::ns, remove_node_from_dom(), TABLE, TBODY, TFOOT, THEAD, TR, hubbub_treebuilder::tree_handler, type, and hubbub_tree_handler::unref_node.

Referenced by handle_after_head(), handle_before_head(), handle_in_column_group(), handle_in_foreign_content(), handle_in_frameset(), handle_in_head(), handle_in_row(), handle_in_select(), handle_in_table(), handle_in_table_body(), parse_generic_rcdata(), process_0br_in_body(), process_a_in_body(), process_applet_marquee_object_in_body(), process_button_in_body(), process_container_in_body(), process_dd_dt_li_in_body(), process_form_in_body(), process_frameset_in_body(), process_hN_in_body(), process_hr_in_body(), process_image_in_body(), process_input_in_table(), process_isindex_in_body(), process_meta_in_head(), process_nobr_in_body(), process_opt_in_body(), process_phrasing_in_body(), process_plaintext_in_body(), process_presentational_in_body(), process_select_in_body(), and process_start_tag().

bool is_formatting_element ( element_type  type)

Determine if a node is a formatting element.

Parameters
typeNode type to consider
Returns
True iff node is a formatting element

Definition at line 1038 of file treebuilder.c.

References A, and U.

Referenced by aa_find_furthest_block(), aa_remove_element_stack_item(), element_stack_pop(), element_stack_remove(), process_0generic_in_body(), and process_dd_dt_li_in_body().

bool is_phrasing_element ( element_type  type)

Determine if a node is a phrasing element.

Parameters
typeNode type to consider
Returns
True iff node is a phrasing element

Definition at line 1049 of file treebuilder.c.

References U.

Referenced by aa_find_furthest_block(), process_0generic_in_body(), and process_dd_dt_li_in_body().

bool is_scoping_element ( element_type  type)

Determine if a node is a scoping element.

Parameters
typeNode type to consider
Returns
True iff node is a scoping element

Definition at line 1027 of file treebuilder.c.

References APPLET, and TH.

Referenced by aa_find_formatting_element(), aa_remove_element_stack_item(), clear_active_formatting_list_to_marker(), element_in_scope(), element_in_scope_in_non_html_ns(), element_stack_pop(), element_stack_remove(), and reconstruct_active_formatting_list().

bool is_special_element ( element_type  type)

Determine if a node is a special element.

Parameters
typeNode type to consider
Returns
True iff node is a special element

Definition at line 1016 of file treebuilder.c.

References WBR.

hubbub_error parse_generic_rcdata ( hubbub_treebuilder treebuilder,
const hubbub_token token,
bool  rcdata 
)
element_type prev_node ( hubbub_treebuilder treebuilder)

Peek at the element below the top of the element stack.

Parameters
treebuilderTreebuilder instance
Returns
Element type of the element one below the top of the stack

Definition at line 1271 of file treebuilder.c.

References hubbub_treebuilder::context, hubbub_treebuilder_context::current_node, hubbub_treebuilder_context::element_stack, element_context::type, and UNKNOWN.

Referenced by handle_in_select(), and reconstruct_active_formatting_list().

hubbub_error process_characters_expect_whitespace ( hubbub_treebuilder treebuilder,
const hubbub_token token,
bool  insert_into_current_node 
)

Process a character token in cases where we expect only whitespace.

Parameters
treebuilderThe treebuilder instance
tokenThe character token
insert_into_current_nodeWhether to insert whitespace into current node
Returns
HUBBUB_REPROCESS if the token needs reprocessing (token data updated to skip any leading whitespace), HUBBUB_OK if it contained only whitespace, appropriate error otherwise

Definition at line 375 of file treebuilder.c.

References append_text(), hubbub_token::character, hubbub_token::data, HUBBUB_OK, HUBBUB_REPROCESS, len, hubbub_string::len, and hubbub_string::ptr.

Referenced by handle_after_after_body(), handle_after_after_frameset(), handle_after_frameset(), handle_after_head(), handle_before_head(), handle_before_html(), handle_in_column_group(), handle_in_frameset(), handle_in_head(), handle_in_head_noscript(), handle_in_table(), and handle_initial().

hubbub_error process_comment_append ( hubbub_treebuilder treebuilder,
const hubbub_token token,
void *  parent 
)
hubbub_error reconstruct_active_formatting_list ( hubbub_treebuilder treebuilder)
hubbub_error remove_node_from_dom ( hubbub_treebuilder treebuilder,
void *  node 
)
void reset_insertion_mode ( hubbub_treebuilder treebuilder)