use thiserror::Error;
use crate::{
opcode::{AccessType, DataType},
operand::Operand,
};
#[derive(Debug, Error)]
pub enum Error {
#[error("Invalid opcode: {0:#X}")]
InvalidOpcode(u16),
#[error("Invalid opcode: {0}")]
InvalidOpcodeString(String),
#[error("Invalid indexed operand: {0:?}")]
InvalidIndexedOperand(Operand),
#[error("Invalid access type and data size: access = {0:?}, size = {0:?}")]
InvalidAccessSize(AccessType, DataType),
#[error("Unimpleneted feature: {0}")]
Unimplemented(&'static str),
#[error("I/O error: {0}")]
IoError(#[from] std::io::Error),
}
pub type Result<T> = std::result::Result<T, Error>;