use crate::types::VsfType;
use spirix::*;
use std::io::{Error, ErrorKind};
pub fn parse_spirix_scalar(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 2 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for Spirix scalar markers",
));
}
let f_marker = data[*pointer];
let e_marker = data[*pointer + 1];
*pointer += 2;
match (f_marker, e_marker) {
(b'3', b'3') => parse_scalar_f3e3(data, pointer),
(b'3', b'4') => parse_scalar_f3e4(data, pointer),
(b'3', b'5') => parse_scalar_f3e5(data, pointer),
(b'3', b'6') => parse_scalar_f3e6(data, pointer),
(b'3', b'7') => parse_scalar_f3e7(data, pointer),
(b'4', b'3') => parse_scalar_f4e3(data, pointer),
(b'4', b'4') => parse_scalar_f4e4(data, pointer),
(b'4', b'5') => parse_scalar_f4e5(data, pointer),
(b'4', b'6') => parse_scalar_f4e6(data, pointer),
(b'4', b'7') => parse_scalar_f4e7(data, pointer),
(b'5', b'3') => parse_scalar_f5e3(data, pointer),
(b'5', b'4') => parse_scalar_f5e4(data, pointer),
(b'5', b'5') => parse_scalar_f5e5(data, pointer),
(b'5', b'6') => parse_scalar_f5e6(data, pointer),
(b'5', b'7') => parse_scalar_f5e7(data, pointer),
(b'6', b'3') => parse_scalar_f6e3(data, pointer),
(b'6', b'4') => parse_scalar_f6e4(data, pointer),
(b'6', b'5') => parse_scalar_f6e5(data, pointer),
(b'6', b'6') => parse_scalar_f6e6(data, pointer),
(b'6', b'7') => parse_scalar_f6e7(data, pointer),
(b'7', b'3') => parse_scalar_f7e3(data, pointer),
(b'7', b'4') => parse_scalar_f7e4(data, pointer),
(b'7', b'5') => parse_scalar_f7e5(data, pointer),
(b'7', b'6') => parse_scalar_f7e6(data, pointer),
(b'7', b'7') => parse_scalar_f7e7(data, pointer),
_ => Err(Error::new(
ErrorKind::InvalidData,
format!(
"Unsupported Spirix Scalar type: F{}E{}",
f_marker as char, e_marker as char
),
)),
}
}
pub fn parse_spirix_circle(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 2 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for Spirix circle markers",
));
}
let f_marker = data[*pointer];
let e_marker = data[*pointer + 1];
*pointer += 2;
match (f_marker, e_marker) {
(b'3', b'3') => parse_circle_f3e3(data, pointer),
(b'3', b'4') => parse_circle_f3e4(data, pointer),
(b'3', b'5') => parse_circle_f3e5(data, pointer),
(b'3', b'6') => parse_circle_f3e6(data, pointer),
(b'3', b'7') => parse_circle_f3e7(data, pointer),
(b'4', b'3') => parse_circle_f4e3(data, pointer),
(b'4', b'4') => parse_circle_f4e4(data, pointer),
(b'4', b'5') => parse_circle_f4e5(data, pointer),
(b'4', b'6') => parse_circle_f4e6(data, pointer),
(b'4', b'7') => parse_circle_f4e7(data, pointer),
(b'5', b'3') => parse_circle_f5e3(data, pointer),
(b'5', b'4') => parse_circle_f5e4(data, pointer),
(b'5', b'5') => parse_circle_f5e5(data, pointer),
(b'5', b'6') => parse_circle_f5e6(data, pointer),
(b'5', b'7') => parse_circle_f5e7(data, pointer),
(b'6', b'3') => parse_circle_f6e3(data, pointer),
(b'6', b'4') => parse_circle_f6e4(data, pointer),
(b'6', b'5') => parse_circle_f6e5(data, pointer),
(b'6', b'6') => parse_circle_f6e6(data, pointer),
(b'6', b'7') => parse_circle_f6e7(data, pointer),
(b'7', b'3') => parse_circle_f7e3(data, pointer),
(b'7', b'4') => parse_circle_f7e4(data, pointer),
(b'7', b'5') => parse_circle_f7e5(data, pointer),
(b'7', b'6') => parse_circle_f7e6(data, pointer),
(b'7', b'7') => parse_circle_f7e7(data, pointer),
_ => Err(Error::new(
ErrorKind::InvalidData,
format!(
"Unsupported Spirix Circle type: F{}E{}",
f_marker as char, e_marker as char
),
)),
}
}
pub fn parse_scalar_f3e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 2 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF3E3",
));
}
let fraction = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::s33(ScalarF3E3 { fraction, exponent }))
}
pub fn parse_scalar_f3e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 3 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF3E4",
));
}
let fraction = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::s34(ScalarF3E4 { fraction, exponent }))
}
pub fn parse_scalar_f3e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 5 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF3E5",
));
}
let fraction = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::s35(ScalarF3E5 { fraction, exponent }))
}
pub fn parse_scalar_f3e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 9 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF3E6",
));
}
let fraction = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::s36(ScalarF3E6 { fraction, exponent }))
}
pub fn parse_scalar_f3e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 17 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF3E7",
));
}
let fraction = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::s37(ScalarF3E7 { fraction, exponent }))
}
pub fn parse_scalar_f4e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 3 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF4E3",
));
}
let fraction = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::s43(ScalarF4E3 { fraction, exponent }))
}
pub fn parse_scalar_f4e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 4 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF4E4",
));
}
let fraction = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::s44(ScalarF4E4 { fraction, exponent }))
}
pub fn parse_scalar_f4e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 6 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF4E5",
));
}
let fraction = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::s45(ScalarF4E5 { fraction, exponent }))
}
pub fn parse_scalar_f4e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 10 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF4E6",
));
}
let fraction = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::s46(ScalarF4E6 { fraction, exponent }))
}
pub fn parse_scalar_f4e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 18 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF4E7",
));
}
let fraction = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::s47(ScalarF4E7 { fraction, exponent }))
}
pub fn parse_scalar_f5e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 5 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF5E3",
));
}
let fraction = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::s53(ScalarF5E3 { fraction, exponent }))
}
pub fn parse_scalar_f5e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 6 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF5E4",
));
}
let fraction = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::s54(ScalarF5E4 { fraction, exponent }))
}
pub fn parse_scalar_f5e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 8 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF5E5",
));
}
let fraction = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::s55(ScalarF5E5 { fraction, exponent }))
}
pub fn parse_scalar_f5e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 12 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF5E6",
));
}
let fraction = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::s56(ScalarF5E6 { fraction, exponent }))
}
pub fn parse_scalar_f5e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 20 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF5E7",
));
}
let fraction = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::s57(ScalarF5E7 { fraction, exponent }))
}
pub fn parse_scalar_f6e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 9 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF6E3",
));
}
let fraction = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::s63(ScalarF6E3 { fraction, exponent }))
}
pub fn parse_scalar_f6e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 10 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF6E4",
));
}
let fraction = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::s64(ScalarF6E4 { fraction, exponent }))
}
pub fn parse_scalar_f6e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 12 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF6E5",
));
}
let fraction = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::s65(ScalarF6E5 { fraction, exponent }))
}
pub fn parse_scalar_f6e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 16 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF6E6",
));
}
let fraction = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::s66(ScalarF6E6 { fraction, exponent }))
}
pub fn parse_scalar_f6e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 24 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF6E7",
));
}
let fraction = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::s67(ScalarF6E7 { fraction, exponent }))
}
pub fn parse_scalar_f7e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 17 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF7E3",
));
}
let fraction = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::s73(ScalarF7E3 { fraction, exponent }))
}
pub fn parse_scalar_f7e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 18 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF7E4",
));
}
let fraction = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::s74(ScalarF7E4 { fraction, exponent }))
}
pub fn parse_scalar_f7e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 20 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF7E5",
));
}
let fraction = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::s75(ScalarF7E5 { fraction, exponent }))
}
pub fn parse_scalar_f7e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 24 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF7E6",
));
}
let fraction = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::s76(ScalarF7E6 { fraction, exponent }))
}
pub fn parse_scalar_f7e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 32 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for ScalarF7E7",
));
}
let fraction = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::s77(ScalarF7E7 { fraction, exponent }))
}
pub fn parse_circle_f3e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 3 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF3E3",
));
}
let real = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let imaginary = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::c33(CircleF3E3 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f3e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 4 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF3E4",
));
}
let real = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let imaginary = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::c34(CircleF3E4 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f3e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 6 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF3E5",
));
}
let real = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let imaginary = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::c35(CircleF3E5 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f3e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 10 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF3E6",
));
}
let real = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let imaginary = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::c36(CircleF3E6 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f3e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 18 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF3E7",
));
}
let real = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let imaginary = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::c37(CircleF3E7 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f4e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 5 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF4E3",
));
}
let real = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let imaginary = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::c43(CircleF4E3 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f4e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 6 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF4E4",
));
}
let real = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let imaginary = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::c44(CircleF4E4 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f4e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 8 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF4E5",
));
}
let real = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let imaginary = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::c45(CircleF4E5 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f4e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 12 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF4E6",
));
}
let real = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let imaginary = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::c46(CircleF4E6 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f4e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 20 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF4E7",
));
}
let real = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let imaginary = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::c47(CircleF4E7 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f5e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 9 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF5E3",
));
}
let real = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let imaginary = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::c53(CircleF5E3 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f5e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 10 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF5E4",
));
}
let real = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let imaginary = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::c54(CircleF5E4 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f5e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 12 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF5E5",
));
}
let real = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let imaginary = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::c55(CircleF5E5 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f5e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 16 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF5E6",
));
}
let real = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let imaginary = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::c56(CircleF5E6 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f5e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 24 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF5E7",
));
}
let real = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let imaginary = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::c57(CircleF5E7 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f6e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 17 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF6E3",
));
}
let real = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let imaginary = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::c63(CircleF6E3 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f6e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 18 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF6E4",
));
}
let real = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let imaginary = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::c64(CircleF6E4 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f6e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 20 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF6E5",
));
}
let real = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let imaginary = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::c65(CircleF6E5 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f6e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 24 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF6E6",
));
}
let real = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let imaginary = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::c66(CircleF6E6 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f6e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 32 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF6E7",
));
}
let real = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let imaginary = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::c67(CircleF6E7 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f7e3(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 33 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF7E3",
));
}
let real = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let imaginary = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i8::from_be_bytes([data[*pointer]]);
*pointer += 1;
Ok(VsfType::c73(CircleF7E3 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f7e4(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 34 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF7E4",
));
}
let real = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let imaginary = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i16::from_be_bytes([data[*pointer + 0], data[*pointer + 1]]);
*pointer += 2;
Ok(VsfType::c74(CircleF7E4 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f7e5(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 36 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF7E5",
));
}
let real = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let imaginary = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i32::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
]);
*pointer += 4;
Ok(VsfType::c75(CircleF7E5 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f7e6(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 40 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF7E6",
));
}
let real = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let imaginary = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i64::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
]);
*pointer += 8;
Ok(VsfType::c76(CircleF7E6 {
real,
imaginary,
exponent,
}))
}
pub fn parse_circle_f7e7(data: &[u8], pointer: &mut usize) -> Result<VsfType, Error> {
if *pointer + 48 > data.len() {
return Err(Error::new(
ErrorKind::UnexpectedEof,
"Not enough data for CircleF7E7",
));
}
let real = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let imaginary = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
let exponent = i128::from_be_bytes([
data[*pointer + 0],
data[*pointer + 1],
data[*pointer + 2],
data[*pointer + 3],
data[*pointer + 4],
data[*pointer + 5],
data[*pointer + 6],
data[*pointer + 7],
data[*pointer + 8],
data[*pointer + 9],
data[*pointer + 10],
data[*pointer + 11],
data[*pointer + 12],
data[*pointer + 13],
data[*pointer + 14],
data[*pointer + 15],
]);
*pointer += 16;
Ok(VsfType::c77(CircleF7E7 {
real,
imaginary,
exponent,
}))
}