/// A [Datum] that owns its string data (if any).
pub type OwnedDatum = Datum<WithEncoding<ByteString>>;
-/// A [Datum] that borrows its string data (if any).
-pub type BorrowedDatum<'a> = Datum<WithEncoding<ByteStr<'a>>>;
-
/// The value of a [Variable](crate::dictionary::Variable).
///
/// `RawString` is parameterized by its string type, which is either
// You should have received a copy of the GNU General Public License along with
// this program. If not, see <http://www.gnu.org/licenses/>.
-use smallvec::SmallVec;
-
-pub use binrw::Endian;
-
-pub fn endian_to_smallvec<const N: usize>(
- endian: Endian,
- mut value: u64,
- n: usize,
-) -> SmallVec<[u8; N]> {
- debug_assert!(n <= 8);
- let mut vec = SmallVec::new();
- value <<= 8 * (8 - n);
- for _ in 0..n {
- vec.push((value >> 56) as u8);
- value <<= 8;
- }
- if endian == Endian::Little {
- vec.reverse();
- }
- vec
-}
+use binrw::Endian;
pub trait ToBytes<T, const N: usize> {
fn to_bytes(self, value: T) -> [u8; N];
str::from_utf8_unchecked,
};
+use binrw::Endian;
use chrono::{Datelike, NaiveDate};
use encoding_rs::{Encoding, UTF_8};
use libm::frexp;
use crate::{
calendar::{calendar_offset_to_gregorian, day_of_year, month_name, short_month_name},
data::{ByteStr, Datum, EncodedString, QuotedDatum, WithEncoding},
- endian::{endian_to_smallvec, ToBytes},
+ endian::ToBytes,
format::{Category, DateTemplate, Decimal, Format, NumberStyle, Settings, TemplateItem, Type},
settings::{EndianSettings, Settings as PsppSettings},
};
}
}
}
+
+pub fn endian_to_smallvec<const N: usize>(
+ endian: Endian,
+ mut value: u64,
+ n: usize,
+) -> SmallVec<[u8; N]> {
+ debug_assert!(n <= 8);
+ let mut vec = SmallVec::new();
+ value <<= 8 * (8 - n);
+ for _ in 0..n {
+ vec.push((value >> 56) as u8);
+ value <<= 8;
+ }
+ if endian == Endian::Little {
+ vec.reverse();
+ }
+ vec
+}
use std::{fmt::Write, fs::File, io::BufRead, path::Path};
-use binrw::io::BufReader;
+use binrw::{io::BufReader, Endian};
use encoding_rs::UTF_8;
use itertools::Itertools;
use smallstr::SmallString;
use crate::{
data::{ByteString, Datum, WithEncoding},
- endian::Endian,
format::{AbstractFormat, Epoch, Format, Settings, Type, UncheckedFormat, CC},
lex::{scan::StringScanner, segment::Syntax, Punct, Token},
settings::EndianSettings,
use crate::{
calendar::{calendar_gregorian_to_offset, DateError},
data::{ByteString, Datum, EncodedString, OwnedDatum, RawString, WithEncoding},
- endian::{Endian, Parse},
+ endian::Parse,
format::{DateTemplate, Decimals, Settings, TemplateItem, Type},
settings::{EndianSettings, Settings as PsppSettings},
};
+use binrw::Endian;
use encoding_rs::Encoding;
use smallstr::SmallString;
use std::{
path::Path,
};
+ use binrw::Endian;
use encoding_rs::UTF_8;
use rand::random;
use crate::{
calendar::{days_in_month, is_leap_year},
data::{ByteStr, Datum, EncodedString, OwnedDatum, RawString},
- endian::Endian,
format::{
parse::{ParseError, ParseErrorKind, Sign},
Epoch, Format, Settings as FormatSettings, Type,
use std::sync::{Arc, OnceLock};
+use binrw::Endian;
use enum_map::EnumMap;
use crate::{
- endian::Endian,
format::{Format, Settings as FormatSettings},
message::Severity,
output::pivot::Look,
DictIndexMultipleResponseSet, DictIndexVariableSet, Dictionary, InvalidRole, MissingValues,
MissingValuesError, MultipleResponseType, VarWidth, Variable,
},
- endian::Endian,
format::{Error as FormatError, Format, UncheckedFormat},
hexfloat::HexFloat,
identifier::{ByIdentifier, Error as IdError, Identifier},
},
};
use anyhow::{anyhow, Error as AnyError};
-use binrw::{BinRead, BinWrite};
+use binrw::{BinRead, BinWrite, Endian};
use chrono::{NaiveDate, NaiveDateTime, NaiveTime};
use encoding_rs::Encoding;
use indexmap::set::MutableValues;
use crate::{
data::{ByteStr, ByteString, Datum, RawCase},
dictionary::{VarType, VarWidth},
- endian::{Endian, Parse, ToBytes},
+ endian::{Parse, ToBytes},
identifier::{Error as IdError, Identifier},
sys::{
encoding::{default_encoding, get_encoding, Error as EncodingError},
},
};
+use binrw::Endian;
use encoding_rs::Encoding;
use flate2::bufread::ZlibDecoder;
use serde::Serialize;
Alignment, Attributes, CategoryLabels, Measure, MissingValueRange, MissingValues,
MissingValuesError, VarType, VarWidth,
},
- endian::{Endian, Parse},
+ endian::{Parse},
format::{DisplayPlainF64, Format, Type},
identifier::{Error as IdError, Identifier},
sys::{
},
};
-use binrw::{binrw, BinRead, BinWrite, Error as BinError};
+use binrw::{binrw, BinRead, BinWrite, Endian, Error as BinError};
use clap::ValueEnum;
use encoding_rs::Encoding;
use itertools::Itertools;
// You should have received a copy of the GNU General Public License along with
// this program. If not, see <http://www.gnu.org/licenses/>.
+use binrw::Endian;
use num::{Bounded, Zero};
use ordered_float::OrderedFloat;
use std::{
path::{Path, PathBuf},
};
-use crate::endian::{Endian, ToBytes};
+use crate::endian::{ToBytes};
pub type Result<T, F = Error> = std::result::Result<T, F>;
#[cfg(test)]
mod test {
- use crate::endian::Endian;
use crate::sys::sack::sack;
use anyhow::Result;
+ use binrw::Endian;
use hexplay::HexView;
#[test]
sync::Arc,
};
+use binrw::Endian;
use chrono::{NaiveDate, NaiveDateTime, NaiveTime};
use encoding_rs::UTF_8;
use crate::{
crypto::EncryptedFile,
- data::{BorrowedDatum, ByteString, Datum},
+ data::{ByteString, Datum},
dictionary::{Dictionary, VarWidth, Variable},
- endian::Endian,
identifier::Identifier,
output::{
pivot::{test::assert_lines_eq, Axis3, Dimension, Group, PivotTable, Value},
cases
.write_case(
case.into_iter()
- .map(|number| BorrowedDatum::Number(Some(number as f64))),
+ .map(|number| Datum::<&str>::Number(Some(number as f64))),
)
.unwrap();
}
cases
.write_case(
case.into_iter()
- .map(|number| BorrowedDatum::Number(Some(number as f64))),
+ .map(|number| Datum::<&str>::Number(Some(number as f64))),
)
.unwrap();
}