pub struct VirtualMachineBuilder<R>where
R: VMReader,{ /* private fields */ }Expand description
VirtualMachineBuilder is a builder for the VirtualMachine struct.
This builder allows you to set the program and tape_size for a
VirtualMachine before building it. Both program and tape_size are
optional. If they’re not provided, the VirtualMachine will be initialized
with default values.
§Examples
use brainfoamkit_lib::{
Program,
VMReader,
VirtualMachineBuilder,
};
let program = Program::default();
let input_device = std::io::stdin();
let vm = VirtualMachineBuilder::new()
.program(program)
.tape_size(1024)
.input_device(input_device)
.build()
.unwrap();Implementations§
Source§impl<R> VirtualMachineBuilder<R>where
R: VMReader,
impl<R> VirtualMachineBuilder<R>where
R: VMReader,
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Creates a new VirtualMachineBuilder with empty values.
This function returns a new VirtualMachineBuilder with program and
tape_size set to None. These values can be set later using the
builder’s methods.
§Returns
A new VirtualMachineBuilder struct with empty values.
§Examples
use std::io::Stdin;
use brainfoamkit_lib::{
VMReader,
VirtualMachineBuilder,
};
let builder = VirtualMachineBuilder::<Stdin>::new();Sourcepub fn program(self, program: Program) -> Self
pub fn program(self, program: Program) -> Self
Set the program to be run by the virtual machine.
§Arguments
program- The program to be run by the virtual machine.
§Returns
- Builder by value with the program set.
§Examples
use brainfoamkit_lib::{
Program,
VMReader,
VirtualMachineBuilder,
};
let input_device = std::io::stdin();
let program = Program::from("++++++[>++++++++++<-]>+++++.");
let vm = VirtualMachineBuilder::new()
.input_device(input_device)
.program(program)
.build()
.unwrap();
assert_eq!(vm.program(), Program::from("++++++[>++++++++++<-]>+++++."));Sourcepub const fn tape_size(self, tape_size: usize) -> Self
pub const fn tape_size(self, tape_size: usize) -> Self
Set the size of the tape to be used by the virtual machine. The default size is 30,000.
§Arguments
tape_size- The size of the tape to be used by the virtual machine.
§Returns
- Builder by value with the tape size set.
§Examples
use brainfoamkit_lib::{
VMReader,
VirtualMachineBuilder,
};
let input_device = std::io::stdin();
let vm = VirtualMachineBuilder::new()
.input_device(input_device)
.tape_size(100)
.build()
.unwrap();
assert_eq!(vm.length(), 100);Sourcepub fn input_device(self, input_device: R) -> Self
pub fn input_device(self, input_device: R) -> Self
Set the input device to be used by the virtual machine.
The default input device is stdin.
§Arguments
input_device- The input device to be used by the virtual machine.
§Returns
- Builder by value with the input device set.
§Examples
use brainfoamkit_lib::{
VMReader,
VirtualMachineBuilder,
};
let input_device = std::io::stdin();
let mut vm = VirtualMachineBuilder::new()
.input_device(input_device)
.build()
.unwrap();
assert_eq!(
vm.input_device().get_vmreader_type(),
brainfoamkit_lib::VMReaderType::Stdin
);Sourcepub fn build(self) -> Result<VirtualMachine<R>>
pub fn build(self) -> Result<VirtualMachine<R>>
Build the virtual machine.
§Returns
- A
Resultcontaining either aVirtualMachineor anError.
§Examples
use brainfoamkit_lib::{
Program,
VMReader,
VirtualMachineBuilder,
};
let input_device = std::io::stdin();
let program = Program::from("++++++[>++++++++++<-]>+++++.");
let vm = VirtualMachineBuilder::new()
.program(program)
.tape_size(100)
.input_device(input_device)
.build();§Errors
- If the input device is not set, this function will return an error.