Allow creation of a machine from string
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)) => {
|
||||
|
||||
Reference in New Issue
Block a user