aboutsummaryrefslogtreecommitdiff
path: root/vendor/serde_json/src/lexical/parse.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
committerValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
commita990de90fe41456a23e58bd087d2f107d321f3a1 (patch)
tree15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/serde_json/src/lexical/parse.rs
parent3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff)
downloadfparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz
fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip
Deleted vendor folder
Diffstat (limited to 'vendor/serde_json/src/lexical/parse.rs')
-rw-r--r--vendor/serde_json/src/lexical/parse.rs83
1 files changed, 0 insertions, 83 deletions
diff --git a/vendor/serde_json/src/lexical/parse.rs b/vendor/serde_json/src/lexical/parse.rs
deleted file mode 100644
index e3d7f1e..0000000
--- a/vendor/serde_json/src/lexical/parse.rs
+++ /dev/null
@@ -1,83 +0,0 @@
-// Adapted from https://github.com/Alexhuszagh/rust-lexical.
-
-use super::algorithm::*;
-use super::bhcomp::*;
-use super::digit::*;
-use super::exponent::*;
-use super::num::*;
-
-// PARSERS
-// -------
-
-/// Parse float for which the entire integer and fraction parts fit into a 64
-/// bit mantissa.
-pub fn parse_concise_float<F>(mantissa: u64, mant_exp: i32) -> F
-where
- F: Float,
-{
- if let Some(float) = fast_path(mantissa, mant_exp) {
- return float;
- }
-
- // Moderate path (use an extended 80-bit representation).
- let truncated = false;
- let (fp, valid) = moderate_path::<F>(mantissa, mant_exp, truncated);
- if valid {
- return fp.into_float::<F>();
- }
-
- let b = fp.into_downward_float::<F>();
- if b.is_special() {
- // We have a non-finite number, we get to leave early.
- return b;
- }
-
- // Slow path, fast path didn't work.
- let mut buffer = itoa::Buffer::new();
- let integer = buffer.format(mantissa).as_bytes();
- let fraction = &[];
- bhcomp(b, integer, fraction, mant_exp)
-}
-
-/// Parse float from extracted float components.
-///
-/// * `integer` - Slice containing the integer digits.
-/// * `fraction` - Slice containing the fraction digits.
-/// * `exponent` - Parsed, 32-bit exponent.
-///
-/// Precondition: The integer must not have leading zeros.
-pub fn parse_truncated_float<F>(integer: &[u8], mut fraction: &[u8], exponent: i32) -> F
-where
- F: Float,
-{
- // Trim trailing zeroes from the fraction part.
- while fraction.last() == Some(&b'0') {
- fraction = &fraction[..fraction.len() - 1];
- }
-
- // Calculate the number of truncated digits.
- let mut truncated = 0;
- let mut mantissa: u64 = 0;
- let mut iter = integer.iter().chain(fraction);
- for &c in &mut iter {
- mantissa = match add_digit(mantissa, to_digit(c).unwrap()) {
- Some(v) => v,
- None => {
- truncated = 1 + iter.count();
- break;
- }
- };
- }
-
- let mant_exp = mantissa_exponent(exponent, fraction.len(), truncated);
- let is_truncated = true;
-
- fallback_path(
- integer,
- fraction,
- mantissa,
- exponent,
- mant_exp,
- is_truncated,
- )
-}