Struct brainfoamkit_lib::VirtualMachineBuilder
source · 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
Result
containing either aVirtualMachine
or 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.