Use names more similar to C++ runtime

master
Bradlee Speice 2019-04-22 15:46:18 -04:00
parent f9ae7b76cb
commit d8f783e85d
2 changed files with 14 additions and 14 deletions

View File

@ -1,5 +1,5 @@
[package] [package]
name = "kaitai_runtime" name = "kaitai"
version = "0.1.0" version = "0.1.0"
authors = ["Bradlee Speice <bradlee@speice.io>"] authors = ["Bradlee Speice <bradlee@speice.io>"]
edition = "2018" edition = "2018"

View File

@ -1,34 +1,34 @@
use std::io; use std::io;
#[derive(Debug)] #[derive(Debug)]
pub enum KaitaiError<'a> { pub enum KError<'a> {
InvalidContents { actual: &'a [u8] }, InvalidContents { actual: &'a [u8] },
IoError(io::Error), IoError(io::Error),
UnknownEnum(u64), UnknownEnum(u64),
} }
impl<'a> From<io::Error> for KaitaiError<'a> { impl<'a> From<io::Error> for KError<'a> {
fn from(e: io::Error) -> Self { fn from(e: io::Error) -> Self {
KaitaiError::IoError(e) KError::IoError(e)
} }
} }
pub type Result<'a, T> = std::result::Result<T, KaitaiError<'a>>; pub type KResult<'a, T> = Result<T, KError<'a>>;
pub trait KaitaiStruct<'a> { pub trait KStruct<'a> {
type Parent: ?KaitaiStruct<'a>; type Parent: ?KStruct<'a>;
type Root: KaitaiStruct<'a>; type Root: KStruct<'a>;
/// Create a new instance of this struct; if we are the root node, /// Create a new instance of this struct; if we are the root node,
/// then both `_parent` and `_root` will be `None`. /// then both `_parent` and `_root` will be `None`.
fn new(_parent: Option<&'a Self::Parent>, _root: Option<&'a Self::Root>) -> Result<'a, Self> fn new(_parent: Option<&'a Self::Parent>, _root: Option<&'a Self::Root>) -> KResult<'a, Self>
where where
Self: Sized; Self: Sized;
fn read<S: KaitaiStream>(&mut self, stream: &mut S) -> Result<'a, ()>; fn read<S: KStream>(&mut self, stream: &mut S) -> KResult<'a, ()>;
} }
pub trait KaitaiStream { pub trait KStream {
fn is_eof(&self) -> io::Result<bool>; fn is_eof(&self) -> io::Result<bool>;
fn seek(&mut self, position: u64) -> io::Result<()>; fn seek(&mut self, position: u64) -> io::Result<()>;
fn pos(&self) -> io::Result<u64>; fn pos(&self) -> io::Result<u64>;
@ -70,7 +70,7 @@ pub trait KaitaiStream {
/// Verify a magic sequence occurs in the file. Because the size is known at compile-time /// Verify a magic sequence occurs in the file. Because the size is known at compile-time
/// (and is generally very small), we ask that our caller pass in a buffer for us. /// (and is generally very small), we ask that our caller pass in a buffer for us.
fn ensure_fixed_contents(&mut self, expected: &[u8], buf: &mut [u8]) -> Result<&[u8]> { fn ensure_fixed_contents(&mut self, expected: &[u8], buf: &mut [u8]) -> KResult<&[u8]> {
let actual = self.read_bytes(buf, expected.len())?; let actual = self.read_bytes(buf, expected.len())?;
if actual == expected { if actual == expected {
Ok(actual) Ok(actual)
@ -78,7 +78,7 @@ pub trait KaitaiStream {
// Return what the actual contents were; our caller provided us // Return what the actual contents were; our caller provided us
// what was expected so we don't need to return it, and it makes // what was expected so we don't need to return it, and it makes
// the lifetimes way easier // the lifetimes way easier
Err(KaitaiError::InvalidContents { actual }) Err(KError::InvalidContents { actual })
} }
} }
@ -132,7 +132,7 @@ impl<'a> From<&'a [u8]> for BytesReader<'a> {
BytesReader::new(b) BytesReader::new(b)
} }
} }
impl<'a> KaitaiStream for BytesReader<'a> { impl<'a> KStream for BytesReader<'a> {
fn is_eof(&self) -> io::Result<bool> { fn is_eof(&self) -> io::Result<bool> {
unimplemented!() unimplemented!()
} }