self, Cases, DecodedRecord, DocumentRecord, EncodingRecord, Extension, FileAttributeRecord,
FloatInfoRecord, HeaderRecord, IntegerInfoRecord, LongName, LongNamesRecord,
LongStringMissingValueRecord, LongStringValueLabelRecord, MissingValues,
- MultipleResponseRecord, NumberOfCasesRecord, ProductInfoRecord, RawStr, RawWidth,
+ MultipleResponseRecord, NumberOfCasesRecord, ProductInfoRecord, RawStrArray, RawWidth,
ValueLabel, ValueLabelRecord, VarDisplayRecord, VariableAttributeRecord, VariableRecord,
VariableSetRecord, VeryLongStringsRecord, ZHeader, ZTrailer,
},
pub struct Headers {
pub header: HeaderRecord<String>,
pub variable: Vec<VariableRecord<String>>,
- pub value_label: Vec<ValueLabelRecord<RawStr<8>, String>>,
+ pub value_label: Vec<ValueLabelRecord<RawStrArray<8>, String>>,
pub document: Vec<DocumentRecord<String>>,
pub integer_info: Option<IntegerInfoRecord>,
pub float_info: Option<FloatInfoRecord>,
pub enum Record {
Header(HeaderRecord<RawString>),
Variable(VariableRecord<RawString>),
- ValueLabel(ValueLabelRecord<RawStr<8>, RawString>),
+ ValueLabel(ValueLabelRecord<RawStrArray<8>, RawString>),
Document(DocumentRecord<RawDocumentLine>),
IntegerInfo(IntegerInfoRecord),
FloatInfo(FloatInfoRecord),
pub enum DecodedRecord {
Header(HeaderRecord<String>),
Variable(VariableRecord<String>),
- ValueLabel(ValueLabelRecord<RawStr<8>, String>),
+ ValueLabel(ValueLabelRecord<RawStrArray<8>, String>),
Document(DocumentRecord<String>),
IntegerInfo(IntegerInfoRecord),
FloatInfo(FloatInfoRecord),
}
}
-type RawValue = Value<RawStr<8>>;
+type RawValue = Value<RawStrArray<8>>;
impl RawValue {
pub fn from_raw(raw: &UntypedValue, var_type: VarType, endian: Endian) -> Self {
match var_type {
- VarType::String => Value::String(RawStr(raw.0)),
+ VarType::String => Value::String(RawStrArray(raw.0)),
VarType::Numeric => Value::Number(endian.parse(raw.0)),
}
}
1..=251 => match var_type {
VarType::Numeric => break Self::Number(Some(code as f64 - bias)),
VarType::String => {
- break Self::String(RawStr(endian.to_bytes(code as f64 - bias)))
+ break Self::String(RawStrArray(endian.to_bytes(code as f64 - bias)))
}
},
252 => {
break Self::from_raw(&UntypedValue(read_bytes(reader)?), var_type, endian)
}
254 => match var_type {
- VarType::String => break Self::String(RawStr(*b" ")), // XXX EBCDIC
+ VarType::String => break Self::String(RawStrArray(*b" ")), // XXX EBCDIC
VarType::Numeric => {
return Err(Error::CompressedStringExpected {
offset: case_start,
}
#[derive(Copy, Clone)]
-pub struct RawStr<const N: usize>(pub [u8; N]);
+pub struct RawStrArray<const N: usize>(pub [u8; N]);
-impl<const N: usize> From<[u8; N]> for RawStr<N> {
+impl<const N: usize> From<[u8; N]> for RawStrArray<N> {
fn from(source: [u8; N]) -> Self {
Self(source)
}
}
-impl<const N: usize> Debug for RawStr<N> {
+impl<const N: usize> Debug for RawStrArray<N> {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
write!(f, "{:?}", default_decode(&self.0))
}
pub const MAX_INDEXES: u32 = u32::MAX / 8;
}
-impl ValueLabelRecord<RawStr<8>, RawString> {
+impl ValueLabelRecord<RawStrArray<8>, RawString> {
fn read<R: Read + Seek>(
r: &mut R,
endian: Endian,
})))
}
- fn decode(self, decoder: &Decoder) -> ValueLabelRecord<RawStr<8>, String> {
+ fn decode(self, decoder: &Decoder) -> ValueLabelRecord<RawStrArray<8>, String> {
let labels = self
.labels
.iter()
pub lines: Vec<S>,
}
-pub type RawDocumentLine = RawStr<DOC_LINE_LEN>;
+pub type RawDocumentLine = RawStrArray<DOC_LINE_LEN>;
/// Length of a line in a document. Document lines are fixed-length and
/// padded on the right with spaces.
} else {
let mut lines = Vec::with_capacity(n);
for _ in 0..n {
- lines.push(RawStr(read_bytes(r)?));
+ lines.push(RawStrArray(read_bytes(r)?));
}
let end_offset = r.stream_position()?;
Ok(Record::Document(DocumentRecord {
pub var_name: N,
/// Missing values.
- pub missing_values: Vec<RawStr<8>>,
+ pub missing_values: Vec<RawStrArray<8>>,
}
impl LongStringMissingValues<RawString> {
} else {
value
};
- missing_values.push(RawStr(value));
+ missing_values.push(RawStrArray(value));
}
missing_value_set.push(LongStringMissingValues {
var_name,