Hubbub
Macros | Functions | Variables
treebuilder.c File Reference
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include "treebuilder/modes.h"
#include "treebuilder/internal.h"
#include "treebuilder/treebuilder.h"
#include "utils/utils.h"

Go to the source code of this file.

Macros

#define S(x)   x, SLEN(x)
 
#define mode(x)
 

Functions

static bool is_form_associated (element_type type)
 Determine if a node is form associated. More...
 
hubbub_error hubbub_treebuilder_create (hubbub_tokeniser *tokeniser, hubbub_treebuilder **treebuilder)
 Create a hubbub treebuilder. More...
 
hubbub_error hubbub_treebuilder_destroy (hubbub_treebuilder *treebuilder)
 Destroy a hubbub treebuilder. More...
 
hubbub_error hubbub_treebuilder_setopt (hubbub_treebuilder *treebuilder, hubbub_treebuilder_opttype type, hubbub_treebuilder_optparams *params)
 Configure a hubbub treebuilder. More...
 
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...
 
hubbub_error remove_node_from_dom (hubbub_treebuilder *treebuilder, void *node)
 Remove a node from the DOM. 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 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. 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 complete_script (hubbub_treebuilder *treebuilder)
 Script processing and execution. 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...
 
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 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...
 

Variables

struct {
   const char *   name
 
   size_t   len
 
   element_type   type
 
name_type_map []
 

Macro Definition Documentation

◆ mode

#define mode (   x)
Value:
case x: \
printf( #x "\n");

Referenced by hubbub_treebuilder_token_handler().

◆ S

#define S (   x)    x, SLEN(x)

Definition at line 20 of file treebuilder.c.

Function Documentation

◆ append_text()

hubbub_error append_text ( hubbub_treebuilder treebuilder,
const hubbub_string string 
)

◆ clear_active_formatting_list_to_marker()

void clear_active_formatting_list_to_marker ( hubbub_treebuilder treebuilder)

◆ close_implied_end_tags()

void close_implied_end_tags ( hubbub_treebuilder treebuilder,
element_type  except 
)

◆ complete_script()

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 925 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().

◆ current_node()

element_type current_node ( hubbub_treebuilder treebuilder)

◆ current_table()

uint32_t current_table ( hubbub_treebuilder treebuilder)

◆ element_in_scope()

uint32_t element_in_scope ( hubbub_treebuilder treebuilder,
element_type  type,
bool  in_table 
)

◆ element_stack_dump()

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 1455 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().

◆ element_stack_pop()

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 1112 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, type, 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().

◆ element_stack_pop_until()

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 1161 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, type, 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().

◆ element_stack_push()

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 1075 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().

◆ element_stack_remove()

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 1190 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, type, and element_context::type.

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

◆ element_type_from_name()

element_type element_type_from_name ( hubbub_treebuilder treebuilder,
const hubbub_string tag_name 
)

◆ element_type_to_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 1492 of file treebuilder.c.

References name_type_map, and type.

Referenced by element_stack_dump(), and formatting_list_dump().

◆ formatting_list_append()

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 1291 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().

◆ formatting_list_dump()

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 1474 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().

◆ formatting_list_insert()

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 1331 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().

◆ formatting_list_remove()

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 1383 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, type, 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().

◆ formatting_list_replace()

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 1423 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_treebuilder_create()

hubbub_error hubbub_treebuilder_create ( hubbub_tokeniser tokeniser,
hubbub_treebuilder **  treebuilder 
)

◆ hubbub_treebuilder_destroy()

hubbub_error hubbub_treebuilder_destroy ( hubbub_treebuilder treebuilder)

◆ hubbub_treebuilder_setopt()

hubbub_error hubbub_treebuilder_setopt ( hubbub_treebuilder treebuilder,
hubbub_treebuilder_opttype  type,
hubbub_treebuilder_optparams params 
)

◆ hubbub_treebuilder_token_handler()

hubbub_error hubbub_treebuilder_token_handler ( const hubbub_token token,
void *  pw 
)

◆ insert_element()

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 751 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().

◆ is_form_associated()

bool is_form_associated ( element_type  type)
static

Determine if a node is form associated.

Parameters
typeNode type to consider
Returns
True iff node is form associated

Definition at line 1059 of file treebuilder.c.

References BUTTON, FIELDSET, INPUT, LABEL, OUTPUT, SELECT, TEXTAREA, and type.

Referenced by insert_element().

◆ is_formatting_element()

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 1037 of file treebuilder.c.

References A, type, 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().

◆ is_phrasing_element()

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 1048 of file treebuilder.c.

References type, and U.

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

◆ is_scoping_element()

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 1026 of file treebuilder.c.

References APPLET, TH, and type.

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().

◆ is_special_element()

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 1015 of file treebuilder.c.

References type, and WBR.

◆ parse_generic_rcdata()

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

◆ prev_node()

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 1270 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().

◆ process_characters_expect_whitespace()

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 374 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().

◆ process_comment_append()

hubbub_error process_comment_append ( hubbub_treebuilder treebuilder,
const hubbub_token token,
void *  parent 
)

◆ reconstruct_active_formatting_list()

hubbub_error reconstruct_active_formatting_list ( hubbub_treebuilder treebuilder)

◆ remove_node_from_dom()

hubbub_error remove_node_from_dom ( hubbub_treebuilder treebuilder,
void *  node 
)

◆ reset_insertion_mode()

void reset_insertion_mode ( hubbub_treebuilder treebuilder)

Variable Documentation

◆ len

size_t len

Definition at line 24 of file treebuilder.c.

Referenced by element_type_from_name(), and process_characters_expect_whitespace().

◆ name

const char* name

Definition at line 23 of file treebuilder.c.

Referenced by element_type_from_name().

◆ name_type_map

const { ... } name_type_map[]

◆ type

Definition at line 25 of file treebuilder.c.

Referenced by aa_find_and_validate_formatting_element(), aa_find_formatting_element(), aa_find_furthest_block(), aa_remove_element_stack_item(), append_text(), clear_active_formatting_list_to_marker(), clear_stack_table_context(), close_cell(), close_implied_end_tags(), current_table(), element_in_scope(), element_stack_dump(), element_stack_pop(), element_stack_pop_until(), element_stack_push(), element_stack_remove(), element_type_from_name(), element_type_to_name(), foreign_break_out(), formatting_list_append(), formatting_list_insert(), formatting_list_remove(), formatting_list_replace(), handle_after_after_body(), handle_after_after_frameset(), handle_after_body(), handle_after_frameset(), handle_after_head(), handle_before_head(), handle_before_html(), handle_generic_rcdata(), handle_in_body(), handle_in_caption(), handle_in_cell(), handle_in_column_group(), handle_in_foreign_content(), handle_in_frameset(), handle_in_head(), handle_in_head_noscript(), handle_in_row(), handle_in_select(), handle_in_select_in_table(), handle_in_table(), handle_in_table_body(), hubbub_parser_setopt(), hubbub_tokeniser_setopt(), hubbub_treebuilder_setopt(), insert_element(), is_form_associated(), is_formatting_element(), is_phrasing_element(), is_scoping_element(), is_special_element(), parse_generic_rcdata(), 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_0presentational_in_body(), process_a_in_body(), process_applet_marquee_object_in_body(), process_button_in_body(), process_comment_append(), process_dd_dt_li_in_body(), process_end_tag(), process_hN_in_body(), process_nobr_in_body(), process_presentational_in_body(), process_start_tag(), reconstruct_active_formatting_list(), reset_insertion_mode(), and table_clear_stack().