1
Fork 0

std: remove Encoder::read_rec and Decoder::emit_rec

This commit is contained in:
Erick Tryzelaar 2013-03-28 22:19:43 -07:00
parent e99cdcfba8
commit 90b3658cd6
5 changed files with 22 additions and 48 deletions

View file

@ -558,7 +558,7 @@ trait read_method_map_entry_helper {
fn encode_method_map_entry(ecx: @e::EncodeContext, fn encode_method_map_entry(ecx: @e::EncodeContext,
ebml_w: writer::Encoder, ebml_w: writer::Encoder,
mme: method_map_entry) { mme: method_map_entry) {
do ebml_w.emit_rec { do ebml_w.emit_struct("method_map_entry", 3) {
do ebml_w.emit_field(~"self_arg", 0u) { do ebml_w.emit_field(~"self_arg", 0u) {
ebml_w.emit_arg(ecx, mme.self_arg); ebml_w.emit_arg(ecx, mme.self_arg);
} }
@ -574,7 +574,7 @@ fn encode_method_map_entry(ecx: @e::EncodeContext,
impl read_method_map_entry_helper for reader::Decoder { impl read_method_map_entry_helper for reader::Decoder {
fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext) fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext)
-> method_map_entry { -> method_map_entry {
do self.read_rec { do self.read_struct("method_map_entry", 3) {
method_map_entry { method_map_entry {
self_arg: self.read_field(~"self_arg", 0u, || { self_arg: self.read_field(~"self_arg", 0u, || {
self.read_arg(xcx) self.read_arg(xcx)
@ -817,7 +817,7 @@ impl ebml_writer_helpers for writer::Encoder {
fn emit_tpbt(&self, ecx: @e::EncodeContext, fn emit_tpbt(&self, ecx: @e::EncodeContext,
tpbt: ty::ty_param_bounds_and_ty) { tpbt: ty::ty_param_bounds_and_ty) {
do self.emit_rec { do self.emit_struct("ty_param_bounds_and_ty", 3) {
do self.emit_field(~"bounds", 0) { do self.emit_field(~"bounds", 0) {
do self.emit_from_vec(*tpbt.bounds) |bs| { do self.emit_from_vec(*tpbt.bounds) |bs| {
self.emit_bounds(ecx, *bs); self.emit_bounds(ecx, *bs);
@ -1084,7 +1084,7 @@ impl ebml_decoder_decoder_helpers for reader::Decoder {
fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext) fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext)
-> ty::ty_param_bounds_and_ty -> ty::ty_param_bounds_and_ty
{ {
do self.read_rec { do self.read_struct("ty_param_bounds_and_ty", 3) {
ty::ty_param_bounds_and_ty { ty::ty_param_bounds_and_ty {
bounds: self.read_field(~"bounds", 0u, || { bounds: self.read_field(~"bounds", 0u, || {
@self.read_to_vec(|| self.read_bounds(xcx) ) @self.read_to_vec(|| self.read_bounds(xcx) )

View file

@ -362,11 +362,6 @@ pub mod reader {
self.push_doc(self.next_doc(EsVecElt), f) self.push_doc(self.next_doc(EsVecElt), f)
} }
fn read_rec<T>(&self, f: &fn() -> T) -> T {
debug!("read_rec()");
f()
}
fn read_struct<T>(&self, name: &str, _len: uint, f: &fn() -> T) -> T { fn read_struct<T>(&self, name: &str, _len: uint, f: &fn() -> T) -> T {
debug!("read_struct(name=%s)", name); debug!("read_struct(name=%s)", name);
f() f()
@ -644,7 +639,6 @@ pub mod writer {
self.wr_tag(EsVecElt as uint, f) self.wr_tag(EsVecElt as uint, f)
} }
fn emit_rec(&self, f: &fn()) { f() }
fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { f() } fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { f() }
fn emit_field(&self, name: &str, _idx: uint, f: &fn()) { fn emit_field(&self, name: &str, _idx: uint, f: &fn()) {
self._emit_label(name); self._emit_label(name);

View file

@ -141,11 +141,6 @@ impl serialize::Encoder for Encoder {
f() f()
} }
fn emit_rec(&self, f: &fn()) {
self.wr.write_char('{');
f();
self.wr.write_char('}');
}
fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) {
self.wr.write_char('{'); self.wr.write_char('{');
f(); f();
@ -253,20 +248,17 @@ impl serialize::Encoder for PrettyEncoder {
f() f()
} }
fn emit_rec(&self, f: &fn()) {
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_struct(&self, _name: &str, len: uint, f: &fn()) { fn emit_struct(&self, _name: &str, len: uint, f: &fn()) {
if len == 0 { if len == 0 {
self.wr.write_str("{}"); self.wr.write_str("{}");
} else { } else {
self.emit_rec(f) 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_field(&self, name: &str, idx: uint, f: &fn()) { fn emit_field(&self, name: &str, idx: uint, f: &fn()) {
@ -286,25 +278,25 @@ impl serialize::Encoder for PrettyEncoder {
fn emit_option_some(&self, f: &fn()) { f(); } fn emit_option_some(&self, f: &fn()) { f(); }
} }
impl<S:serialize::Encoder> serialize::Encodable<S> for Json { impl<E: serialize::Encoder> serialize::Encodable<E> for Json {
fn encode(&self, s: &S) { fn encode(&self, e: &E) {
match *self { match *self {
Number(v) => v.encode(s), Number(v) => v.encode(e),
String(ref v) => v.encode(s), String(ref v) => v.encode(e),
Boolean(v) => v.encode(s), Boolean(v) => v.encode(e),
List(ref v) => v.encode(s), List(ref v) => v.encode(e),
Object(ref v) => { Object(ref v) => {
do s.emit_rec || { do e.emit_struct("Object", v.len())|| {
let mut idx = 0; let mut idx = 0;
for v.each |&(key, value)| { for v.each |&(key, value)| {
do s.emit_field(*key, idx) { do e.emit_field(*key, idx) {
value.encode(s); value.encode(e);
} }
idx += 1; idx += 1;
} }
} }
}, },
Null => s.emit_nil(), Null => e.emit_nil(),
} }
} }
} }
@ -855,13 +847,6 @@ impl<'self> serialize::Decoder for Decoder<'self> {
} }
} }
fn read_rec<T>(&self, f: &fn() -> T) -> T {
debug!("read_rec()");
let value = f();
self.pop();
value
}
fn read_struct<T>(&self, _name: &str, _len: uint, f: &fn() -> T) -> T { fn read_struct<T>(&self, _name: &str, _len: uint, f: &fn() -> T) -> T {
debug!("read_struct()"); debug!("read_struct()");
let value = f(); let value = f();
@ -870,7 +855,7 @@ impl<'self> serialize::Decoder for Decoder<'self> {
} }
fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T { fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
debug!("read_rec_field(%s, idx=%u)", name, idx); debug!("read_field(%s, idx=%u)", name, idx);
let top = self.peek(); let top = self.peek();
match *top { match *top {
Object(ref obj) => { Object(ref obj) => {

View file

@ -49,7 +49,6 @@ pub trait Encoder {
fn emit_seq(&self, len: uint, f: &fn()); fn emit_seq(&self, len: uint, f: &fn());
fn emit_seq_elt(&self, idx: uint, f: &fn()); fn emit_seq_elt(&self, idx: uint, f: &fn());
fn emit_rec(&self, f: &fn());
fn emit_struct(&self, name: &str, _len: 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()); fn emit_field(&self, f_name: &str, f_idx: uint, f: &fn());
@ -92,7 +91,6 @@ pub trait Decoder {
fn read_seq<T>(&self, f: &fn(uint) -> T) -> T; fn read_seq<T>(&self, f: &fn(uint) -> T) -> T;
fn read_seq_elt<T>(&self, idx: uint, f: &fn() -> T) -> T; fn read_seq_elt<T>(&self, idx: uint, f: &fn() -> T) -> T;
fn read_rec<T>(&self, f: &fn() -> T) -> T;
fn read_struct<T>(&self, name: &str, _len: uint, f: &fn() -> T) -> T; fn read_struct<T>(&self, name: &str, _len: uint, f: &fn() -> T) -> T;
fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T; fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T;

View file

@ -1262,9 +1262,6 @@ mod test {
self.add_unknown_to_log(); f(); self.add_unknown_to_log(); f();
} }
fn emit_rec(&self, f: &fn()) {
self.add_unknown_to_log(); f();
}
fn emit_struct(&self, name: &str, +len: uint, f: &fn()) { fn emit_struct(&self, name: &str, +len: uint, f: &fn()) {
self.add_to_log(CallToEmitStruct (name.to_str(),len)); f(); self.add_to_log(CallToEmitStruct (name.to_str(),len)); f();
} }