data builder doc effort

This commit is contained in:
NikVolf
2018-01-09 12:40:04 +03:00
parent b24ca8ee2d
commit 6d55afe3ee
2 changed files with 7 additions and 0 deletions

View File

@ -1,6 +1,7 @@
use super::invoke::{Identity, Invoke}; use super::invoke::{Identity, Invoke};
use elements; use elements;
/// Data segment builder
pub struct DataSegmentBuilder<F=Identity> { pub struct DataSegmentBuilder<F=Identity> {
callback: F, callback: F,
// todo: add mapper once multiple memory refs possible // todo: add mapper once multiple memory refs possible
@ -10,12 +11,14 @@ pub struct DataSegmentBuilder<F=Identity> {
} }
impl DataSegmentBuilder { impl DataSegmentBuilder {
/// New data segment builder
pub fn new() -> Self { pub fn new() -> Self {
DataSegmentBuilder::with_callback(Identity) DataSegmentBuilder::with_callback(Identity)
} }
} }
impl<F> DataSegmentBuilder<F> { impl<F> DataSegmentBuilder<F> {
/// New data segment builder inside the chain context
pub fn with_callback(callback: F) -> Self { pub fn with_callback(callback: F) -> Self {
DataSegmentBuilder { DataSegmentBuilder {
callback: callback, callback: callback,
@ -25,11 +28,13 @@ impl<F> DataSegmentBuilder<F> {
} }
} }
/// Set offset initialization opcode. `End` opcode will be added automatically.
pub fn offset(mut self, opcode: elements::Opcode) -> Self { pub fn offset(mut self, opcode: elements::Opcode) -> Self {
self.offset = elements::InitExpr::new(vec![opcode, elements::Opcode::End]); self.offset = elements::InitExpr::new(vec![opcode, elements::Opcode::End]);
self self
} }
/// Set the bytes value of the segment
pub fn value(mut self, value: Vec<u8>) -> Self { pub fn value(mut self, value: Vec<u8>) -> Self {
self.value = value; self.value = value;
self self
@ -37,6 +42,7 @@ impl<F> DataSegmentBuilder<F> {
} }
impl<F> DataSegmentBuilder<F> where F: Invoke<elements::DataSegment> { impl<F> DataSegmentBuilder<F> where F: Invoke<elements::DataSegment> {
/// Finish current builder, spawning resulting struct
pub fn build(self) -> F::Result { pub fn build(self) -> F::Result {
self.callback.invoke( self.callback.invoke(
elements::DataSegment::new( elements::DataSegment::new(

View File

@ -22,3 +22,4 @@ pub use self::import::{import, ImportBuilder};
pub use self::invoke::Identity; pub use self::invoke::Identity;
pub use self::memory::MemoryBuilder; pub use self::memory::MemoryBuilder;
pub use self::module::{module, from_module, ModuleBuilder}; pub use self::module::{module, from_module, ModuleBuilder};
pub use self::table::{TableBuilder, TableDefinition, TableEntryDefinition};