1use std::io;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum TdmsError {
6 #[error("IO error: {0}")]
7 Io(#[from] io::Error),
8
9 #[error("Invalid TDMS format: {0}")]
10 InvalidFormat(String),
11
12 #[error("Invalid TDMS signature")]
13 InvalidSignature,
14
15 #[error("Unknown version: {0}")]
16 UnknownVersion(u32),
17
18 #[error("Group '{0}' not found")]
19 GroupNotFound(String),
20
21 #[error("Channel '{0}' not found in group '{1}'")]
22 ChannelNotFound(String, String),
23
24 #[error("Unsupported data type: {0}")]
25 UnsupportedDataType(u32),
26
27 #[error("Invalid name: {0}")]
28 InvalidName(String),
29
30 #[error("Duplicate name: {0}")]
31 DuplicateName(String),
32
33 #[error("String encoding error")]
34 StringEncoding,
35
36 #[error("Not implemented: {0}")]
37 NotImplemented(String),
38
39 #[error("String formatting error: {0}")]
40 StringFormatting(String),
41
42 #[error("Type mismatch")]
43 TypeMismatch,
44
45 #[error("Alignment error")]
46 AlignmentError,
47
48 #[error("Invalid range: {0}..{1} (len={2})")]
49 InvalidRange(usize, usize, usize),
50
51 #[error("Writer already closed")]
52 WriterClosed,
53
54 #[error("Compression not supported: {0}")]
55 CompressionNotSupported(String),
56
57 #[error("Property too large: {0} bytes")]
58 PropertyTooLarge(usize),
59
60 #[error("File closed")]
61 Closed,
62}
63
64pub type Result<T> = std::result::Result<T, TdmsError>;