Implement some more ToJson's
This commit is contained in:
parent
a34f2642f1
commit
8cd8947cf3
|
@ -415,9 +415,9 @@ impl Blockchain {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Looks up a block in the chain and returns a reference to it
|
/// Looks up a block in the chain and returns the BlockchainNode containing it
|
||||||
pub fn get_block<'a>(&'a self, hash: Sha256dHash) -> Option<&'a Block> {
|
pub fn get_block<'a>(&'a self, hash: Sha256dHash) -> Option<&'a BlockchainNode> {
|
||||||
self.tree.lookup(&hash.as_uint256(), 256).as_ref().map(|node| &node.block)
|
self.tree.lookup(&hash.as_uint256(), 256).map(|node| &**node)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Locates a block in the chain and overwrites its txdata
|
/// Locates a block in the chain and overwrites its txdata
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
use std::char::from_digit;
|
use std::char::from_digit;
|
||||||
use std::io::IoResult;
|
use std::io::IoResult;
|
||||||
use serialize::{Encoder, Encodable};
|
use serialize::json;
|
||||||
|
|
||||||
use network::serialize::Serializable;
|
use network::serialize::Serializable;
|
||||||
use blockdata::opcodes;
|
use blockdata::opcodes;
|
||||||
|
@ -122,16 +122,16 @@ impl Script {
|
||||||
}
|
}
|
||||||
|
|
||||||
// User-facing serialization
|
// User-facing serialization
|
||||||
impl<S:Encoder<E>, E> Encodable<S, E> for Script {
|
impl json::ToJson for Script {
|
||||||
// TODO: put this in a struct alongside an opcode decode
|
// TODO: put this in a struct alongside an opcode decode
|
||||||
fn encode(&self, s: &mut S) -> Result<(), E> {
|
fn to_json(&self) -> json::Json {
|
||||||
let &Script(ref raw) = self;
|
let &Script(ref raw) = self;
|
||||||
let mut ret = String::new();
|
let mut ret = String::new();
|
||||||
for dat in raw.iter() {
|
for dat in raw.iter() {
|
||||||
ret.push_char(from_digit((dat / 0x10) as uint, 16).unwrap());
|
ret.push_char(from_digit((dat / 0x10) as uint, 16).unwrap());
|
||||||
ret.push_char(from_digit((dat & 0x0f) as uint, 16).unwrap());
|
ret.push_char(from_digit((dat & 0x0f) as uint, 16).unwrap());
|
||||||
}
|
}
|
||||||
s.emit_str(ret.as_slice())
|
json::String(ret)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,8 +71,11 @@ pub struct Transaction {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_serializable!(TxIn, prev_hash, prev_index, script_sig, sequence)
|
impl_serializable!(TxIn, prev_hash, prev_index, script_sig, sequence)
|
||||||
|
impl_json!(TxIn, prev_hash, prev_index, script_sig, sequence)
|
||||||
impl_serializable!(TxOut, value, script_pubkey)
|
impl_serializable!(TxOut, value, script_pubkey)
|
||||||
|
impl_json!(TxOut, value, script_pubkey)
|
||||||
impl_serializable!(Transaction, version, input, output, lock_time)
|
impl_serializable!(Transaction, version, input, output, lock_time)
|
||||||
|
impl_json!(Transaction, version, input, output, lock_time)
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_txin() {
|
fn test_txin() {
|
||||||
|
|
|
@ -50,6 +50,7 @@ macro_rules! impl_json(
|
||||||
use std::collections::TreeMap;
|
use std::collections::TreeMap;
|
||||||
use serialize::json::{ToJson, Object};
|
use serialize::json::{ToJson, Object};
|
||||||
let mut ret = TreeMap::new();
|
let mut ret = TreeMap::new();
|
||||||
|
ret.insert("hash".to_string(), self.bitcoin_hash().to_json());
|
||||||
$( ret.insert(stringify!($field).to_string(), self.$field.to_json()); )+
|
$( ret.insert(stringify!($field).to_string(), self.$field.to_json()); )+
|
||||||
Object(ret)
|
Object(ret)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue