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

View File

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