From df7d4e1467a2341a4b4186d848df1d1d0adf9b7c Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Wed, 28 Aug 2013 15:39:57 -0700 Subject: [PATCH] Update for language changes --- hubbub.rs | 9 +++++++++ ll.rs | 42 +++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/hubbub.rs b/hubbub.rs index fc6f642..b1a5650 100644 --- a/hubbub.rs +++ b/hubbub.rs @@ -88,11 +88,13 @@ pub struct Parser { } impl Drop for Parser { + #[fixed_stack_segment] fn drop(&self) { unsafe { ll::parser::hubbub_parser_destroy(self.hubbub_parser) }; } } +#[fixed_stack_segment] pub fn Parser(encoding: &str, fix_encoding: bool) -> Parser { let hubbub_parser = null(); let hubbub_error = do encoding.to_c_str().with_ref |encoding_c: *libc::c_char| { @@ -109,6 +111,7 @@ pub fn Parser(encoding: &str, fix_encoding: bool) -> Parser { } impl Parser { + #[fixed_stack_segment] pub fn set_tree_handler(&mut self, tree_handler: ~TreeHandler) { self.tree_handler = Some(TreeHandlerPair { tree_handler: tree_handler, @@ -147,6 +150,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn set_document_node(&self, node: NodeDataPtr) { unsafe { debug!("setting document node"); @@ -157,6 +161,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn enable_scripting(&self, enable: bool) { unsafe { debug!("enabling scripting"); @@ -167,6 +172,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn enable_styling(&self, enable: bool) { unsafe { debug!("enabling styling"); @@ -177,6 +183,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn parse_chunk(&self, data: &[u8]) { unsafe { debug!("parsing chunk"); @@ -187,6 +194,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn insert_chunk(&self, data: &[u8]) { unsafe { debug!("inserting chunk"); @@ -197,6 +205,7 @@ impl Parser { } } + #[fixed_stack_segment] pub fn completed(&self) { unsafe { debug!("completing"); diff --git a/ll.rs b/ll.rs index c8b100e..e25c8a5 100644 --- a/ll.rs +++ b/ll.rs @@ -7,7 +7,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::libc::{c_int, c_void, size_t}; +use std::libc::{c_int, c_void, size_t, c_char}; // errors.h @@ -76,7 +76,7 @@ pub mod parser { extern { pub fn hubbub_parser_create(enc: *u8, fix_enc: bool, - alloc: *u8, + alloc: extern "C" fn(*mut c_void, size_t, *c_void) -> *mut c_void, pw: *c_void, parser: **Parser) -> Error; @@ -93,25 +93,25 @@ pub mod parser { // tree.h pub struct TreeHandler { - create_comment: *u8, - create_doctype: *u8, - create_element: *u8, - create_text: *u8, - ref_node: *u8, - unref_node: *u8, - append_child: *u8, - insert_before: *u8, - remove_child: *u8, - clone_node: *u8, - reparent_children: *u8, - get_parent: *u8, - has_children: *u8, - form_associate: *u8, - add_attributes: *u8, - set_quirks_mode: *u8, - encoding_change: *u8, - complete_script: *u8, - complete_style: *u8, + create_comment: extern "C" fn(*c_void, *String, *mut *c_void) -> Error, + create_doctype: extern "C" fn(*c_void, *Doctype, *mut *c_void) -> Error, + create_element: extern "C" fn(*c_void, *Tag, *mut *c_void) -> Error, + create_text: extern "C" fn(*c_void, *String, *mut *c_void) -> Error, + ref_node: extern "C" fn(*c_void, *c_void) -> Error, + unref_node: extern "C" fn(*c_void, *c_void) -> Error, + append_child: extern "C" fn(*c_void, *c_void, *c_void, *mut *c_void) -> Error, + insert_before: extern "C" fn(*c_void, *c_void, *c_void, *mut *c_void) -> Error, + remove_child: extern "C" fn(*c_void, *c_void, *c_void, *mut *c_void) -> Error, + clone_node: extern "C" fn(*c_void, *c_void, bool, *mut *c_void) -> Error, + reparent_children: extern "C" fn(*c_void, *c_void, *c_void) -> Error, + get_parent: extern "C" fn(*c_void, *c_void, bool, *mut *c_void) -> Error, + has_children: extern "C" fn(*c_void, *c_void, *mut bool) -> Error, + form_associate: extern "C" fn(*c_void, *c_void, *c_void) -> Error, + add_attributes: extern "C" fn(*c_void, *c_void, *Attribute, u32) -> Error, + set_quirks_mode: extern "C" fn(*c_void, QuirksMode) -> Error, + encoding_change: extern "C" fn(*c_void, *c_char) -> Error, + complete_script: extern "C" fn(*c_void, *c_void) -> Error, + complete_style: extern "C" fn(*c_void, *c_void) -> Error, ctx: *c_void, }