value: add as_i16, as_u16, as_i64, and as_u64 helper methods

This commit is contained in:
Matt Bilker
2018-12-12 20:56:37 +00:00
parent cdaadec6aa
commit 647d055d84

View File

@@ -503,6 +503,20 @@ macro_rules! construct_types {
}
}
pub fn as_i16(&self) -> Result<i16, KbinError> {
match self {
Value::S16(ref n) => Ok(*n),
value => Err(KbinErrorKind::ValueTypeMismatch(StandardType::S16, value.clone()).into()),
}
}
pub fn as_u16(&self) -> Result<u16, KbinError> {
match self {
Value::U16(ref n) => Ok(*n),
value => Err(KbinErrorKind::ValueTypeMismatch(StandardType::U16, value.clone()).into()),
}
}
pub fn as_i32(&self) -> Result<i32, KbinError> {
match self {
Value::S32(ref n) => Ok(*n),
@@ -517,6 +531,20 @@ macro_rules! construct_types {
}
}
pub fn as_i64(&self) -> Result<i64, KbinError> {
match self {
Value::S64(ref n) => Ok(*n),
value => Err(KbinErrorKind::ValueTypeMismatch(StandardType::S64, value.clone()).into()),
}
}
pub fn as_u64(&self) -> Result<u64, KbinError> {
match self {
Value::U64(ref n) => Ok(*n),
value => Err(KbinErrorKind::ValueTypeMismatch(StandardType::U64, value.clone()).into()),
}
}
pub fn as_slice(&self) -> Result<&[u8], KbinError> {
match self {
Value::Binary(ref data) => Ok(data),