Fix upstream build breaks from reinterpret_cast

This commit is contained in:
Brian J. Burg 2012-09-05 12:10:26 -07:00
parent 4ef4c36fa7
commit 1b54eacbe1
23 changed files with 98 additions and 99 deletions

View file

@ -34,7 +34,7 @@ import js::rust::compartment;
import resource::resource_task; import resource::resource_task;
import resource_task::{ResourceTask}; import resource_task::{ResourceTask};
import std::net::url::url; import std::net::url::Url;
import url_to_str = std::net::url::to_str; import url_to_str = std::net::url::to_str;
import util::url::make_url; import util::url::make_url;
import task::{task, SingleThreaded}; import task::{task, SingleThreaded};
@ -46,8 +46,8 @@ import js::jsapi::bindgen::JS_CallFunctionValue;
import ptr::null; import ptr::null;
enum ControlMsg { enum ControlMsg {
ParseMsg(url), ParseMsg(Url),
ExecuteMsg(url), ExecuteMsg(Url),
Timer(~dom::bindings::window::TimerData), Timer(~dom::bindings::window::TimerData),
ExitMsg ExitMsg
} }
@ -89,7 +89,7 @@ struct Content<C:Compositor> {
let mut document: Option<@Document>; let mut document: Option<@Document>;
let mut window: Option<@Window>; let mut window: Option<@Window>;
let mut doc_url: Option<url>; let mut doc_url: Option<Url>;
let resource_task: ResourceTask; let resource_task: ResourceTask;
@ -221,7 +221,7 @@ struct Content<C:Compositor> {
} }
} }
fn relayout(document: Document, doc_url: &url) { fn relayout(document: Document, doc_url: &Url) {
#debug("content: performing relayout"); #debug("content: performing relayout");
// Now, join the layout so that they will see the latest // Now, join the layout so that they will see the latest

View file

@ -61,7 +61,7 @@ enum Element = int;
extern fn getDocumentElement(cx: *JSContext, _argc: c_uint, vp: *mut jsval) extern fn getDocumentElement(cx: *JSContext, _argc: c_uint, vp: *mut jsval)
-> JSBool unsafe { -> JSBool unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -76,14 +76,14 @@ extern fn getDocumentElement(cx: *JSContext, _argc: c_uint, vp: *mut jsval)
unsafe fn unwrap(obj: *JSObject) -> *rust_box<Document> { unsafe fn unwrap(obj: *JSObject) -> *rust_box<Document> {
//TODO: some kind of check if this is a Document object //TODO: some kind of check if this is a Document object
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)) unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val))
} }
extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) {
#debug("document finalize!"); #debug("document finalize!");
unsafe { unsafe {
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
let _doc: @Document = unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)); let _doc: @Document = unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val));
} }
} }
@ -108,7 +108,7 @@ fn init(compartment: bare_compartment, doc: @Document) {
compartment.global_obj.ptr)); compartment.global_obj.ptr));
unsafe { unsafe {
let raw_ptr: *libc::c_void = unsafe::reinterpret_cast(squirrel_away(doc)); let raw_ptr: *libc::c_void = unsafe::reinterpret_cast(&squirrel_away(doc));
JS_SetReservedSlot(instance.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr)); JS_SetReservedSlot(instance.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr));
} }

View file

