f()
}
- fn read_tup<T>(&self, len: uint, f: &fn() -> T) -> T {
- debug!("read_tup(len=%u)", len);
- f()
- }
-
- fn read_tup_elt<T>(&self, idx: uint, f: &fn() -> T) -> T {
- debug!("read_tup_elt(idx=%u)", idx);
- f()
- }
-
#[cfg(stage0)]
fn read_option<T>(&self, f: &fn(bool) -> T) -> T {
debug!("read_option()");
f()
}
- fn emit_tup(&self, _len: uint, f: &fn()) { f() }
- fn emit_tup_elt(&self, _idx: uint, f: &fn()) { f() }
-
fn emit_option(&self, f: &fn()) {
self.emit_enum("Option", f);
}
f();
}
- fn emit_tup(&self, len: uint, f: &fn()) {
- self.emit_seq(len, f);
- }
- fn emit_tup_elt(&self, idx: uint, f: &fn()) {
- self.emit_seq_elt(idx, f)
- }
-
fn emit_option(&self, f: &fn()) { f(); }
fn emit_option_none(&self) { self.emit_nil(); }
fn emit_option_some(&self, f: &fn()) { f(); }
self.wr.write_str(": ");
f();
}
- fn emit_tup(&self, sz: uint, f: &fn()) {
- self.emit_seq(sz, f);
- }
- fn emit_tup_elt(&self, idx: uint, f: &fn()) {
- self.emit_seq_elt(idx, f)
- }
fn emit_option(&self, f: &fn()) { f(); }
fn emit_option_none(&self) { self.emit_nil(); }
}
}
- fn read_tup<T>(&self, len: uint, f: &fn() -> T) -> T {
- debug!("read_tup(len=%u)", len);
- let value = f();
- self.pop();
- value
- }
-
- fn read_tup_elt<T>(&self, idx: uint, f: &fn() -> T) -> T {
- debug!("read_tup_elt(idx=%u)", idx);
- match *self.peek() {
- List(ref list) => {
- self.stack.push(&list[idx]);
- f()
- }
- _ => fail!(~"not a list")
- }
- }
-
fn read_option<T>(&self, f: &fn(bool) -> T) -> T {
match *self.peek() {
Null => { self.pop(); f(false) }
fn emit_struct(&self, name: &str, _len: uint, f: &fn());
fn emit_field(&self, f_name: &str, f_idx: uint, f: &fn());
- fn emit_tup(&self, len: uint, f: &fn());
- fn emit_tup_elt(&self, idx: uint, f: &fn());
-
// Specialized types:
fn emit_option(&self, f: &fn());
fn emit_option_none(&self);
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_tup<T>(&self, sz: uint, f: &fn() -> T) -> T;
- fn read_tup_elt<T>(&self, idx: uint, f: &fn() -> T) -> T;
-
// Specialized types:
fn read_option<T>(&self, f: &fn(bool) -> T) -> T;
}
self.add_to_log(CallToEmitField (name.to_str(),idx)); f();
}
- fn emit_tup(&self, +_len: uint, f: &fn()) {
- self.add_unknown_to_log(); f();
- }
- fn emit_tup_elt(&self, +_idx: uint, f: &fn()) {
- self.add_unknown_to_log(); f();
- }
-
fn emit_option(&self, f: &fn()) {
self.add_to_log(CallToEmitOption);
f();