Refactored Slicable (#324)

* Refactored Slicable

* Docs

* Wasm build

* Wasm build

* Renamed traits

* Review nits

* Renamed Slicable as well
This commit is contained in:
Arkadiy Paronyan
2018-07-15 22:51:21 +02:00
committed by Gav Wood
parent e1c90b573b
commit 1e1ddf61f2
21 changed files with 157 additions and 175 deletions
@@ -33,7 +33,7 @@ extern crate wee_alloc;
extern crate tiny_keccak;
extern crate pwasm_libc;
use parachain::codec::{Slicable, Input};
use parachain::codec::{Decode, Encode, Input, Output};
#[cfg(not(feature = "std"))]
mod wasm;
@@ -41,9 +41,6 @@ mod wasm;
#[cfg(not(feature = "std"))]
pub use wasm::*;
#[cfg(not(feature = "std"))]
use alloc::vec::Vec;
// Define global allocator.
#[cfg(not(feature = "std"))]
#[global_allocator]
@@ -60,22 +57,20 @@ struct HeadData {
post_state: [u8; 32],
}
impl Slicable for HeadData {
fn encode(&self) -> Vec<u8> {
let mut v = Vec::new();
self.number.using_encoded(|s| v.extend(s));
self.parent_hash.using_encoded(|s| v.extend(s));
self.post_state.using_encoded(|s| v.extend(s));
v
impl Encode for HeadData {
fn encode_to<T: Output>(&self, dest: &mut T) {
dest.push(&self.number);
dest.push(&self.parent_hash);
dest.push(&self.post_state);
}
}
impl Decode for HeadData {
fn decode<I: Input>(input: &mut I) -> Option<Self> {
Some(HeadData {
number: Slicable::decode(input)?,
parent_hash: Slicable::decode(input)?,
post_state: Slicable::decode(input)?,
number: Decode::decode(input)?,
parent_hash: Decode::decode(input)?,
post_state: Decode::decode(input)?,
})
}
}
@@ -89,20 +84,18 @@ struct BlockData {
add: u64,
}
impl Slicable for BlockData {
fn encode(&self) -> Vec<u8> {
let mut v = Vec::new();
self.state.using_encoded(|s| v.extend(s));
self.add.using_encoded(|s| v.extend(s));
v
impl Encode for BlockData {
fn encode_to<T: Output>(&self, dest: &mut T) {
dest.push(&self.state);
dest.push(&self.add);
}
}
impl Decode for BlockData {
fn decode<I: Input>(input: &mut I) -> Option<Self> {
Some(BlockData {
state: Slicable::decode(input)?,
add: Slicable::decode(input)?,
state: Decode::decode(input)?,
add: Decode::decode(input)?,
})
}
}
@@ -18,7 +18,7 @@
use core::{intrinsics, panic, alloc};
use parachain::{self, ValidationResult};
use parachain::codec::Slicable;
use parachain::codec::{Encode, Decode};
use super::{HeadData, BlockData};
#[panic_implementation]