use super::traits::{EncodeNumber, EncodeNumberInclusive};
#[cfg(feature = "text")]
use crate::text_encoding::encode_text;
use crate::types::{EtType, VsfType};
pub fn hash_placeholder(hash_type: u8, len: usize) -> Vec<u8> {
let mut bytes = vec![b'h', hash_type];
bytes.extend_from_slice(&(len - 1).encode_number());
bytes.resize(bytes.len() + len, 0);
bytes
}
impl VsfType {
pub fn flatten(&self) -> Vec<u8> {
match self {
VsfType::u0(value) => {
vec![b'u', if *value { 255 } else { 0 }]
}
VsfType::u(value, inclusive) => {
if *inclusive {
value.encode_usize_inclusive()
} else {
let mut flat = vec![b'u'];
flat.extend_from_slice(&value.encode_number());
flat
}
}
VsfType::u3(value) => vec![b'u', b'3', *value],
VsfType::u4(value) => {
let mut flat = vec![b'u'];
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::u5(value) => {
let mut flat = vec![b'u'];
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::u6(value) => {
let mut flat = vec![b'u'];
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::u7(value) => {
let mut flat = vec![b'u'];
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::i(value) => {
let mut flat = vec![b'i'];
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::i3(value) => {
let bytes = value.to_be_bytes();
vec![b'i', b'3', bytes[0]]
}
VsfType::i4(value) => {
let bytes = value.to_be_bytes();
vec![b'i', b'4', bytes[0], bytes[1]]
}
VsfType::i5(value) => {
let bytes = value.to_be_bytes();
vec![b'i', b'5', bytes[0], bytes[1], bytes[2], bytes[3]]
}
VsfType::i6(value) => {
let bytes = value.to_be_bytes();
vec![
b'i', b'6', bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
bytes[6], bytes[7],
]
}
VsfType::i7(value) => {
let bytes = value.to_be_bytes();
vec![
b'i', b'7', bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
bytes[6], bytes[7], bytes[8], bytes[9], bytes[10], bytes[11], bytes[12],
bytes[13], bytes[14], bytes[15],
]
}
VsfType::f5(value) => {
let bytes = value.to_be_bytes();
vec![b'f', b'5', bytes[0], bytes[1], bytes[2], bytes[3]]
}
VsfType::f6(value) => {
let bytes = value.to_be_bytes();
vec![
b'f', b'6', bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
bytes[6], bytes[7],
]
}
VsfType::j5(value) => {
let mut flat = Vec::new();
flat.push(b'j');
flat.push(b'5');
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
flat
}
VsfType::j6(value) => {
let mut flat = Vec::new();
flat.push(b'j');
flat.push(b'6');
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
flat
}
VsfType::x(value) => {
#[cfg(feature = "text")]
{
let mut flat = Vec::new();
flat.push(b'x');
let encoded_text = encode_text(value);
let char_count = value.chars().count();
flat.extend_from_slice(&char_count.encode_number());
flat.extend_from_slice(&encoded_text);
flat
}
#[cfg(not(feature = "text"))]
{
panic!(
"VsfType::x requires 'text' feature for Huffman compression. \
Use VsfType::l for ASCII text instead. Message: '{}'",
value
);
}
}
VsfType::e(value) => {
let mut flat = Vec::new();
match value {
EtType::u(value) => {
flat.push(b'e');
flat.push(b'u');
flat.extend_from_slice(&value.encode_number());
}
EtType::i(value) => {
flat.push(b'e');
flat.push(b'i');
flat.extend_from_slice(&value.encode_number());
}
EtType::f5(value) => {
flat.push(b'e');
flat.push(b'f');
flat.push(b'5');
flat.extend_from_slice(&value.to_be_bytes());
}
EtType::f6(value) => {
flat.push(b'e');
flat.push(b'f');
flat.push(b'6');
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::w(coord) => {
let mut flat = vec![b'w'];
flat.extend_from_slice(&coord.raw().to_be_bytes());
flat
}
VsfType::r(channels, depth, data) => {
let mut flat = vec![b'r'];
let channel_char = if *channels < 10 {
b'0' + channels
} else {
b'A' + (channels - 10)
};
flat.push(channel_char);
flat.push(b'0' + depth);
flat.extend_from_slice(data);
flat
}
VsfType::rcb => vec![b'r', b'c', b'b'], VsfType::rcc => vec![b'r', b'c', b'c'], VsfType::rcg => vec![b'r', b'c', b'g'], VsfType::rcj => vec![b'r', b'c', b'j'], VsfType::rck => vec![b'r', b'c', b'k'], VsfType::rcl => vec![b'r', b'c', b'l'], VsfType::rcn => vec![b'r', b'c', b'n'], VsfType::rco => vec![b'r', b'c', b'o'], VsfType::rcq => vec![b'r', b'c', b'q'], VsfType::rcr => vec![b'r', b'c', b'r'], VsfType::rcv => vec![b'r', b'c', b'v'], VsfType::rcw => vec![b'r', b'c', b'w'], VsfType::rcy => vec![b'r', b'c', b'y'],
VsfType::re(grey) => vec![b'r', b'e', *grey],
VsfType::rx(grey) => {
let mut flat = vec![b'r', b'x'];
flat.extend_from_slice(&grey.to_be_bytes());
flat
}
VsfType::rz(grey) => {
let mut flat = vec![b'r', b'z'];
flat.extend_from_slice(&grey.to_be_bytes());
flat
}
VsfType::ri(packed) => vec![b'r', b'i', *packed],
VsfType::rp(packed) => {
let mut flat = vec![b'r', b'p'];
flat.extend_from_slice(&packed.to_be_bytes());
flat
}
VsfType::ru(rgb) => {
let mut flat = vec![b'r', b'u'];
flat.extend_from_slice(rgb);
flat
}
VsfType::rs(rgb) => {
let mut flat = vec![b'r', b's'];
for channel in rgb {
flat.extend_from_slice(&channel.to_be_bytes());
}
flat
}
VsfType::rf(rgb) => {
let mut flat = vec![b'r', b'f'];
for channel in rgb {
flat.extend_from_slice(&channel.to_be_bytes());
}
flat
}
VsfType::ra(rgba) => {
let mut flat = vec![b'r', b'a'];
flat.extend_from_slice(rgba);
flat
}
VsfType::rt(rgba) => {
let mut flat = vec![b'r', b't'];
for channel in rgba {
flat.extend_from_slice(&channel.to_be_bytes());
}
flat
}
VsfType::rh(rgba) => {
let mut flat = vec![b'r', b'h'];
for channel in rgba {
flat.extend_from_slice(&channel.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rd(grey) => {
let mut flat = vec![b'r', b'd'];
flat.extend_from_slice(&grey.fraction.to_be_bytes());
flat.extend_from_slice(&grey.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::rb(rgb) => {
let mut flat = vec![b'r', b'b'];
for channel in rgb {
flat.extend_from_slice(&channel.fraction.to_be_bytes());
flat.extend_from_slice(&channel.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rw(rgba) => {
let mut flat = vec![b'r', b'w'];
for channel in rgba {
flat.extend_from_slice(&channel.fraction.to_be_bytes());
flat.extend_from_slice(&channel.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rq(frac_exp, exp_exp, channels, data) => {
let mut flat = vec![b'r', b'q', *frac_exp, *exp_exp, *channels];
flat.extend_from_slice(data);
flat
}
VsfType::rm(input_channels, output_channels, matrix, gamma) => {
let mut flat = vec![b'r', b'm'];
flat.extend_from_slice(&input_channels.encode_number());
flat.extend_from_slice(&output_channels.encode_number());
for value in matrix {
flat.extend_from_slice(&value.to_be_bytes());
}
flat.extend_from_slice(&gamma.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::rob(pos, size, fill, stroke, children) => {
let mut flat = vec![b'r', b'o', b'b'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat.push(b'(');
for child in children {
flat.extend_from_slice(&child.flatten());
}
flat.push(b')');
flat
}
#[cfg(feature = "spirix")]
VsfType::roc(center, radius, fill, stroke) => {
let mut flat = vec![b'r', b'o', b'c'];
flat.extend_from_slice(¢er.real.to_be_bytes());
flat.extend_from_slice(¢er.imaginary.to_be_bytes());
flat.extend_from_slice(¢er.exponent.to_be_bytes());
flat.extend_from_slice(&radius.fraction.to_be_bytes());
flat.extend_from_slice(&radius.exponent.to_be_bytes());
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rog(variant, stops) => {
let mut flat = vec![b'r', b'o', b'g'];
match variant {
crate::types::GradientVariant::Linear { start, end } => {
flat.push(0);
flat.extend_from_slice(&start.real.to_be_bytes());
flat.extend_from_slice(&start.imaginary.to_be_bytes());
flat.extend_from_slice(&start.exponent.to_be_bytes());
flat.extend_from_slice(&end.real.to_be_bytes());
flat.extend_from_slice(&end.imaginary.to_be_bytes());
flat.extend_from_slice(&end.exponent.to_be_bytes());
}
crate::types::GradientVariant::Radial { center, radius } => {
flat.push(1);
flat.extend_from_slice(¢er.real.to_be_bytes());
flat.extend_from_slice(¢er.imaginary.to_be_bytes());
flat.extend_from_slice(¢er.exponent.to_be_bytes());
flat.extend_from_slice(&radius.fraction.to_be_bytes());
flat.extend_from_slice(&radius.exponent.to_be_bytes());
}
crate::types::GradientVariant::Conic { center, angle } => {
flat.push(2);
flat.extend_from_slice(¢er.real.to_be_bytes());
flat.extend_from_slice(¢er.imaginary.to_be_bytes());
flat.extend_from_slice(¢er.exponent.to_be_bytes());
flat.extend_from_slice(&angle.fraction.to_be_bytes());
flat.extend_from_slice(&angle.exponent.to_be_bytes());
}
}
flat.push(stops.len() as u8);
for stop in stops {
flat.extend_from_slice(&stop.offset.fraction.to_be_bytes());
flat.extend_from_slice(&stop.offset.exponent.to_be_bytes());
for channel in &stop.colour {
flat.extend_from_slice(&channel.fraction.to_be_bytes());
flat.extend_from_slice(&channel.exponent.to_be_bytes());
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::ron(pos, size, children) => {
let mut flat = vec![b'r', b'o', b'n'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
flat.push(b'(');
for child in children {
flat.extend_from_slice(&child.flatten());
}
flat.push(b')');
flat
}
#[cfg(feature = "spirix")]
VsfType::roe(center, size, fill, stroke) => {
let mut flat = vec![b'r', b'o', b'e'];
flat.extend_from_slice(¢er.real.to_be_bytes());
flat.extend_from_slice(¢er.imaginary.to_be_bytes());
flat.extend_from_slice(¢er.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rol(start, end, width, colour) => {
let mut flat = vec![b'r', b'o', b'l'];
flat.extend_from_slice(&start.real.to_be_bytes());
flat.extend_from_slice(&start.imaginary.to_be_bytes());
flat.extend_from_slice(&start.exponent.to_be_bytes());
flat.extend_from_slice(&end.real.to_be_bytes());
flat.extend_from_slice(&end.imaginary.to_be_bytes());
flat.extend_from_slice(&end.exponent.to_be_bytes());
flat.extend_from_slice(&width.fraction.to_be_bytes());
flat.extend_from_slice(&width.exponent.to_be_bytes());
flat.extend_from_slice(&colour.flatten());
flat
}
#[cfg(feature = "spirix")]
VsfType::rop(commands, fill, stroke) => {
let mut flat = vec![b'r', b'o', b'p'];
flat.push(commands.len() as u8);
for cmd in commands {
match cmd {
crate::types::PathCommand::MoveTo(pos) => {
flat.push(0);
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
}
crate::types::PathCommand::LineTo(pos) => {
flat.push(1);
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
}
crate::types::PathCommand::QuadraticTo(ctrl, end) => {
flat.push(2);
flat.extend_from_slice(&ctrl.real.to_be_bytes());
flat.extend_from_slice(&ctrl.imaginary.to_be_bytes());
flat.extend_from_slice(&ctrl.exponent.to_be_bytes());
flat.extend_from_slice(&end.real.to_be_bytes());
flat.extend_from_slice(&end.imaginary.to_be_bytes());
flat.extend_from_slice(&end.exponent.to_be_bytes());
}
crate::types::PathCommand::CubicTo(ctrl1, ctrl2, end) => {
flat.push(3);
flat.extend_from_slice(&ctrl1.real.to_be_bytes());
flat.extend_from_slice(&ctrl1.imaginary.to_be_bytes());
flat.extend_from_slice(&ctrl1.exponent.to_be_bytes());
flat.extend_from_slice(&ctrl2.real.to_be_bytes());
flat.extend_from_slice(&ctrl2.imaginary.to_be_bytes());
flat.extend_from_slice(&ctrl2.exponent.to_be_bytes());
flat.extend_from_slice(&end.real.to_be_bytes());
flat.extend_from_slice(&end.imaginary.to_be_bytes());
flat.extend_from_slice(&end.exponent.to_be_bytes());
}
crate::types::PathCommand::Close => {
flat.push(4);
}
}
}
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::roo(points, width, colour, closed) => {
let mut flat = vec![b'r', b'o', b'o'];
flat.push(points.len() as u8);
for point in points {
flat.extend_from_slice(&point.real.to_be_bytes());
flat.extend_from_slice(&point.imaginary.to_be_bytes());
flat.extend_from_slice(&point.exponent.to_be_bytes());
}
flat.extend_from_slice(&width.fraction.to_be_bytes());
flat.extend_from_slice(&width.exponent.to_be_bytes());
flat.extend_from_slice(&colour.flatten());
flat.push(if *closed { 1 } else { 0 });
flat
}
#[cfg(feature = "spirix")]
VsfType::ror(control_points, knots, degree, fill, stroke) => {
let mut flat = vec![b'r', b'o', b'r'];
flat.push(control_points.len() as u8);
for point in control_points {
flat.extend_from_slice(&point.real.to_be_bytes());
flat.extend_from_slice(&point.imaginary.to_be_bytes());
flat.extend_from_slice(&point.exponent.to_be_bytes());
}
flat.push(knots.len() as u8);
for knot in knots {
flat.extend_from_slice(&knot.fraction.to_be_bytes());
flat.extend_from_slice(&knot.exponent.to_be_bytes());
}
flat.push(*degree);
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rox(control_points, spline_type, fill, stroke) => {
let mut flat = vec![b'r', b'o', b'x'];
flat.push(control_points.len() as u8);
for point in control_points {
flat.extend_from_slice(&point.real.to_be_bytes());
flat.extend_from_slice(&point.imaginary.to_be_bytes());
flat.extend_from_slice(&point.exponent.to_be_bytes());
}
flat.push(match spline_type {
crate::types::SplineType::Bezier => 0,
crate::types::SplineType::Cubic => 1,
crate::types::SplineType::CatmullRom => 2,
});
match fill {
crate::types::Fill::Solid(colour) => {
flat.push(0x00);
flat.extend_from_slice(&colour.flatten());
}
crate::types::Fill::Gradient(grad) => {
flat.push(0x01);
flat.extend_from_slice(&grad.flatten());
}
}
match stroke {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.width.fraction.to_be_bytes());
flat.extend_from_slice(&s.width.exponent.to_be_bytes());
flat.extend_from_slice(&s.colour.flatten());
flat.push(match s.join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match s.cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
}
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rot(pos, text, size, colour, style) => {
let mut flat = vec![b'r', b'o', b't'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&text.flatten());
flat.extend_from_slice(&size.fraction.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
flat.extend_from_slice(&colour.flatten());
match style {
None => flat.push(0x00),
Some(s) => {
if let Some(hash) = &s.font {
flat.push(b'f');
flat.extend_from_slice(hash);
}
match s.align {
Some(1) => flat.push(b'l'),
Some(2) => flat.push(b'r'),
_ => {} }
if let Some(v) = s.leading {
flat.push(b'e');
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
}
if let Some(v) = s.kerning {
flat.push(b'k');
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
}
if let Some(v) = s.weight {
flat.push(b'w');
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
}
if let Some(v) = s.tilt {
flat.push(b'i');
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
}
if let Some(v) = s.wrap {
flat.push(b'x');
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
}
flat.push(0x00); }
}
flat
}
#[cfg(feature = "spirix")]
VsfType::rou(pos, size, label, variant, colour) => {
let mut flat = vec![b'r', b'o', b'u'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
let label_vsf = VsfType::x(label.clone());
flat.extend_from_slice(&label_vsf.flatten());
flat.push(match variant {
crate::types::ButtonVariant::Filled => 0,
crate::types::ButtonVariant::Outlined => 1,
crate::types::ButtonVariant::Text => 2,
});
flat.extend_from_slice(&colour.flatten());
flat
}
#[cfg(feature = "spirix")]
VsfType::roi(pos, size, handle, tint) => {
let mut flat = vec![b'r', b'o', b'i'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
let handle_vsf = VsfType::u6(*handle);
flat.extend_from_slice(&handle_vsf.flatten());
flat.extend_from_slice(&tint.flatten());
flat
}
#[cfg(feature = "spirix")]
VsfType::rof(pos, size, handle) => {
let mut flat = vec![b'r', b'o', b'f'];
flat.extend_from_slice(&pos.real.to_be_bytes());
flat.extend_from_slice(&pos.imaginary.to_be_bytes());
flat.extend_from_slice(&pos.exponent.to_be_bytes());
flat.extend_from_slice(&size.real.to_be_bytes());
flat.extend_from_slice(&size.imaginary.to_be_bytes());
flat.extend_from_slice(&size.exponent.to_be_bytes());
let handle_vsf = VsfType::u6(*handle);
flat.extend_from_slice(&handle_vsf.flatten());
flat
}
#[cfg(feature = "spirix")]
VsfType::rom(shape, children) => {
let mut flat = vec![b'r', b'o', b'm'];
flat.extend_from_slice(&shape.flatten());
flat.push(b'(');
for child in children {
flat.extend_from_slice(&child.flatten());
}
flat.push(b')');
flat
}
#[cfg(feature = "spirix")]
VsfType::row(transform, children) => {
let mut flat = vec![b'r', b'o', b'w'];
match &transform.translate {
None => flat.push(0x00),
Some(t) => {
flat.push(0x01);
flat.extend_from_slice(&t.real.to_be_bytes());
flat.extend_from_slice(&t.imaginary.to_be_bytes());
flat.extend_from_slice(&t.exponent.to_be_bytes());
}
}
match &transform.rotate {
None => flat.push(0x00),
Some(r) => {
flat.push(0x01);
flat.extend_from_slice(&r.fraction.to_be_bytes());
flat.extend_from_slice(&r.exponent.to_be_bytes());
}
}
match &transform.scale {
None => flat.push(0x00),
Some(s) => {
flat.push(0x01);
flat.extend_from_slice(&s.real.to_be_bytes());
flat.extend_from_slice(&s.imaginary.to_be_bytes());
flat.extend_from_slice(&s.exponent.to_be_bytes());
}
}
match &transform.origin {
None => flat.push(0x00),
Some(o) => {
flat.push(0x01);
flat.extend_from_slice(&o.real.to_be_bytes());
flat.extend_from_slice(&o.imaginary.to_be_bytes());
flat.extend_from_slice(&o.exponent.to_be_bytes());
}
}
flat.push(b'(');
for child in children {
flat.extend_from_slice(&child.flatten());
}
flat.push(b')');
flat
}
#[cfg(feature = "spirix")]
VsfType::rok(width, colour, join, cap) => {
let mut flat = vec![b'r', b'o', b'k'];
flat.extend_from_slice(&width.fraction.to_be_bytes());
flat.extend_from_slice(&width.exponent.to_be_bytes());
flat.extend_from_slice(&colour.flatten());
flat.push(match join {
crate::types::StrokeJoin::Miter => 0,
crate::types::StrokeJoin::Round => 1,
crate::types::StrokeJoin::Bevel => 2,
});
flat.push(match cap {
crate::types::StrokeCap::Butt => 0,
crate::types::StrokeCap::Round => 1,
crate::types::StrokeCap::Square => 2,
});
flat
}
VsfType::d(value) => {
let mut flat = Vec::new();
flat.push(b'd');
flat.extend_from_slice(&value.len().encode_number());
flat.extend_from_slice(value.as_bytes());
flat
}
VsfType::l(value) => {
let mut flat = Vec::new();
flat.push(b'l');
flat.extend_from_slice(&value.len().encode_number());
flat.extend_from_slice(value.as_bytes());
flat
}
VsfType::o(value) => {
let mut flat = Vec::new();
flat.push(b'o');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::b(value, _inclusive) => {
let mut flat = Vec::new();
flat.push(b'b');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::L(value, _inclusive) => {
let mut flat = Vec::new();
flat.push(b'L');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::n(value) => {
let mut flat = Vec::new();
flat.push(b'n');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::z(value) => {
let mut flat = Vec::new();
flat.push(b'z');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::y(value) => {
let mut flat = Vec::new();
flat.push(b'y');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::m(value) => {
let mut flat = Vec::new();
flat.push(b'm');
flat.extend_from_slice(&value.encode_number());
flat
}
VsfType::hp(value) => {
let mut flat = vec![b'h', b'p'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::hb(value) => {
let mut flat = vec![b'h', b'b'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::hs(value) => {
let mut flat = vec![b'h', b's'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::hm(value) => {
let mut flat = vec![b'h', b'm'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::hg(value) => {
let mut flat = vec![b'h', b'g'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::hc(value) => {
let mut flat = vec![b'h', b'c'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::hk(value) => {
let mut flat = vec![b'h', b'k'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::hP(value) => {
let mut flat = vec![b'h', b'P'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::hR(value) => {
let mut flat = vec![b'h', b'R'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ge(value) => {
let mut flat = vec![b'g', b'e'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::gp(value) => {
let mut flat = vec![b'g', b'p'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::gr(value) => {
let mut flat = vec![b'g', b'r'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value); flat
}
VsfType::gd(value) => {
let mut flat = vec![b'g', b'd'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::gs(value) => {
let mut flat = vec![b'g', b's'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::gf(value) => {
let mut flat = vec![b'g', b'f'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ke(value) => {
let mut flat = vec![b'k', b'e'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::kx(value) => {
let mut flat = vec![b'k', b'x'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::kp(value) => {
let mut flat = vec![b'k', b'p'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::kc(value) => {
let mut flat = vec![b'k', b'c'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::ka(value) => {
let mut flat = vec![b'k', b'a'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::kk(value) => {
let mut flat = vec![b'k', b'k'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::km(value) => {
let mut flat = vec![b'k', b'm'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kf(value) => {
let mut flat = vec![b'k', b'f'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kl(value) => {
let mut flat = vec![b'k', b'l'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kn(value) => {
let mut flat = vec![b'k', b'n'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kh(value) => {
let mut flat = vec![b'k', b'h'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kd(value) => {
let mut flat = vec![b'k', b'd'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::kb(value) => {
let mut flat = vec![b'k', b'b'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksx(value) => {
let mut flat = vec![b'k', b's', b'x'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksp(value) => {
let mut flat = vec![b'k', b's', b'p'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksk(value) => {
let mut flat = vec![b'k', b's', b'k'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksf(value) => {
let mut flat = vec![b'k', b's', b'f'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksn(value) => {
let mut flat = vec![b'k', b's', b'n'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksl(value) => {
let mut flat = vec![b'k', b's', b'l'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksh(value) => {
let mut flat = vec![b'k', b's', b'h'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ksm(value) => {
let mut flat = vec![b'k', b's', b'm'];
flat.extend_from_slice(&(value.len() - 1).encode_number());
flat.extend_from_slice(value);
flat
}
VsfType::ah(value) => {
let mut flat = vec![b'a', b'h'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::ap(value) => {
let mut flat = vec![b'a', b'p'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::ab(value) => {
let mut flat = vec![b'a', b'b'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::ac(value) => {
let mut flat = vec![b'a', b'c'];
flat.extend_from_slice(&(value.len() - 1).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::v(algorithm, value) => {
let mut flat = Vec::new();
flat.push(b'v');
flat.push(*algorithm); flat.extend_from_slice(&(value.len() << 3).encode_number()); flat.extend_from_slice(value);
flat
}
VsfType::p(tensor) => {
assert!(
!tensor.shape.is_empty(),
"Bitpacked tensor must have at least one dimension"
);
let total_elements: usize = tensor.shape.iter().product();
let bits_per_sample = if tensor.bit_depth == 0 {
256
} else {
tensor.bit_depth as usize
};
let total_bits = total_elements * bits_per_sample;
let expected_bytes = total_bits.div_ceil(8);
assert_eq!(
tensor.data.len(),
expected_bytes,
"Bitpacked tensor data length {} doesn't match expected {} bytes for {} elements at {} bits/sample",
tensor.data.len(),
expected_bytes,
total_elements,
bits_per_sample
);
let mut flat = vec![b'p'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(tensor.bit_depth); for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
flat.extend_from_slice(&tensor.data);
flat
}
VsfType::t_u0(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'0');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
let mut byte = 0u8;
let mut bit_pos = 0;
for &value in &tensor.data {
if value {
byte |= 1 << (7 - bit_pos);
}
bit_pos += 1;
if bit_pos == 8 {
flat.push(byte);
byte = 0;
bit_pos = 0;
}
}
if bit_pos > 0 {
flat.push(byte);
}
flat
}
VsfType::t_u3(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'u');
flat.push(b'3');
flat.extend_from_slice(&tensor.data);
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
flat.extend_from_slice(&tensor.data);
}
flat
}
VsfType::t_u4(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'u');
flat.push(b'4');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_u5(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'u');
flat.push(b'5');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_u6(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'u');
flat.push(b'6');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_u7(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'u');
flat.push(b'7');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_i3(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'i');
flat.push(b'3');
for &value in &tensor.data {
flat.push(value as u8);
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.push(value as u8);
}
}
flat
}
VsfType::t_i4(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'i');
flat.push(b'4');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_i5(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'i');
flat.push(b'5');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_i6(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'i');
flat.push(b'6');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_i7(tensor) => {
let mut flat = vec![b't'];
if tensor.ndim() == 1 {
flat.push(b'n');
flat.extend_from_slice(&tensor.data.len().encode_number());
flat.push(b'i');
flat.push(b'7');
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
} else {
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
}
flat
}
VsfType::t_f5(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'f');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::t_f6(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'f');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::t_j5(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'j');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
VsfType::t_j6(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'j');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
VsfType::v_u0(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'0');
let mut byte = 0u8;
let mut bit_pos = 0;
for &value in &vector.data {
if value {
byte |= 1 << (7 - bit_pos);
}
bit_pos += 1;
if bit_pos == 8 {
flat.push(byte);
byte = 0;
bit_pos = 0;
}
}
if bit_pos > 0 {
flat.push(byte);
}
flat
}
VsfType::v_u3(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'3');
flat.extend_from_slice(&vector.data);
flat
}
VsfType::v_u4(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'4');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_u5(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'5');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_u6(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'6');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_u7(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'u');
flat.push(b'7');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_i3(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'i');
flat.push(b'3');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_i4(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'i');
flat.push(b'4');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_i5(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'i');
flat.push(b'5');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_i6(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'i');
flat.push(b'6');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_i7(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'i');
flat.push(b'7');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_f5(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'f');
flat.push(b'5');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_f6(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'f');
flat.push(b'6');
for &value in &vector.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::v_j5(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'j');
flat.push(b'5');
for value in &vector.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
VsfType::v_j6(vector) => {
let mut flat = vec![b't', b'n'];
flat.extend_from_slice(&vector.data.len().encode_number());
flat.push(b'j');
flat.push(b'6');
for value in &vector.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
VsfType::q_u0(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'0');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
let mut byte = 0u8;
let mut bit_pos = 0;
for &value in &tensor.data {
if value {
byte |= 1 << (7 - bit_pos);
}
bit_pos += 1;
if bit_pos == 8 {
flat.push(byte);
byte = 0;
bit_pos = 0;
}
}
if bit_pos > 0 {
flat.push(byte);
}
flat
}
VsfType::q_u3(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
flat.extend_from_slice(&tensor.data);
flat
}
VsfType::q_u4(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_u5(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_u6(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_u7(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'u');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_i3(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.push(value as u8);
}
flat
}
VsfType::q_i4(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_i5(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_i6(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_i7(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'i');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_f5(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'f');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_f6(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'f');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for &value in &tensor.data {
flat.extend_from_slice(&value.to_be_bytes());
}
flat
}
VsfType::q_j5(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'j');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
VsfType::q_j6(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'j');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.re.to_be_bytes());
flat.extend_from_slice(&value.im.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::s33(v) => {
let mut flat = vec![b's', b'3', b'3'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s34(v) => {
let mut flat = vec![b's', b'3', b'4'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s35(v) => {
let mut flat = vec![b's', b'3', b'5'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s36(v) => {
let mut flat = vec![b's', b'3', b'6'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s37(v) => {
let mut flat = vec![b's', b'3', b'7'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s43(v) => {
let mut flat = vec![b's', b'4', b'3'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s44(v) => {
let mut flat = vec![b's', b'4', b'4'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s45(v) => {
let mut flat = vec![b's', b'4', b'5'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s46(v) => {
let mut flat = vec![b's', b'4', b'6'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s47(v) => {
let mut flat = vec![b's', b'4', b'7'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s53(v) => {
let mut flat = vec![b's', b'5', b'3'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s54(v) => {
let mut flat = vec![b's', b'5', b'4'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s55(v) => {
let mut flat = vec![b's', b'5', b'5'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s56(v) => {
let mut flat = vec![b's', b'5', b'6'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s57(v) => {
let mut flat = vec![b's', b'5', b'7'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s63(v) => {
let mut flat = vec![b's', b'6', b'3'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s64(v) => {
let mut flat = vec![b's', b'6', b'4'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s65(v) => {
let mut flat = vec![b's', b'6', b'5'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s66(v) => {
let mut flat = vec![b's', b'6', b'6'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s67(v) => {
let mut flat = vec![b's', b'6', b'7'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s73(v) => {
let mut flat = vec![b's', b'7', b'3'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s74(v) => {
let mut flat = vec![b's', b'7', b'4'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s75(v) => {
let mut flat = vec![b's', b'7', b'5'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s76(v) => {
let mut flat = vec![b's', b'7', b'6'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::s77(v) => {
let mut flat = vec![b's', b'7', b'7'];
flat.extend_from_slice(&v.fraction.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c33(v) => {
let mut flat = vec![b'c', b'3', b'3'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c34(v) => {
let mut flat = vec![b'c', b'3', b'4'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c35(v) => {
let mut flat = vec![b'c', b'3', b'5'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c36(v) => {
let mut flat = vec![b'c', b'3', b'6'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c37(v) => {
let mut flat = vec![b'c', b'3', b'7'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c43(v) => {
let mut flat = vec![b'c', b'4', b'3'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c44(v) => {
let mut flat = vec![b'c', b'4', b'4'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c45(v) => {
let mut flat = vec![b'c', b'4', b'5'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c46(v) => {
let mut flat = vec![b'c', b'4', b'6'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c47(v) => {
let mut flat = vec![b'c', b'4', b'7'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c53(v) => {
let mut flat = vec![b'c', b'5', b'3'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c54(v) => {
let mut flat = vec![b'c', b'5', b'4'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c55(v) => {
let mut flat = vec![b'c', b'5', b'5'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c56(v) => {
let mut flat = vec![b'c', b'5', b'6'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c57(v) => {
let mut flat = vec![b'c', b'5', b'7'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c63(v) => {
let mut flat = vec![b'c', b'6', b'3'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c64(v) => {
let mut flat = vec![b'c', b'6', b'4'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c65(v) => {
let mut flat = vec![b'c', b'6', b'5'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c66(v) => {
let mut flat = vec![b'c', b'6', b'6'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c67(v) => {
let mut flat = vec![b'c', b'6', b'7'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c73(v) => {
let mut flat = vec![b'c', b'7', b'3'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c74(v) => {
let mut flat = vec![b'c', b'7', b'4'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c75(v) => {
let mut flat = vec![b'c', b'7', b'5'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c76(v) => {
let mut flat = vec![b'c', b'7', b'6'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::c77(v) => {
let mut flat = vec![b'c', b'7', b'7'];
flat.extend_from_slice(&v.real.to_be_bytes());
flat.extend_from_slice(&v.imaginary.to_be_bytes());
flat.extend_from_slice(&v.exponent.to_be_bytes());
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s33(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s34(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s35(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s36(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s37(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s43(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s44(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s45(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s46(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s47(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s53(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s54(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s55(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s56(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s57(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s63(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s64(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s65(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s66(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s67(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s73(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s74(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s75(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s76(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_s77(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c33(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'3');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c34(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'3');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c35(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'3');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c36(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'3');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c37(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'3');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c43(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'4');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c44(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'4');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c45(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'4');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c46(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'4');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c47(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'4');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c53(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'5');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c54(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'5');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c55(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'5');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c56(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'5');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c57(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'5');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c63(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'6');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c64(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'6');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c65(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'6');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c66(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'6');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c67(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'6');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c73(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'7');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c74(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'7');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c75(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'7');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c76(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'7');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::t_c77(tensor) => {
let mut flat = vec![b't'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b'c');
flat.push(b'7');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s33(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s34(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s35(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s36(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s37(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s43(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s44(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s45(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s46(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s47(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s53(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s54(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s55(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s56(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s57(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s63(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s64(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s65(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s66(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s67(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s73(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s74(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s75(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s76(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_s77(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.fraction.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c33(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c34(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c35(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c36(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c37(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'3');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c43(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c44(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c45(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c46(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c47(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'4');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c53(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c54(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c55(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c56(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c57(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'5');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c63(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c64(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c65(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c66(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c67(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'6');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c73(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'3');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c74(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'4');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c75(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'5');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c76(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'6');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
#[cfg(feature = "spirix")]
VsfType::q_c77(tensor) => {
let mut flat = vec![b'q'];
flat.extend_from_slice(&tensor.ndim().encode_number());
flat.push(b's');
flat.push(b'7');
flat.push(b'7');
for &dim in &tensor.shape {
flat.extend_from_slice(&dim.encode_number());
}
for &stride in &tensor.stride {
flat.extend_from_slice(&stride.encode_number());
}
for value in &tensor.data {
flat.extend_from_slice(&value.real.to_be_bytes());
flat.extend_from_slice(&value.imaginary.to_be_bytes());
flat.extend_from_slice(&value.exponent.to_be_bytes());
}
flat
}
VsfType::op(a, b) => {
vec![b'{', *a, *b, b'}']
}
}
}
pub fn byte_len(&self) -> usize {
match self {
VsfType::u0(_) => 2,
VsfType::u(value, inclusive) => {
if *inclusive {
self.flatten().len()
} else {
1 + encoded_usize_len(*value) }
}
VsfType::u3(_) => 3, VsfType::u4(_) => 1 + encoded_u16_len(), VsfType::u5(_) => 1 + encoded_u32_len(), VsfType::u6(_) => 1 + encoded_u64_len(), VsfType::u7(_) => 1 + encoded_u128_len(),
VsfType::i(value) => 1 + encoded_isize_len(*value), VsfType::i3(_) => 3, VsfType::i4(_) => 1 + encoded_i16_len(), VsfType::i5(_) => 1 + encoded_i32_len(), VsfType::i6(_) => 1 + encoded_i64_len(), VsfType::i7(_) => 1 + encoded_i128_len(),
VsfType::f5(_) => 6, VsfType::f6(_) => 10,
VsfType::j5(_) => 10, VsfType::j6(_) => 18,
VsfType::d(s) => {
#[cfg(feature = "text")]
let encoded_len = encode_text(s).len();
#[cfg(not(feature = "text"))]
let encoded_len = s.len();
1 + encoded_usize_len(encoded_len) + encoded_len
}
VsfType::l(s) => {
#[cfg(feature = "text")]
let encoded_len = encode_text(s).len();
#[cfg(not(feature = "text"))]
let encoded_len = s.len();
1 + encoded_usize_len(encoded_len) + encoded_len
}
VsfType::o(offset) => {
1 + encoded_usize_len(*offset)
}
VsfType::b(size, _inclusive) => {
1 + encoded_usize_len(*size)
}
VsfType::L(size, _inclusive) => {
1 + encoded_usize_len(*size)
}
VsfType::n(count) => {
1 + encoded_usize_len(*count)
}
VsfType::z(ver) => 1 + encoded_usize_len(*ver), VsfType::y(compat) => 1 + encoded_usize_len(*compat),
VsfType::hb(bytes) | VsfType::hs(bytes) | VsfType::hm(bytes) | VsfType::hg(bytes) => {
2 + encoded_usize_len(bytes.len()) + bytes.len()
}
VsfType::ge(bytes) | VsfType::gp(bytes) | VsfType::gr(bytes) => {
2 + encoded_usize_len(bytes.len()) + bytes.len()
}
VsfType::ke(bytes)
| VsfType::kx(bytes)
| VsfType::kp(bytes)
| VsfType::kk(bytes)
| VsfType::kc(bytes)
| VsfType::ka(bytes)
| VsfType::km(bytes)
| VsfType::kf(bytes)
| VsfType::kl(bytes)
| VsfType::kn(bytes)
| VsfType::kh(bytes)
| VsfType::kd(bytes)
| VsfType::kb(bytes) => {
2 + encoded_usize_len(bytes.len()) + bytes.len()
}
VsfType::ksx(bytes)
| VsfType::ksp(bytes)
| VsfType::ksk(bytes)
| VsfType::ksf(bytes)
| VsfType::ksn(bytes)
| VsfType::ksl(bytes)
| VsfType::ksh(bytes)
| VsfType::ksm(bytes) => {
3 + encoded_usize_len(bytes.len()) + bytes.len()
}
VsfType::ah(bytes) | VsfType::ap(bytes) | VsfType::ab(bytes) | VsfType::ac(bytes) => {
2 + encoded_usize_len(bytes.len()) + bytes.len()
}
VsfType::op(_, _) => 4,
_ => self.flatten().len(),
}
}
}
fn encoded_usize_len(value: usize) -> usize {
if value <= u8::MAX as usize {
2 } else if value <= u16::MAX as usize {
3 } else if value <= u32::MAX as usize {
5 } else if value <= u64::MAX as usize {
9 } else {
17 }
}
fn encoded_isize_len(value: isize) -> usize {
if value >= i8::MIN as isize && value <= i8::MAX as isize {
2 } else if value >= i16::MIN as isize && value <= i16::MAX as isize {
3 } else if value >= i32::MIN as isize && value <= i32::MAX as isize {
5 } else if value >= i64::MIN as isize && value <= i64::MAX as isize {
9 } else {
17 }
}
fn encoded_u16_len() -> usize {
3
} fn encoded_u32_len() -> usize {
5
} fn encoded_u64_len() -> usize {
9
} fn encoded_u128_len() -> usize {
17
}
fn encoded_i16_len() -> usize {
3
} fn encoded_i32_len() -> usize {
5
} fn encoded_i64_len() -> usize {
9
} fn encoded_i128_len() -> usize {
17
}
#[cfg(test)]
mod tests {
use super::*;
use num_complex::Complex;
#[test]
fn test_flatten_unsigned() {
assert_eq!(VsfType::u3(42).flatten(), vec![b'u', b'3', 42]);
assert_eq!(
VsfType::u5(100000).flatten(),
vec![b'u', b'5', 0x00, 0x01, 0x86, 0xA0]
);
}
#[test]
fn test_flatten_signed() {
assert_eq!(VsfType::i3(-42).flatten(), vec![b'i', b'3', 0xD6]);
}
#[test]
fn test_flatten_float() {
let result = VsfType::f5(3.14f32).flatten();
assert_eq!(result[0], b'f');
assert_eq!(result[1], b'5');
assert_eq!(result.len(), 6);
}
#[test]
fn test_flatten_complex() {
let z = Complex {
re: 1.5f32,
im: 2.5f32,
};
let result = VsfType::j5(z).flatten();
assert_eq!(result[0], b'j');
assert_eq!(result[1], b'5');
assert_eq!(result.len(), 10); }
#[test]
fn test_flatten_string() {
let result = VsfType::x("hello".to_string()).flatten();
assert_eq!(result[0], b'x');
assert_eq!(result[1], b'3'); assert_eq!(result[2], 5);
assert!(result.len() >= 3); }
#[test]
fn test_flatten_metadata() {
assert_eq!(VsfType::z(1).flatten(), vec![b'z', b'3', 1]);
assert_eq!(VsfType::n(42).flatten(), vec![b'n', b'3', 42]);
}
#[test]
fn test_flatten_bool() {
assert_eq!(VsfType::u0(true).flatten(), vec![b'u', 255]);
assert_eq!(VsfType::u0(false).flatten(), vec![b'u', 0]);
}
#[test]
fn test_flatten_tensor_lumis_raw() {
use crate::types::Tensor;
let tensor = Tensor::new(vec![4096, 3072], vec![0u16; 4096 * 3072]);
let result = VsfType::t_u4(tensor).flatten();
assert_eq!(result[0], b't'); assert_eq!(result[1], b'3'); assert_eq!(result[2], 2); assert_eq!(result[3], b'u'); assert_eq!(result[4], b'4');
assert_eq!(result[5], b'4'); assert_eq!(result[6], 0x10); assert_eq!(result[7], 0x00);
assert_eq!(result[8], b'4'); assert_eq!(result[9], 0x0C); assert_eq!(result[10], 0x00);
assert_eq!(result.len(), 11 + 4096 * 3072 * 2);
}
#[test]
fn test_flatten_tensor_small() {
use crate::types::Tensor;
let tensor = Tensor::new(vec![24, 71], vec![0u8; 24 * 71]);
let result = VsfType::t_u3(tensor).flatten();
assert_eq!(result[0], b't');
assert_eq!(result[1], b'3'); assert_eq!(result[2], 2);
assert_eq!(result[3], b'u');
assert_eq!(result[4], b'3');
assert_eq!(result[5], b'3');
assert_eq!(result[6], 24);
assert_eq!(result[7], b'3');
assert_eq!(result[8], 71);
assert_eq!(result.len(), 9 + 24 * 71);
}
#[test]
fn test_flatten_strided_tensor() {
use crate::types::StridedTensor;
let tensor = StridedTensor::new(
vec![100, 50],
vec![1, 100], vec![0.0f64; 100 * 50],
);
let result = VsfType::q_f6(tensor).flatten();
assert_eq!(result[0], b'q'); assert_eq!(result[1], b'3'); assert_eq!(result[2], 2); assert_eq!(result[3], b'f');
assert_eq!(result[4], b'6');
assert_eq!(result[5], b'3');
assert_eq!(result[6], 100);
assert_eq!(result[7], b'3');
assert_eq!(result[8], 50);
assert_eq!(result[9], b'3');
assert_eq!(result[10], 1);
assert_eq!(result[11], b'3');
assert_eq!(result[12], 100);
assert_eq!(result.len(), 13 + 100 * 50 * 8);
}
#[test]
#[cfg(feature = "spirix")]
fn test_flatten_spirix_scalar() {
use spirix::ScalarF6E4;
let scalar = ScalarF6E4::from(42.5);
let result = VsfType::s64(scalar).flatten();
assert_eq!(result[0], b's');
assert_eq!(result[1], b'6');
assert_eq!(result[2], b'4');
assert_eq!(result.len(), 13);
}
#[test]
#[cfg(feature = "spirix")]
fn test_flatten_spirix_circle() {
use spirix::CircleF6E4;
let circle = CircleF6E4::from((1.5, 2.5));
let result = VsfType::c64(circle).flatten();
assert_eq!(result[0], b'c');
assert_eq!(result[1], b'6');
assert_eq!(result[2], b'4');
assert_eq!(result.len(), 21);
}
#[test]
#[cfg(feature = "spirix")]
fn test_flatten_spirix_tensor() {
use crate::types::Tensor;
use spirix::ScalarF6E4;
let tensor = Tensor::new(vec![10, 20], vec![ScalarF6E4::from(42.0); 200]);
let result = VsfType::t_s64(tensor).flatten();
assert_eq!(result[0], b't');
assert_eq!(result[1], b'3');
assert_eq!(result[2], 2); assert_eq!(result[3], b's');
assert_eq!(result[4], b'6');
assert_eq!(result[5], b'4');
assert_eq!(result.len(), 10 + 200 * 10);
}
}