Update type visitor to use &Visitor and not @Visitor
This commit is contained in:
parent
66b8ad5867
commit
df016dc4bf
6 changed files with 37 additions and 12 deletions
|
|
@ -158,6 +158,7 @@ impl ReprVisitor {
|
|||
}
|
||||
|
||||
#[inline]
|
||||
#[cfg(stage0)]
|
||||
pub fn visit_ptr_inner(&self, ptr: *c_void, inner: *TyDesc) -> bool {
|
||||
unsafe {
|
||||
let u = ReprVisitor(ptr, self.writer);
|
||||
|
|
@ -167,6 +168,17 @@ impl ReprVisitor {
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[cfg(not(stage0))]
|
||||
pub fn visit_ptr_inner(&self, ptr: *c_void, inner: *TyDesc) -> bool {
|
||||
unsafe {
|
||||
let u = ReprVisitor(ptr, self.writer);
|
||||
let v = reflect::MovePtrAdaptor(u);
|
||||
visit_tydesc(inner, &v as &TyVisitor);
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn write<T:Repr>(&self) -> bool {
|
||||
do self.get |v:&T| {
|
||||
|
|
@ -556,6 +568,7 @@ impl TyVisitor for ReprVisitor {
|
|||
fn visit_closure_ptr(&self, _ck: uint) -> bool { true }
|
||||
}
|
||||
|
||||
#[cfg(stage0)]
|
||||
pub fn write_repr<T>(writer: @Writer, object: &T) {
|
||||
unsafe {
|
||||
let ptr = ptr::to_unsafe_ptr(object) as *c_void;
|
||||
|
|
@ -566,6 +579,17 @@ pub fn write_repr<T>(writer: @Writer, object: &T) {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(not(stage0))]
|
||||
pub fn write_repr<T>(writer: @Writer, object: &T) {
|
||||
unsafe {
|
||||
let ptr = ptr::to_unsafe_ptr(object) as *c_void;
|
||||
let tydesc = get_tydesc::<T>();
|
||||
let u = ReprVisitor(ptr, writer);
|
||||
let v = reflect::MovePtrAdaptor(u);
|
||||
visit_tydesc(tydesc, &v as &TyVisitor)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
struct P {a: int, b: float}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue