From 97cc571358c3ac1bc3d562ac60c39c67cda3678d Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Tue, 9 Apr 2013 18:56:34 -0700 Subject: [PATCH] std: clean up the order of {De,En}codable methods --- src/libstd/ebml.rs | 50 +++++++------- src/libstd/json.rs | 108 +++++++++++++++---------------- src/libstd/serialize.rs | 13 ++-- src/libsyntax/ext/auto_encode.rs | 14 ++-- 4 files changed, 92 insertions(+), 93 deletions(-) diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index b117c8d9882b..3afc49d40add 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -335,20 +335,6 @@ pub mod reader { f() } - fn read_seq(&self, f: &fn(uint) -> T) -> T { - debug!("read_seq()"); - do self.push_doc(self.next_doc(EsVec)) { - let len = self._next_uint(EsVecLen); - debug!(" len=%u", len); - f(len) - } - } - - fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T { - debug!("read_seq_elt(idx=%u)", idx); - self.push_doc(self.next_doc(EsVecElt), f) - } - fn read_struct(&self, name: &str, _len: uint, f: &fn() -> T) -> T { debug!("read_struct(name=%s)", name); f() @@ -373,6 +359,20 @@ pub mod reader { } } + fn read_seq(&self, f: &fn(uint) -> T) -> T { + debug!("read_seq()"); + do self.push_doc(self.next_doc(EsVec)) { + let len = self._next_uint(EsVecLen); + debug!(" len=%u", len); + f(len) + } + } + + fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T { + debug!("read_seq_elt(idx=%u)", idx); + self.push_doc(self.next_doc(EsVecElt), f) + } + fn read_map(&self, _f: &fn(uint) -> T) -> T { debug!("read_map()"); fail!(~"read_map is unimplemented"); @@ -613,17 +613,6 @@ pub mod writer { } fn emit_enum_variant_arg(&self, _idx: uint, f: &fn()) { f() } - fn emit_seq(&self, len: uint, f: &fn()) { - do self.wr_tag(EsVec as uint) { - self._emit_tagged_uint(EsVecLen, len); - f() - } - } - - fn emit_seq_elt(&self, _idx: uint, f: &fn()) { - self.wr_tag(EsVecElt as uint, f) - } - 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); @@ -640,6 +629,17 @@ pub mod writer { self.emit_enum_variant("Some", 1, 1, f) } + fn emit_seq(&self, len: uint, f: &fn()) { + do self.wr_tag(EsVec as uint) { + self._emit_tagged_uint(EsVecLen, len); + f() + } + } + + fn emit_seq_elt(&self, _idx: uint, f: &fn()) { + self.wr_tag(EsVecElt as uint, f) + } + fn emit_map(&self, _len: uint, _f: &fn()) { fail!(~"emit_map is unimplemented"); } diff --git a/src/libstd/json.rs b/src/libstd/json.rs index 90a745aaeb9b..3714adb30556 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -130,17 +130,6 @@ impl serialize::Encoder for Encoder { f(); } - fn emit_seq(&self, _len: uint, f: &fn()) { - self.wr.write_char('['); - f(); - self.wr.write_char(']'); - } - - fn emit_seq_elt(&self, idx: uint, f: &fn()) { - if idx != 0 { self.wr.write_char(','); } - f() - } - fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { self.wr.write_char('{'); f(); @@ -157,6 +146,17 @@ impl serialize::Encoder for Encoder { fn emit_option_none(&self) { self.emit_nil(); } fn emit_option_some(&self, f: &fn()) { f(); } + fn emit_seq(&self, _len: uint, f: &fn()) { + self.wr.write_char('['); + f(); + self.wr.write_char(']'); + } + + fn emit_seq_elt(&self, idx: uint, f: &fn()) { + if idx != 0 { self.wr.write_char(','); } + f() + } + fn emit_map(&self, _len: uint, f: &fn()) { self.wr.write_char('{'); f(); @@ -241,29 +241,6 @@ impl serialize::Encoder for PrettyEncoder { f() } - fn emit_seq(&self, len: uint, f: &fn()) { - if len == 0 { - self.wr.write_str("[]"); - } else { - self.wr.write_char('['); - self.indent += 2; - f(); - self.wr.write_char('\n'); - self.indent -= 2; - self.wr.write_str(spaces(self.indent)); - self.wr.write_char(']'); - } - } - fn emit_seq_elt(&self, idx: uint, f: &fn()) { - if idx == 0 { - self.wr.write_char('\n'); - } else { - self.wr.write_str(",\n"); - } - self.wr.write_str(spaces(self.indent)); - f() - } - fn emit_struct(&self, _name: &str, len: uint, f: &fn()) { if len == 0 { self.wr.write_str("{}"); @@ -293,6 +270,29 @@ impl serialize::Encoder for PrettyEncoder { fn emit_option_none(&self) { self.emit_nil(); } fn emit_option_some(&self, f: &fn()) { f(); } + fn emit_seq(&self, len: uint, f: &fn()) { + if len == 0 { + self.wr.write_str("[]"); + } else { + self.wr.write_char('['); + self.indent += 2; + f(); + self.wr.write_char('\n'); + self.indent -= 2; + self.wr.write_str(spaces(self.indent)); + self.wr.write_char(']'); + } + } + fn emit_seq_elt(&self, idx: uint, f: &fn()) { + if idx == 0 { + self.wr.write_char('\n'); + } else { + self.wr.write_str(",\n"); + } + self.wr.write_str(spaces(self.indent)); + f() + } + fn emit_map(&self, len: uint, f: &fn()) { if len == 0 { self.wr.write_str("{}"); @@ -827,26 +827,6 @@ impl serialize::Decoder for Decoder { f() } - fn read_seq(&self, f: &fn(uint) -> T) -> T { - debug!("read_seq()"); - let len = match self.stack.pop() { - List(list) => { - let len = list.len(); - do vec::consume_reverse(list) |_i, v| { - self.stack.push(v); - } - len - } - _ => fail!(~"not a list"), - }; - f(len) - } - - fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T { - debug!("read_seq_elt(idx=%u)", idx); - f() - } - fn read_struct(&self, name: &str, len: uint, f: &fn() -> T) -> T { debug!("read_struct(name=%s, len=%u)", name, len); let value = f(); @@ -880,6 +860,26 @@ impl serialize::Decoder for Decoder { } } + fn read_seq(&self, f: &fn(uint) -> T) -> T { + debug!("read_seq()"); + let len = match self.stack.pop() { + List(list) => { + let len = list.len(); + do vec::consume_reverse(list) |_i, v| { + self.stack.push(v); + } + len + } + _ => fail!(~"not a list"), + }; + f(len) + } + + fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T { + debug!("read_seq_elt(idx=%u)", idx); + f() + } + fn read_map(&self, f: &fn(uint) -> T) -> T { debug!("read_map()"); let len = match self.stack.pop() { diff --git a/src/libstd/serialize.rs b/src/libstd/serialize.rs index c2f0d9cb43f0..a49f43d485b1 100644 --- a/src/libstd/serialize.rs +++ b/src/libstd/serialize.rs @@ -44,14 +44,10 @@ pub trait Encoder { fn emit_str(&self, v: &str); // Compound types: - fn emit_enum(&self, name: &str, f: &fn()); fn emit_enum_variant(&self, v_name: &str, v_id: uint, sz: uint, f: &fn()); fn emit_enum_variant_arg(&self, idx: uint, f: &fn()); - fn emit_seq(&self, len: uint, f: &fn()); - fn emit_seq_elt(&self, idx: uint, f: &fn()); - fn emit_struct(&self, name: &str, _len: uint, f: &fn()); fn emit_field(&self, f_name: &str, f_idx: uint, f: &fn()); @@ -60,6 +56,9 @@ pub trait Encoder { fn emit_option_none(&self); fn emit_option_some(&self, f: &fn()); + fn emit_seq(&self, len: uint, f: &fn()); + fn emit_seq_elt(&self, idx: uint, f: &fn()); + fn emit_map(&self, len: uint, f: &fn()); fn emit_map_elt_key(&self, idx: uint, f: &fn()); fn emit_map_elt_val(&self, idx: uint, f: &fn()); @@ -90,15 +89,15 @@ pub trait Decoder { fn read_enum_variant(&self, names: &[&str], f: &fn(uint) -> T) -> T; fn read_enum_variant_arg(&self, idx: uint, f: &fn() -> T) -> T; - fn read_seq(&self, f: &fn(uint) -> T) -> T; - fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T; - fn read_struct(&self, name: &str, _len: uint, f: &fn() -> T) -> T; fn read_field(&self, name: &str, idx: uint, f: &fn() -> T) -> T; // Specialized types: fn read_option(&self, f: &fn(bool) -> T) -> T; + fn read_seq(&self, f: &fn(uint) -> T) -> T; + fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T; + fn read_map(&self, f: &fn(uint) -> T) -> T; fn read_map_elt_key(&self, idx: uint, f: &fn() -> T) -> T; fn read_map_elt_val(&self, idx: uint, f: &fn() -> T) -> T; diff --git a/src/libsyntax/ext/auto_encode.rs b/src/libsyntax/ext/auto_encode.rs index f9dadb560e3d..932c3477cf5b 100644 --- a/src/libsyntax/ext/auto_encode.rs +++ b/src/libsyntax/ext/auto_encode.rs @@ -1253,13 +1253,6 @@ mod test { self.add_to_log(CallToEmitEnumVariantArg (idx)); f(); } - fn emit_seq(&self, +_len: uint, f: &fn()) { - self.add_unknown_to_log(); f(); - } - fn emit_seq_elt(&self, +_idx: uint, f: &fn()) { - self.add_unknown_to_log(); f(); - } - fn emit_struct(&self, name: &str, +len: uint, f: &fn()) { self.add_to_log(CallToEmitStruct (name.to_str(),len)); f(); } @@ -1279,6 +1272,13 @@ mod test { f(); } + fn emit_seq(&self, +_len: uint, f: &fn()) { + self.add_unknown_to_log(); f(); + } + fn emit_seq_elt(&self, +_idx: uint, f: &fn()) { + self.add_unknown_to_log(); f(); + } + fn emit_map(&self, _len: uint, f: &fn()) { self.add_unknown_to_log(); f(); }