fn encode_method_map_entry(ecx: @e::EncodeContext,
ebml_w: writer::Encoder,
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) {
ebml_w.emit_arg(ecx, mme.self_arg);
}
impl read_method_map_entry_helper for reader::Decoder {
fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext)
-> method_map_entry {
- do self.read_rec {
+ do self.read_struct("method_map_entry", 3) {
method_map_entry {
self_arg: self.read_field(~"self_arg", 0u, || {
self.read_arg(xcx)
fn emit_tpbt(&self, ecx: @e::EncodeContext,
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_from_vec(*tpbt.bounds) |bs| {
self.emit_bounds(ecx, *bs);
fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext)
-> 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 {
bounds: self.read_field(~"bounds", 0u, || {
@self.read_to_vec(|| self.read_bounds(xcx) )
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 {
debug!("read_struct(name=%s)", name);
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_field(&self, name: &str, _idx: uint, f: &fn()) {
self._emit_label(name);
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()) {
self.wr.write_char('{');
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()) {
if len == 0 {
self.wr.write_str("{}");
} 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_option_some(&self, f: &fn()) { f(); }
}
-impl<S:serialize::Encoder> serialize::Encodable<S> for Json {
- fn encode(&self, s: &S) {
+impl<E: serialize::Encoder> serialize::Encodable<E> for Json {
+ fn encode(&self, e: &E) {
match *self {
- Number(v) => v.encode(s),
- String(ref v) => v.encode(s),
- Boolean(v) => v.encode(s),
- List(ref v) => v.encode(s),
+ Number(v) => v.encode(e),
+ String(ref v) => v.encode(e),
+ Boolean(v) => v.encode(e),
+ List(ref v) => v.encode(e),
Object(ref v) => {
- do s.emit_rec || {
+ do e.emit_struct("Object", v.len())|| {
let mut idx = 0;
for v.each |&(key, value)| {
- do s.emit_field(*key, idx) {
- value.encode(s);
+ do e.emit_field(*key, idx) {
+ value.encode(e);
}
idx += 1;
}
}
},
- Null => s.emit_nil(),
+ Null => e.emit_nil(),
}
}
}
}
}
- 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 {
debug!("read_struct()");
let value = f();
}
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();
match *top {
Object(ref obj) => {
fn emit_seq(&self, len: 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_field(&self, f_name: &str, f_idx: uint, f: &fn());
fn read_seq<T>(&self, f: &fn(uint) -> 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_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T;
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()) {
self.add_to_log(CallToEmitStruct (name.to_str(),len)); f();
}