use std::ops::Range;
use crate::trace::AttrValueSyntax;
use crate::Error;
#[allow(unused_variables)] pub trait Emitter<O> {
fn report_error(&mut self, error: Error, span: Range<O>);
fn emit_char(&mut self, char: char, span: Range<O>);
fn emit_eof(&mut self, offset: O);
fn init_start_tag(&mut self, tag_offset: O, name_offset: O);
fn init_end_tag(&mut self, tag_offset: O, name_offset: O);
fn push_tag_name(&mut self, s: &str);
fn terminate_tag_name(&mut self, offset: O) {}
fn init_attribute_name(&mut self, offset: O);
fn push_attribute_name(&mut self, s: &str);
fn terminate_attribute_name(&mut self, offset: O) {}
fn init_attribute_value(&mut self, syntax: AttrValueSyntax, offset: O) {}
fn push_attribute_value(&mut self, s: &str);
fn terminate_attribute_value(&mut self, offset: O) {}
fn set_self_closing(&mut self, slash_span: Range<O>);
fn emit_current_tag(&mut self, offset: O);
fn init_comment(&mut self, data_start_offset: O);
fn push_comment(&mut self, s: &str);
fn emit_current_comment(&mut self, data_end_offset: O);
fn init_doctype(&mut self, offset: O);
fn init_doctype_name(&mut self, offset: O) {}
fn push_doctype_name(&mut self, s: &str);
fn terminate_doctype_name(&mut self, offset: O) {}
fn init_doctype_public_id(&mut self, offset: O);
fn push_doctype_public_id(&mut self, s: &str);
fn terminate_doctype_public_id(&mut self, offset: O) {}
fn init_doctype_system_id(&mut self, offset: O);
fn push_doctype_system_id(&mut self, s: &str);
fn terminate_doctype_system_id(&mut self, offset: O) {}
fn set_force_quirks(&mut self);
fn emit_current_doctype(&mut self, offset: O);
}