1pub(crate) mod constants;
9pub(crate) mod header;
10mod properties;
11mod read;
12pub(crate) mod tag;
13
14use crate::id3::v1::tag::Id3v1Tag;
15use crate::id3::v2::tag::Id3v2Tag;
16
17use lofty_attr::LoftyFile;
18
19pub use crate::picture::APE_PICTURE_TYPES;
22pub use properties::ApeProperties;
23pub use tag::ApeTag;
24pub use tag::item::ApeItem;
25
26#[derive(LoftyFile)]
28#[lofty(read_fn = "read::read_from")]
29#[lofty(internal_write_module_do_not_use_anywhere_else)]
30pub struct ApeFile {
31 #[lofty(tag_type = "Id3v1")]
33 pub(crate) id3v1_tag: Option<Id3v1Tag>,
34 #[lofty(tag_type = "Id3v2")]
36 pub(crate) id3v2_tag: Option<Id3v2Tag>,
37 #[lofty(tag_type = "Ape")]
39 pub(crate) ape_tag: Option<ApeTag>,
40 pub(crate) properties: ApeProperties,
42}