#![no_std]
#[macro_use]
extern crate derive_more;
pub mod array;
pub mod compression;
pub mod context;
pub mod dynamic;
pub mod elf;
pub mod group;
pub mod hash;
pub mod ident;
pub mod interp;
pub mod note;
pub mod program;
pub mod rel;
pub mod rela;
pub mod section;
pub mod shndx;
pub mod strtab;
pub mod symtab;
mod utils;
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Class {
Class32 = 1,
Class64 = 2,
}
impl TryFrom<u8> for Class {
type Error = ();
fn try_from(value: u8) -> Result<Self, Self::Error> {
use Class::*;
match value {
1 => Ok(Class32),
2 => Ok(Class64),
_ => Err(()),
}
}
}
impl From<Class> for u8 {
fn from(value: Class) -> Self {
value as u8
}
}
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Data {
Little = 1,
Big = 2,
}
impl TryFrom<u8> for Data {
type Error = ();
fn try_from(value: u8) -> Result<Self, Self::Error> {
use Data::*;
match value {
1 => Ok(Little),
2 => Ok(Big),
_ => Err(()),
}
}
}
impl From<Data> for u8 {
fn from(value: Data) -> Self {
value as u8
}
}
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Version {
One = 1,
}
impl TryFrom<u8> for Version {
type Error = ();
fn try_from(value: u8) -> Result<Self, Self::Error> {
use Version::*;
match value {
1 => Ok(One),
_ => Err(()),
}
}
}
impl From<Version> for u8 {
fn from(value: Version) -> Self {
value as u8
}
}