From f1d04780020fed9f6ade87ab39964f6c459aca33 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 14 Jan 2013 13:17:20 -0800 Subject: [PATCH] Add cfg attrs to handle auto_encode transition --- src/libstd/ebml.rs | 13 +++++++++++++ src/libstd/json.rs | 26 ++++++++++++++++++++++++++ src/libstd/prettyprint.rs | 9 +++++++++ src/libstd/serialize.rs | 10 ++++++++++ 4 files changed, 58 insertions(+) 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;