@ -23,7 +23,7 @@ extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) {
#debug("element finalize!"); #debug("element finalize!");
unsafe { unsafe {
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
let _node: ~NodeBundle = unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)); let _node: ~NodeBundle = unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val));
} }
} }
@ -63,7 +63,7 @@ fn init(compartment: bare_compartment) {
extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsval) extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsval)
-> JSBool unsafe { -> JSBool unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -87,7 +87,7 @@ extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsva
extern fn HTMLImageElement_setWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsval) extern fn HTMLImageElement_setWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsval)
-> JSBool unsafe { -> JSBool unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -111,7 +111,7 @@ extern fn HTMLImageElement_setWidth(cx: *JSContext, _argc: c_uint, vp: *mut jsva
extern fn getTagName(cx: *JSContext, _argc: c_uint, vp: *mut jsval) extern fn getTagName(cx: *JSContext, _argc: c_uint, vp: *mut jsval)
-> JSBool { -> JSBool {
unsafe { unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -158,7 +158,7 @@ fn create(cx: *JSContext, node: Node, scope: NodeScope) -> jsobj unsafe {
unsafe { unsafe {
let raw_ptr: *libc::c_void = let raw_ptr: *libc::c_void =
unsafe::reinterpret_cast(squirrel_away_unique(~NodeBundle(node, scope))); unsafe::reinterpret_cast(&squirrel_away_unique(~NodeBundle(node, scope)));
JS_SetReservedSlot(obj.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr)); JS_SetReservedSlot(obj.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr));
} }
return obj; return obj;

View file

@ -67,12 +67,12 @@ struct NodeBundle {
unsafe fn unwrap(obj: *JSObject) -> *rust_box<NodeBundle> { unsafe fn unwrap(obj: *JSObject) -> *rust_box<NodeBundle> {
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)) unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val))
} }
extern fn getFirstChild(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool { extern fn getFirstChild(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool {
unsafe { unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -95,7 +95,7 @@ extern fn getFirstChild(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool
extern fn getNextSibling(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool { extern fn getNextSibling(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool {
unsafe { unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }
@ -118,7 +118,7 @@ extern fn getNextSibling(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBoo
extern fn getNodeType(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool { extern fn getNodeType(cx: *JSContext, _argc: c_uint, vp: *mut jsval) -> JSBool {
unsafe { unsafe {
let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(vp)); let obj = JS_THIS_OBJECT(cx, unsafe::reinterpret_cast(&vp));
if obj.is_null() { if obj.is_null() {
return 0; return 0;
} }

View file

@ -63,7 +63,7 @@ unsafe fn domstring_to_jsval(cx: *JSContext, str: DOMString) -> jsval {
} }
str(s) => { str(s) => {
str::as_buf(s, |buf, len| { str::as_buf(s, |buf, len| {
let cbuf = unsafe::reinterpret_cast(buf); let cbuf = unsafe::reinterpret_cast(&buf);
RUST_STRING_TO_JSVAL(JS_NewStringCopyN(cx, cbuf, len as libc::size_t)) RUST_STRING_TO_JSVAL(JS_NewStringCopyN(cx, cbuf, len as libc::size_t))
}) })
} }
@ -73,7 +73,7 @@ unsafe fn domstring_to_jsval(cx: *JSContext, str: DOMString) -> jsval {
fn get_compartment(cx: *JSContext) -> *bare_compartment { fn get_compartment(cx: *JSContext) -> *bare_compartment {
unsafe { unsafe {
let priv: *libc::c_void = JS_GetContextPrivate(cx); let priv: *libc::c_void = JS_GetContextPrivate(cx);
let compartment: *bare_compartment = unsafe::reinterpret_cast(priv); let compartment: *bare_compartment = unsafe::reinterpret_cast(&priv);
assert cx == (*compartment).cx.ptr; assert cx == (*compartment).cx.ptr;
compartment compartment
} }

View file

@ -65,14 +65,14 @@ extern fn setTimeout(cx: *JSContext, argc: c_uint, vp: *jsval) -> JSBool unsafe
unsafe fn unwrap(obj: *JSObject) -> *rust_box<Window> { unsafe fn unwrap(obj: *JSObject) -> *rust_box<Window> {
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)) unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val))
} }
extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) {
#debug("finalize!"); #debug("finalize!");
unsafe { unsafe {
let val = JS_GetReservedSlot(obj, 0); let val = JS_GetReservedSlot(obj, 0);
let _: @Window = unsafe::reinterpret_cast(RUST_JSVAL_TO_PRIVATE(val)); let _: @Window = unsafe::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val));
} }
} }
@ -101,7 +101,7 @@ fn init(compartment: bare_compartment, win: @Window) {
}); });
unsafe { unsafe {
let raw_ptr: *libc::c_void = unsafe::reinterpret_cast(squirrel_away(win)); let raw_ptr: *libc::c_void = unsafe::reinterpret_cast(&squirrel_away(win));
JS_SetReservedSlot(obj.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr)); JS_SetReservedSlot(obj.ptr, 0, RUST_PRIVATE_TO_JSVAL(raw_ptr));
} }

View file

@ -130,26 +130,26 @@ impl<T:send,A> Handle<T,A> {
impl<T: copy send,A> Scope<T,A> { impl<T: copy send,A> Scope<T,A> {
fn clone(v: *T) -> *T unsafe { fn clone(v: *T) -> *T unsafe {
let n: *mut T = let n: *mut T =
unsafe::reinterpret_cast(libc::calloc(sys::size_of::<T>() as size_t, 1u as size_t)); unsafe::reinterpret_cast(&libc::calloc(sys::size_of::<T>() as size_t, 1u as size_t));
// n.b.: this assignment will run the drop glue for <T,A>. *Hopefully* the fact that // n.b.: this assignment will run the drop glue for <T,A>. *Hopefully* the fact that
// everything is initialized to NULL by calloc will make this ok. We may have to make the // everything is initialized to NULL by calloc will make this ok. We may have to make the
// take glue be tolerant of this. // take glue be tolerant of this.
*n = unsafe{*v}; *n = unsafe{*v};
return unsafe::reinterpret_cast(n); return unsafe::reinterpret_cast(&n);
} }
} }
unsafe fn free<T:send>(t: *T) { unsafe fn free<T:send>(t: *T) {
let _x <- *unsafe::reinterpret_cast::<*T,*mut T>(t); let _x <- *unsafe::reinterpret_cast::<*T,*mut T>(&t);
libc::free(unsafe::reinterpret_cast(t)); libc::free(unsafe::reinterpret_cast(&t));
} }
unsafe fn free_handle<T:send,A>(h: Handle<T,A>) { unsafe fn free_handle<T:send,A>(h: Handle<T,A>) {
free(h.read_ptr()); free(h.read_ptr());
if h.write_ptr() != unsafe::reinterpret_cast(h.read_ptr()) { if h.write_ptr() != unsafe::reinterpret_cast(&h.read_ptr()) {
free(unsafe::reinterpret_cast::<*mut T,*T>(h.write_ptr())); free(unsafe::reinterpret_cast::<*mut T,*T>(&h.write_ptr()));
} }
} }
@ -183,7 +183,7 @@ impl<T:copy send,A> Scope<T,A> {
while (*handle).is_not_null() { while (*handle).is_not_null() {
free(handle.read_ptr()); free(handle.read_ptr());
handle.set_read_ptr(unsafe::reinterpret_cast(handle.write_ptr())); handle.set_read_ptr(unsafe::reinterpret_cast(&handle.write_ptr()));
let next_handle = handle.next_dirty(); let next_handle = handle.next_dirty();
handle.set_next_dirty(null_handle()); handle.set_next_dirty(null_handle());
handle = next_handle; handle = next_handle;
@ -205,7 +205,7 @@ impl<T:copy send,A> Scope<T,A> {
let const_write_ptr = ptr::const_offset(h.write_ptr(), 0); let const_write_ptr = ptr::const_offset(h.write_ptr(), 0);
if self.d.layout_active && const_read_ptr == const_write_ptr { if self.d.layout_active && const_read_ptr == const_write_ptr {
#debug["marking handle %? as dirty", h]; #debug["marking handle %? as dirty", h];
h.set_write_ptr(unsafe::reinterpret_cast(self.clone(h.read_ptr()))); h.set_write_ptr(unsafe::reinterpret_cast(&self.clone(h.read_ptr())));
h.set_next_dirty(self.d.first_dirty); h.set_next_dirty(self.d.first_dirty);
self.d.first_dirty = h; self.d.first_dirty = h;
} }
@ -216,9 +216,9 @@ impl<T:copy send,A> Scope<T,A> {
fn handle(v: T) -> Handle<T,A> unsafe { fn handle(v: T) -> Handle<T,A> unsafe {
let d: *HandleData<T,A> = let d: *HandleData<T,A> =
unsafe::reinterpret_cast( unsafe::reinterpret_cast(
libc::malloc(sys::size_of::<HandleData<T,A>>() as size_t)); &libc::malloc(sys::size_of::<HandleData<T,A>>() as size_t));
(*d).read_ptr = self.clone(ptr::addr_of(v)); (*d).read_ptr = self.clone(ptr::addr_of(v));
(*d).write_ptr = unsafe::reinterpret_cast((*d).read_ptr); (*d).write_ptr = unsafe::reinterpret_cast(&(*d).read_ptr);
(*d).read_aux = ptr::null(); (*d).read_aux = ptr::null();
(*d).next_dirty = null_handle(); (*d).next_dirty = null_handle();
let h = _Handle(d); let h = _Handle(d);

View file

@ -10,7 +10,7 @@ import content::content_task;
import content_task::{ContentTask}; import content_task::{ContentTask};
import resource::resource_task; import resource::resource_task;
import resource::resource_task::{ResourceTask}; import resource::resource_task::{ResourceTask};
import std::net::url::url; import std::net::url::Url;
import resource::image_cache_task; import resource::image_cache_task;
import image_cache_task::{ImageCacheTask, ImageCacheTaskClient}; import image_cache_task::{ImageCacheTask, ImageCacheTaskClient};
@ -101,7 +101,7 @@ impl<C: Compositor> Engine<C> {
proto! EngineProto( proto! EngineProto(
Running:send { Running:send {
LoadURL(url) -> Running, LoadURL(Url) -> Running,
Exit -> Exiting Exit -> Exiting
} }

View file

@ -16,7 +16,7 @@ import text::TextBox;
import traverse::extended_full_traversal; import traverse::extended_full_traversal;
import style::style::{SpecifiedStyle}; import style::style::{SpecifiedStyle};
import vec::{push, push_all}; import vec::{push, push_all};
import std::net::url::url; import std::net::url::Url;
import resource::image_cache_task; import resource::image_cache_task;
import image_cache_task::ImageCacheTask; import image_cache_task::ImageCacheTask;
import core::to_str::ToStr; import core::to_str::ToStr;
@ -94,12 +94,12 @@ struct Box {
struct ImageHolder { struct ImageHolder {
// Invariant: at least one of url and image is not none, except // Invariant: at least one of url and image is not none, except
// occasionally while get_image is being called // occasionally while get_image is being called
let mut url : Option<url>; let mut url : Option<Url>;
let mut image : Option<ARC<~Image>>; let mut image : Option<ARC<~Image>>;
let image_cache_task: ImageCacheTask; let image_cache_task: ImageCacheTask;
let reflow: fn~(); let reflow: fn~();
new(-url : url, image_cache_task: ImageCacheTask, reflow: fn~()) { new(-url : Url, image_cache_task: ImageCacheTask, reflow: fn~()) {
self.url = Some(copy url); self.url = Some(copy url);
self.image = None; self.image = None;
self.image_cache_task = image_cache_task; self.image_cache_task = image_cache_task;

View file

@ -30,7 +30,7 @@ impl @Box : InlineLayout {
for tree::each_child(BTree, self) |kid| { for tree::each_child(BTree, self) |kid| {
kid.bounds.origin = Point2D(au(x), au(y)); kid.bounds.origin = Point2D(au(x), au(y));
x += *kid.bounds.size.width; x += *kid.bounds.size.width;
current_height = i32::max(&current_height, &*kid.bounds.size.height); current_height = i32::max(current_height, *kid.bounds.size.height);
} }
let height = match self.appearance.height { let height = match self.appearance.height {
@ -41,7 +41,7 @@ impl @Box : InlineLayout {
let width = match self.appearance.width { let width = match self.appearance.width {
Px(p) => px_to_au(p.to_int()), Px(p) => px_to_au(p.to_int()),
Auto => au(i32::max(&x, &*self.bounds.size.width)), Auto => au(i32::max(x, *self.bounds.size.width)),
_ => fail ~"inhereit_width failed, width is neither a Px or auto" _ => fail ~"inhereit_width failed, width is neither a Px or auto"
}; };

View file

@ -11,7 +11,7 @@ import gfx::geometry::px_to_au;
import gfx::render_task; import gfx::render_task;
import render_task::RenderTask; import render_task::RenderTask;
import resource::image_cache_task::ImageCacheTask; import resource::image_cache_task::ImageCacheTask;
import std::net::url::url; import std::net::url::Url;
import style::apply::apply_style; import style::apply::apply_style;
import dom::event::{Event, ReflowEvent}; import dom::event::{Event, ReflowEvent};
import content::content_task; import content::content_task;
@ -22,7 +22,7 @@ import comm::*;
type LayoutTask = Chan<Msg>; type LayoutTask = Chan<Msg>;
enum Msg { enum Msg {
BuildMsg(Node, ARC<Stylesheet>, url, Chan<Event>), BuildMsg(Node, ARC<Stylesheet>, Url, Chan<Event>),
PingMsg(Chan<content_task::PingMsg>), PingMsg(Chan<content_task::PingMsg>),
ExitMsg ExitMsg
} }

View file

@ -6,17 +6,17 @@ import gfx::geometry::au_to_px;
import base::{Box, BTree, NTree, LayoutData, SpecifiedStyle, ImageHolder, import base::{Box, BTree, NTree, LayoutData, SpecifiedStyle, ImageHolder,
BlockBox, InlineBox, IntrinsicBox, TextBox}; BlockBox, InlineBox, IntrinsicBox, TextBox};
import traverse::{top_down_traversal}; import traverse::{top_down_traversal};
import std::net::url::url; import std::net::url::Url;
import resource::image_cache_task::ImageCacheTask; import resource::image_cache_task::ImageCacheTask;
struct StyleApplicator { struct StyleApplicator {
box: @Box; box: @Box;
doc_url: &url; doc_url: &Url;
image_cache_task: ImageCacheTask; image_cache_task: ImageCacheTask;
reflow: fn~(); reflow: fn~();
} }
fn apply_style(box: @Box, doc_url: &url, image_cache_task: ImageCacheTask, reflow: fn~()) { fn apply_style(box: @Box, doc_url: &Url, image_cache_task: ImageCacheTask, reflow: fn~()) {
let applicator = StyleApplicator { let applicator = StyleApplicator {
box: box, box: box,
doc_url: doc_url, doc_url: doc_url,
@ -29,7 +29,7 @@ fn apply_style(box: @Box, doc_url: &url, image_cache_task: ImageCacheTask, reflo
#[doc="A wrapper around a set of functions that can be applied as a top-down traversal of layout #[doc="A wrapper around a set of functions that can be applied as a top-down traversal of layout
boxes."] boxes."]
fn inheritance_wrapper(box : @Box, doc_url: &url, image_cache_task: ImageCacheTask, reflow: fn~()) { fn inheritance_wrapper(box : @Box, doc_url: &Url, image_cache_task: ImageCacheTask, reflow: fn~()) {
let applicator = StyleApplicator { let applicator = StyleApplicator {
box: box, box: box,
doc_url: doc_url, doc_url: doc_url,

View file

@ -1,7 +1,7 @@
#[doc = "Interface for running tree-based traversals over layout boxes"] #[doc = "Interface for running tree-based traversals over layout boxes"]
import base::{Box, BTree, NodeMethods}; import base::{Box, BTree, NodeMethods};
import intrinsic::tydesc; import intrinsic::TyDesc;
export full_traversal; export full_traversal;
export top_down_traversal; export top_down_traversal;

View file

@ -9,7 +9,7 @@ import pipes::{Port, Chan};
import lexer_util::*; import lexer_util::*;
import std::net::url::url; import std::net::url::Url;
import resource::resource_task::{ResourceTask, ProgressMsg, Load}; import resource::resource_task::{ResourceTask, ProgressMsg, Load};
enum ParserState { enum ParserState {
@ -268,7 +268,7 @@ fn spawn_css_lexer_from_string(-content : ~str) -> pipes::Port<Token> {
} }
#[allow(non_implicitly_copyable_typarams)] #[allow(non_implicitly_copyable_typarams)]
fn spawn_css_lexer_task(-url: url, resource_task: ResourceTask) -> pipes::Port<Token> { fn spawn_css_lexer_task(-url: Url, resource_task: ResourceTask) -> pipes::Port<Token> {
let (result_chan, result_port) = pipes::stream(); let (result_chan, result_port) = pipes::stream();
do task::spawn || { do task::spawn || {

View file

@ -10,17 +10,17 @@ import parser = parser::html_lexer;
import parser::Token; import parser::Token;
import dom::style::Stylesheet; import dom::style::Stylesheet;
import vec::{push, push_all_move, flat_map}; import vec::{push, push_all_move, flat_map};
import std::net::url::url; import std::net::url::Url;
import resource::resource_task::{ResourceTask, Load, Payload, Done}; import resource::resource_task::{ResourceTask, Load, Payload, Done};
import to_str::ToStr; import to_str::ToStr;
enum CSSMessage { enum CSSMessage {
File(url), File(Url),
Exit Exit
} }
enum js_message { enum js_message {
js_file(url), js_file(Url),
js_exit js_exit
} }
@ -168,7 +168,7 @@ fn js_script_listener(to_parent : comm::Chan<~[~[u8]]>, from_parent : comm::Port
} }
#[allow(non_implicitly_copyable_typarams)] #[allow(non_implicitly_copyable_typarams)]
fn build_dom(scope: NodeScope, stream: comm::Port<Token>, url: url, fn build_dom(scope: NodeScope, stream: comm::Port<Token>, url: Url,
resource_task: ResourceTask) -> (Node, comm::Port<Stylesheet>, comm::Port<~[~[u8]]>) { resource_task: ResourceTask) -> (Node, comm::Port<Stylesheet>, comm::Port<~[~[u8]]>) {
// The current reference node. // The current reference node.
let mut cur_node = scope.new_node(Element(ElementData(~"html", ~HTMLDivElement))); let mut cur_node = scope.new_node(Element(ElementData(~"html", ~HTMLDivElement)));

View file

@ -6,7 +6,7 @@ import vec::push;
import lexer_util::*; import lexer_util::*;
import resource::resource_task; import resource::resource_task;
import resource_task::{ResourceTask, ProgressMsg, Load}; import resource_task::{ResourceTask, ProgressMsg, Load};
import std::net::url::url; import std::net::url::Url;
enum Token { enum Token {
StartOpeningTag(~str), StartOpeningTag(~str),
@ -224,7 +224,7 @@ fn lexer(+input_port: Port<resource_task::ProgressMsg>, state : ParseState) -> H
} }
#[allow(non_implicitly_copyable_typarams)] #[allow(non_implicitly_copyable_typarams)]
fn spawn_html_lexer_task(-url: url, resource_task: ResourceTask) -> Port<Token> { fn spawn_html_lexer_task(-url: Url, resource_task: ResourceTask) -> Port<Token> {
let html_port = Port(); let html_port = Port();
let html_chan = Chan(html_port); let html_chan = Chan(html_port);

View file

@ -14,7 +14,7 @@ use JSMessage = parser::html_builder::js_message;
use comm::{Chan, Port}; use comm::{Chan, Port};
use str::from_slice; use str::from_slice;
use unsafe::reinterpret_cast; use unsafe::reinterpret_cast;
use Url = std::net::url::url; use std::net::url::Url;
type JSResult = ~[~[u8]]; type JSResult = ~[~[u8]];
@ -149,7 +149,7 @@ fn parse_html(scope: NodeScope, url: Url, resource_task: ResourceTask) -> HtmlPa
debug!("created new node"); debug!("created new node");
let parser = hubbub::Parser("UTF-8", false); let parser = hubbub::Parser("UTF-8", false);
debug!("created parser"); debug!("created parser");
parser.set_document_node(reinterpret_cast(root)); parser.set_document_node(reinterpret_cast(&root));
parser.enable_scripting(true); parser.enable_scripting(true);
parser.set_tree_handler(@hubbub::TreeHandler { parser.set_tree_handler(@hubbub::TreeHandler {
create_comment: |_data| { create_comment: |_data| {
@ -159,7 +159,7 @@ fn parse_html(scope: NodeScope, url: Url, resource_task: ResourceTask) -> HtmlPa
create_doctype: |_doctype| { create_doctype: |_doctype| {
debug!("create doctype"); debug!("create doctype");
let new_node = scope.new_node(Element(ElementData(~"doctype", ~UnknownElement))); let new_node = scope.new_node(Element(ElementData(~"doctype", ~UnknownElement)));
unsafe { reinterpret_cast(new_node) } unsafe { reinterpret_cast(&new_node) }
}, },
create_element: |tag| { create_element: |tag| {
debug!("create element"); debug!("create element");
@ -210,18 +210,18 @@ fn parse_html(scope: NodeScope, url: Url, resource_task: ResourceTask) -> HtmlPa
} }
} }
unsafe { reinterpret_cast(node) } unsafe { reinterpret_cast(&node) }
}, },
create_text: |data| { create_text: |data| {
debug!("create text"); debug!("create text");
let new_node = scope.new_node(Text(from_slice(data))); let new_node = scope.new_node(Text(from_slice(data)));
unsafe { reinterpret_cast(new_node) } unsafe { reinterpret_cast(&new_node) }
}, },
ref_node: |_node| {}, ref_node: |_node| {},
unref_node: |_node| {}, unref_node: |_node| {},
append_child: |parent, child| unsafe { append_child: |parent, child| unsafe {
debug!("append child"); debug!("append child");
scope.add_child(reinterpret_cast(parent), reinterpret_cast(child)); scope.add_child(reinterpret_cast(&parent), reinterpret_cast(&child));
child child
}, },
insert_before: |_parent, _child| { insert_before: |_parent, _child| {
@ -261,7 +261,7 @@ fn parse_html(scope: NodeScope, url: Url, resource_task: ResourceTask) -> HtmlPa
debug!("encoding change"); debug!("encoding change");
}, },
complete_script: |script| unsafe { complete_script: |script| unsafe {
do scope.read(reinterpret_cast(script)) |node_contents| { do scope.read(reinterpret_cast(&script)) |node_contents| {
match *node_contents.kind { match *node_contents.kind {
Element(element) if element.tag_name == ~"script" => { Element(element) if element.tag_name == ~"script" => {
match element.get_attr(~"src") { match element.get_attr(~"src") {

View file

@ -3,12 +3,12 @@ export factory;
import comm::Chan; import comm::Chan;
import task::spawn; import task::spawn;
import resource_task::{ProgressMsg, Payload, Done}; import resource_task::{ProgressMsg, Payload, Done};
import std::net::url::url; import std::net::url::Url;
import io::{file_reader, ReaderUtil}; import io::{file_reader, ReaderUtil};
const READ_SIZE: uint = 1024; const READ_SIZE: uint = 1024;
fn factory(+url: url, progress_chan: Chan<ProgressMsg>) { fn factory(+url: Url, progress_chan: Chan<ProgressMsg>) {
assert url.scheme == ~"file"; assert url.scheme == ~"file";
do spawn { do spawn {

View file

@ -3,10 +3,10 @@ export factory;
import comm::Chan; import comm::Chan;
import task::spawn; import task::spawn;
import resource_task::{ProgressMsg, Payload, Done}; import resource_task::{ProgressMsg, Payload, Done};
import std::net::url::url; import std::net::url::Url;
import http_client::{uv_http_request}; import http_client::{uv_http_request};
fn factory(+url: url, progress_chan: Chan<ProgressMsg>) { fn factory(+url: Url, progress_chan: Chan<ProgressMsg>) {
assert url.scheme == ~"http"; assert url.scheme == ~"http";
do spawn { do spawn {

View file

@ -5,7 +5,7 @@ export ImageCacheTaskClient;
export SyncImageCacheTask; export SyncImageCacheTask;
import image::base::{Image, load_from_memory, test_image_bin}; import image::base::{Image, load_from_memory, test_image_bin};
import std::net::url::url; import std::net::url::Url;
import util::url::{make_url, UrlMap, url_map}; import util::url::{make_url, UrlMap, url_map};
import comm::{Chan, Port}; import comm::{Chan, Port};
import task::{spawn, spawn_listener}; import task::{spawn, spawn_listener};
@ -19,23 +19,23 @@ import to_str::ToStr;
enum Msg { enum Msg {
/// Tell the cache that we may need a particular image soon. Must be posted /// Tell the cache that we may need a particular image soon. Must be posted
/// before Decode /// before Decode
Prefetch(url), Prefetch(Url),
/// Used be the prefetch tasks to post back image binaries /// Used be the prefetch tasks to post back image binaries
/*priv*/ StorePrefetchedImageData(url, Result<Cell<~[u8]>, ()>), /*priv*/ StorePrefetchedImageData(Url, Result<Cell<~[u8]>, ()>),
/// Tell the cache to decode an image. Must be posted before GetImage/WaitForImage /// Tell the cache to decode an image. Must be posted before GetImage/WaitForImage
Decode(url), Decode(Url),
/// Used by the decoder tasks to post decoded images back to the cache /// Used by the decoder tasks to post decoded images back to the cache
/*priv*/ StoreImage(url, Option<ARC<~Image>>), /*priv*/ StoreImage(Url, Option<ARC<~Image>>),
/// Request an Image object for a URL. If the image is not is not immediately /// Request an Image object for a URL. If the image is not is not immediately
/// available then ImageNotReady is returned. /// available then ImageNotReady is returned.
GetImage(url, Chan<ImageResponseMsg>), GetImage(Url, Chan<ImageResponseMsg>),
/// Wait for an image to become available (or fail to load). /// Wait for an image to become available (or fail to load).
WaitForImage(url, Chan<ImageResponseMsg>), WaitForImage(Url, Chan<ImageResponseMsg>),
/// For testing /// For testing
/*priv*/ OnMsg(fn~(msg: &Msg)), /*priv*/ OnMsg(fn~(msg: &Msg)),
@ -203,18 +203,18 @@ impl ImageCache {
} }
} }
/*priv*/ fn get_state(+url: url) -> ImageState { /*priv*/ fn get_state(+url: Url) -> ImageState {
match self.state_map.find(url) { match self.state_map.find(url) {
Some(state) => state, Some(state) => state,
None => Init None => Init
} }
} }
/*priv*/ fn set_state(+url: url, state: ImageState) { /*priv*/ fn set_state(+url: Url, state: ImageState) {
self.state_map.insert(url, state); self.state_map.insert(url, state);
} }
/*priv*/ fn prefetch(+url: url) { /*priv*/ fn prefetch(+url: Url) {
match self.get_state(copy url) { match self.get_state(copy url) {
Init => { Init => {
let to_cache = self.from_client.chan(); let to_cache = self.from_client.chan();
@ -249,7 +249,7 @@ impl ImageCache {
} }
} }
/*priv*/ fn store_prefetched_image_data(+url: url, data: &Result<Cell<~[u8]>, ()>) { /*priv*/ fn store_prefetched_image_data(+url: Url, data: &Result<Cell<~[u8]>, ()>) {
match self.get_state(copy url) { match self.get_state(copy url) {
Prefetching(next_step) => { Prefetching(next_step) => {
match *data { match *data {
@ -278,7 +278,7 @@ impl ImageCache {
} }
} }
/*priv*/ fn decode(+url: url) { /*priv*/ fn decode(+url: Url) {
match self.get_state(copy url) { match self.get_state(copy url) {
Init => fail ~"decoding image before prefetch", Init => fail ~"decoding image before prefetch",
@ -324,7 +324,7 @@ impl ImageCache {
} }
} }
/*priv*/ fn store_image(+url: url, image: &Option<ARC<~Image>>) { /*priv*/ fn store_image(+url: Url, image: &Option<ARC<~Image>>) {
match self.get_state(copy url) { match self.get_state(copy url) {
Decoding => { Decoding => {
@ -351,7 +351,7 @@ impl ImageCache {
} }
/*priv*/ fn purge_waiters(+url: url, f: fn() -> ImageResponseMsg) { /*priv*/ fn purge_waiters(+url: Url, f: fn() -> ImageResponseMsg) {
match self.wait_map.find(copy url) { match self.wait_map.find(copy url) {
Some(@waiters) => { Some(@waiters) => {
for waiters.each |response| { for waiters.each |response| {
@ -364,7 +364,7 @@ impl ImageCache {
} }
/*priv*/ fn get_image(+url: url, response: Chan<ImageResponseMsg>) { /*priv*/ fn get_image(+url: Url, response: Chan<ImageResponseMsg>) {
match self.get_state(copy url) { match self.get_state(copy url) {
Init => fail ~"request for image before prefetch", Init => fail ~"request for image before prefetch",
@ -390,7 +390,7 @@ impl ImageCache {
} }
} }
/*priv*/ fn wait_for_image(+url: url, response: Chan<ImageResponseMsg>) { /*priv*/ fn wait_for_image(+url: Url, response: Chan<ImageResponseMsg>) {
match self.get_state(copy url) { match self.get_state(copy url) {
Init => fail ~"request for image before prefetch", Init => fail ~"request for image before prefetch",
@ -438,7 +438,7 @@ impl ImageCacheTask: ImageCacheTaskClient {
} }
fn load_image_data(+url: url, resource_task: ResourceTask) -> Result<~[u8], ()> { fn load_image_data(+url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> {
let response_port = Port(); let response_port = Port();
resource_task.send(resource_task::Load(url, response_port.chan())); resource_task.send(resource_task::Load(url, response_port.chan()));

View file

@ -10,12 +10,11 @@ export ResourceTask, ResourceManager, LoaderTaskFactory;
import comm::{Chan, Port}; import comm::{Chan, Port};
import task::{spawn, spawn_listener}; import task::{spawn, spawn_listener};
import std::net::url; import std::net::url::{Url, to_str};
import std::net::url::url;
enum ControlMsg { enum ControlMsg {
/// Request the data associated with a particular URL /// Request the data associated with a particular URL
Load(url, Chan<ProgressMsg>), Load(Url, Chan<ProgressMsg>),
Exit Exit
} }
@ -48,7 +47,7 @@ Creates a task to load a specific resource
The ResourceManager delegates loading to a different type of loader task for The ResourceManager delegates loading to a different type of loader task for
each URL scheme each URL scheme
*/ */
type LoaderTaskFactory = fn~(+url: url, Chan<ProgressMsg>); type LoaderTaskFactory = fn~(+url: Url, Chan<ProgressMsg>);
/// Create a ResourceTask with the default loaders /// Create a ResourceTask with the default loaders
fn ResourceTask() -> ResourceTask { fn ResourceTask() -> ResourceTask {
@ -89,11 +88,11 @@ struct ResourceManager {
} }
} }
fn load(+url: url, progress_chan: Chan<ProgressMsg>) { fn load(+url: Url, progress_chan: Chan<ProgressMsg>) {
match self.get_loader_factory(url) { match self.get_loader_factory(url) {
Some(loader_factory) => { Some(loader_factory) => {
#debug("resource_task: loading url: %s", url::to_str(url)); #debug("resource_task: loading url: %s", to_str(url));
loader_factory(url, progress_chan); loader_factory(url, progress_chan);
} }
None => { None => {
@ -103,7 +102,7 @@ struct ResourceManager {
} }
} }
fn get_loader_factory(url: url) -> Option<LoaderTaskFactory> { fn get_loader_factory(url: Url) -> Option<LoaderTaskFactory> {
for self.loaders.each |scheme_loader| { for self.loaders.each |scheme_loader| {
let (scheme, loader_factory) = copy scheme_loader; let (scheme, loader_factory) = copy scheme_loader;
if scheme == url.scheme { if scheme == url.scheme {

View file

@ -37,10 +37,10 @@ fn hsla(h : float, s : float, l : float, a : float) -> Color {
let h = if h < 0.0 { h + 1.0 } else if h > 1.0 { h - 1.0 } else { h }; let h = if h < 0.0 { h + 1.0 } else if h > 1.0 { h - 1.0 } else { h };
match h { match h {
0.0 to 1.0/6.0 => m1 + (m2 - m1)*h*6.0, 0.0 .. 1.0/6.0 => m1 + (m2 - m1)*h*6.0,
1.0/6.0 to 1.0/2.0 => m2, 1.0/6.0 .. 1.0/2.0 => m2,
1.0/2.0 to 2.0/3.0 => m1 + (m2 - m1)*(4.0 - 6.0*h), 1.0/2.0 .. 2.0/3.0 => m1 + (m2 - m1)*(4.0 - 6.0*h),
2.0/3.0 to 1.0 => return m1, 2.0/3.0 .. 1.0 => return m1,
_ => fail ~"unexpected hue value" _ => fail ~"unexpected hue value"
} }
} }

View file

@ -1,7 +1,7 @@
export make_url, UrlMap, url_map; export make_url, UrlMap, url_map;
import std::net::url; import std::net::url;
import url::{get_scheme, url}; import std::net::url::Url;
import std::map::hashmap; import std::map::hashmap;
import path::Path; import path::Path;
@ -15,8 +15,8 @@ Create a URL object from a string. Does various helpful browsery things like
*/ */
#[allow(non_implicitly_copyable_typarams)] #[allow(non_implicitly_copyable_typarams)]
fn make_url(str_url: ~str, current_url: Option<url>) -> url { fn make_url(str_url: ~str, current_url: Option<Url>) -> Url {
let mut schm = get_scheme(str_url); let mut schm = url::get_scheme(str_url);
let str_url = if result::is_err(schm) { let str_url = if result::is_err(schm) {
if current_url.is_none() { if current_url.is_none() {
// If all we have is a filename, assume it's a local relative file // If all we have is a filename, assume it's a local relative file
@ -100,11 +100,11 @@ mod make_url_tests {
} }
type UrlMap<T: copy> = hashmap<url, T>; type UrlMap<T: copy> = hashmap<Url, T>;
fn url_map<T: copy>() -> UrlMap<T> { fn url_map<T: copy>() -> UrlMap<T> {
import core::to_str::ToStr; import core::to_str::ToStr;
hashmap::<url, T>(|a| str::hash(&a.to_str()), hashmap::<Url, T>(|a| str::hash(&a.to_str()),
|a, b| str::eq(&a.to_str(), &b.to_str())) |a, b| str::eq(&a.to_str(), &b.to_str()))
} }