Allow creation of a machine from string

This commit is contained in:
2018-05-23 16:06:22 +02:00
parent 133291a6d4
commit 1dcea9c05f
2 changed files with 18 additions and 2 deletions

View File

@@ -20,6 +20,13 @@ impl IJVMReader {
source: abc
})
}
pub fn new_from_string(source: String) -> IJVMReader {
IJVMReader {
pointer: 0,
source: source.into_bytes(),
}
}
}
impl BinReadable for IJVMReader {

View File

@@ -52,8 +52,7 @@ impl Machine {
}
}
pub fn new_from_file(file: &str) -> Result<Machine> {
let mut reader = IJVMReader::new(file).unwrap();
pub fn new_from_reader(mut reader: IJVMReader) -> Result<Machine> {
let magic = reader.read_u32()?;
if magic != MAGIC_HEADER {
return Err("Invalid magic header");
@@ -72,6 +71,16 @@ impl Machine {
Ok(Machine::new(pool, text))
}
pub fn new_from_file(file: &str) -> Result<Machine> {
let reader = IJVMReader::new(file).unwrap();
Machine::new_from_reader(reader)
}
pub fn new_from_string(source: String) -> Result<Machine> {
let reader = IJVMReader::new_from_string(source);
Machine::new_from_reader(reader)
}
pub fn step(&mut self) -> Result<()> {
match self.block.read_op() {
Ok(Operation::Op(a, func)) => {