diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index dc379cec21b5..cc3d080d30ec 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -379,6 +379,14 @@ pub mod reader { f() } + #[cfg(stage0)] + fn read_struct(&self, name: &str, f: fn() -> T) -> T { + debug!("read_struct(name=%s)", name); + f() + } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn read_struct(&self, name: &str, _len: uint, f: fn() -> T) -> T { debug!("read_struct(name=%s)", name); f() @@ -658,6 +666,11 @@ pub mod writer { } fn emit_rec(&self, f: fn()) { f() } + #[cfg(stage0)] + fn emit_struct(&self, _name: &str, f: fn()) { f() } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn emit_struct(&self, _name: &str, _len: uint, f: fn()) { f() } fn emit_field(&self, name: &str, _idx: uint, f: fn()) { self._emit_label(name); diff --git a/src/libstd/json.rs b/src/libstd/json.rs index 0dea73981db5..83e98ac1ed16 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -157,6 +157,15 @@ pub impl Encoder: serialize::Encoder { f(); self.wr.write_char('}'); } + #[cfg(stage0)] + fn emit_struct(&self, _name: &str, f: fn()) { + self.wr.write_char('{'); + f(); + self.wr.write_char('}'); + } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn emit_struct(&self, _name: &str, _len: uint, f: fn()) { self.wr.write_char('{'); f(); @@ -270,6 +279,13 @@ pub impl PrettyEncoder: serialize::Encoder { self.indent -= 2; self.wr.write_char('}'); } + #[cfg(stage0)] + fn emit_struct(&self, _name: &str, f: fn()) { + self.emit_rec(f) + } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn emit_struct(&self, _name: &str, _len: uint, f: fn()) { self.emit_rec(f) } @@ -870,6 +886,16 @@ pub impl Decoder: serialize::Decoder { move value } + #[cfg(stage0)] + fn read_struct(&self, _name: &str, f: fn() -> T) -> T { + debug!("read_struct()"); + let value = f(); + self.pop(); + move value + } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn read_struct(&self, _name: &str, _len: uint, f: fn() -> T) -> T { debug!("read_struct()"); let value = f(); diff --git a/src/libstd/prettyprint.rs b/src/libstd/prettyprint.rs index d07c29d624ce..f122031a81a4 100644 --- a/src/libstd/prettyprint.rs +++ b/src/libstd/prettyprint.rs @@ -162,6 +162,15 @@ pub impl Serializer: serialize::Encoder { self.wr.write_str(~"}"); } + #[cfg(stage0)] + fn emit_struct(&self, name: &str, f: fn()) { + self.wr.write_str(fmt!("%s {", name)); + f(); + self.wr.write_str(~"}"); + } + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn emit_struct(&self, name: &str, _len: uint, f: fn()) { self.wr.write_str(fmt!("%s {", name)); f(); diff --git a/src/libstd/serialize.rs b/src/libstd/serialize.rs index 708df015dae4..da9bba1020c8 100644 --- a/src/libstd/serialize.rs +++ b/src/libstd/serialize.rs @@ -58,6 +58,11 @@ pub trait Encoder { fn emit_vec_elt(&self, idx: uint, f: fn()); fn emit_rec(&self, f: fn()); + #[cfg(stage0)] + fn emit_struct(&self, name: &str, f: fn()); + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn emit_struct(&self, name: &str, _len: uint, f: fn()); fn emit_field(&self, f_name: &str, f_idx: uint, f: fn()); @@ -99,6 +104,11 @@ pub trait Decoder { fn read_vec_elt(&self, idx: uint, f: fn() -> T) -> T; fn read_rec(&self, f: fn() -> T) -> T; + #[cfg(stage0)] + fn read_struct(&self, name: &str, f: fn() -> T) -> T; + #[cfg(stage1)] + #[cfg(stage2)] + #[cfg(stage3)] fn read_struct(&self, name: &str, _len: uint, f: fn() -> T) -> T; fn read_field(&self, name: &str, idx: uint, f: fn() -> T) -> T;