use crate::integer::Integer;
use crate::natural::conversion::string::from_sci_string::{
FromSciStringHelper, from_sci_string_with_options_helper,
};
use malachite_base::num::basic::traits::One;
use malachite_base::num::conversion::string::options::FromSciStringOptions;
use malachite_base::num::conversion::traits::{FromSciString, FromStringBase};
impl FromSciStringHelper for Integer {
fn parse_int(mut cs: &[u8], base: u8) -> Option<Self> {
if let Some(b'+') = cs.first() {
cs = &cs[1..];
match cs {
[] | [b'+' | b'-', ..] => return None,
_ => {}
}
}
Self::from_string_base(base, core::str::from_utf8(cs).ok()?)
}
fn up_1(self, neg: bool) -> Option<Self> {
Some(if neg {
self - Self::ONE
} else {
self + Self::ONE
})
}
}
impl FromSciString for Integer {
#[inline]
fn from_sci_string_with_options(s: &str, options: FromSciStringOptions) -> Option<Self> {
from_sci_string_with_options_helper(s, options)
}
}