1use crate::binary::Result;
4use crate::records::{self, Limits, Record};
5
6macro_rules! record_format {
7 ($parse:ident, $parse_limits:ident, $write:ident, $write_limits:ident, $format:literal) => {
8 #[doc = concat!("Parse `", $format, "` bytes with default resource and layout budgets.")]
9 pub fn $parse(bytes: &[u8]) -> Result<Record> { records::parse_record($format, bytes) }
10 #[doc = concat!("Parse `", $format, "` bytes with explicit safety budgets and layout parameters.")]
11 pub fn $parse_limits(bytes: &[u8], limits: Limits) -> Result<Record> { records::parse_record_with_limits($format, bytes, limits) }
12 #[doc = concat!("Write a new or edited `", $format, "` record without normalizing stored values.")]
13 pub fn $write(record: &Record) -> Result<Vec<u8>> { records::write_record($format, record) }
14 #[doc = concat!("Write `", $format, "` storage with explicit safety budgets and layout parameters.")]
15 pub fn $write_limits(record: &Record, limits: Limits) -> Result<Vec<u8>> { records::write_record_with_limits($format, record, limits) }
16 };
17}
18
19record_format!(
20 parse_n3pmesh,
21 parse_n3pmesh_with_limits,
22 write_n3pmesh,
23 write_n3pmesh_with_limits,
24 "n3pmesh"
25);
26record_format!(
27 parse_n3cskin,
28 parse_n3cskin_with_limits,
29 write_n3cskin,
30 write_n3cskin_with_limits,
31 "n3cskin"
32);
33record_format!(
34 parse_n3cskins,
35 parse_n3cskins_with_limits,
36 write_n3cskins,
37 write_n3cskins_with_limits,
38 "n3cskins"
39);
40record_format!(
41 parse_n3cpart,
42 parse_n3cpart_with_limits,
43 write_n3cpart,
44 write_n3cpart_with_limits,
45 "n3cpart"
46);
47record_format!(
48 parse_n3cplug,
49 parse_n3cplug_with_limits,
50 write_n3cplug,
51 write_n3cplug_with_limits,
52 "n3cplug"
53);
54record_format!(
55 parse_n3shape,
56 parse_n3shape_with_limits,
57 write_n3shape,
58 write_n3shape_with_limits,
59 "n3shape"
60);
61record_format!(
62 parse_n3chr,
63 parse_n3chr_with_limits,
64 write_n3chr,
65 write_n3chr_with_limits,
66 "n3chr"
67);
68record_format!(
69 parse_n3joint,
70 parse_n3joint_with_limits,
71 write_n3joint,
72 write_n3joint_with_limits,
73 "n3joint"
74);
75record_format!(
76 parse_n3anim,
77 parse_n3anim_with_limits,
78 write_n3anim,
79 write_n3anim_with_limits,
80 "n3anim"
81);
82record_format!(
83 parse_n3fxplug,
84 parse_n3fxplug_with_limits,
85 write_n3fxplug,
86 write_n3fxplug_with_limits,
87 "n3fxplug"
88);
89record_format!(
90 parse_n3sky,
91 parse_n3sky_with_limits,
92 write_n3sky,
93 write_n3sky_with_limits,
94 "n3sky"
95);
96record_format!(
97 parse_fxb,
98 parse_fxb_with_limits,
99 write_fxb,
100 write_fxb_with_limits,
101 "fxb"
102);
103record_format!(
104 parse_gtd,
105 parse_gtd_with_limits,
106 write_gtd,
107 write_gtd_with_limits,
108 "gtd"
109);
110record_format!(
111 parse_opd,
112 parse_opd_with_limits,
113 write_opd,
114 write_opd_with_limits,
115 "opd"
116);
117record_format!(
118 parse_uif,
119 parse_uif_with_limits,
120 write_uif,
121 write_uif_with_limits,
122 "uif"
123);
124
125pub use crate::images::{parse_bmp, parse_tga, write_bmp, write_tga};
126pub use crate::table::{parse_table as parse_tbl, write_table as write_tbl};
127pub use crate::textures::{
128 parse_gtt, parse_tct, parse_texture as parse_dxt, write_gtt, write_tct,
129 write_texture as write_dxt,
130};