Skip to content

Commit fc582bc

Browse files
committed
Merge remote-tracking branch 'mneumann/f-serialize'
2 parents 76bcfe8 + 2b6c456 commit fc582bc

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

src/libstd/ebml.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ pub mod reader {
379379
f()
380380
}
381381

382-
fn read_struct<T>(&self, name: &str, f: fn() -> T) -> T {
382+
fn read_struct<T>(&self, name: &str, _len: uint, f: fn() -> T) -> T {
383383
debug!("read_struct(name=%s)", name);
384384
f()
385385
}
@@ -658,7 +658,7 @@ pub mod writer {
658658
}
659659

660660
fn emit_rec(&self, f: fn()) { f() }
661-
fn emit_struct(&self, _name: &str, f: fn()) { f() }
661+
fn emit_struct(&self, _name: &str, _len: uint, f: fn()) { f() }
662662
fn emit_field(&self, name: &str, _idx: uint, f: fn()) {
663663
self._emit_label(name);
664664
f()

src/libstd/json.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ pub impl Encoder: serialize::Encoder {
157157
f();
158158
self.wr.write_char('}');
159159
}
160-
fn emit_struct(&self, _name: &str, f: fn()) {
160+
fn emit_struct(&self, _name: &str, _len: uint, f: fn()) {
161161
self.wr.write_char('{');
162162
f();
163163
self.wr.write_char('}');
@@ -270,7 +270,7 @@ pub impl PrettyEncoder: serialize::Encoder {
270270
self.indent -= 2;
271271
self.wr.write_char('}');
272272
}
273-
fn emit_struct(&self, _name: &str, f: fn()) {
273+
fn emit_struct(&self, _name: &str, _len: uint, f: fn()) {
274274
self.emit_rec(f)
275275
}
276276
fn emit_field(&self, name: &str, idx: uint, f: fn()) {
@@ -870,7 +870,7 @@ pub impl Decoder: serialize::Decoder {
870870
move value
871871
}
872872

873-
fn read_struct<T>(&self, _name: &str, f: fn() -> T) -> T {
873+
fn read_struct<T>(&self, _name: &str, _len: uint, f: fn() -> T) -> T {
874874
debug!("read_struct()");
875875
let value = f();
876876
self.pop();

src/libstd/prettyprint.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ pub impl Serializer: serialize::Encoder {
162162
self.wr.write_str(~"}");
163163
}
164164

165-
fn emit_struct(&self, name: &str, f: fn()) {
165+
fn emit_struct(&self, name: &str, _len: uint, f: fn()) {
166166
self.wr.write_str(fmt!("%s {", name));
167167
f();
168168
self.wr.write_str(~"}");

src/libstd/serialize.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub trait Encoder {
5858
fn emit_vec_elt(&self, idx: uint, f: fn());
5959

6060
fn emit_rec(&self, f: fn());
61-
fn emit_struct(&self, name: &str, f: fn());
61+
fn emit_struct(&self, name: &str, _len: uint, f: fn());
6262
fn emit_field(&self, f_name: &str, f_idx: uint, f: fn());
6363

6464
fn emit_tup(&self, len: uint, f: fn());
@@ -99,7 +99,7 @@ pub trait Decoder {
9999
fn read_vec_elt<T>(&self, idx: uint, f: fn() -> T) -> T;
100100

101101
fn read_rec<T>(&self, f: fn() -> T) -> T;
102-
fn read_struct<T>(&self, name: &str, f: fn() -> T) -> T;
102+
fn read_struct<T>(&self, name: &str, _len: uint, f: fn() -> T) -> T;
103103
fn read_field<T>(&self, name: &str, idx: uint, f: fn() -> T) -> T;
104104

105105
fn read_tup<T>(&self, sz: uint, f: fn() -> T) -> T;

src/libsyntax/ext/auto_encode.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ would generate two implementations like:
2525
2626
impl<S: Encoder> node_id: Encodable<S> {
2727
fn encode(s: &S) {
28-
do s.emit_struct("Node") {
28+
do s.emit_struct("Node", 1) {
2929
s.emit_field("id", 0, || s.emit_uint(self))
3030
}
3131
}
3232
}
3333
3434
impl<D: Decoder> node_id: Decodable {
3535
static fn decode(d: &D) -> Node {
36-
do d.read_struct("Node") {
36+
do d.read_struct("Node", 1) {
3737
Node {
3838
id: d.read_field(~"x", 0, || decode(d))
3939
}
@@ -709,6 +709,7 @@ fn mk_struct_ser_impl(
709709
),
710710
~[
711711
cx.lit_str(span, @cx.str_of(ident)),
712+
cx.lit_uint(span, vec::len(fields)),
712713
cx.lambda_stmts(span, fields),
713714
]
714715
);
@@ -735,6 +736,7 @@ fn mk_struct_deser_impl(
735736
),
736737
~[
737738
cx.lit_str(span, @cx.str_of(ident)),
739+
cx.lit_uint(span, vec::len(fields)),
738740
cx.lambda_expr(
739741
cx.expr(
740742
span,

0 commit comments

Comments
 (0)