1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use std::io;
use crate::archive::Archive;
use crate::pakindexv1::PakIndexV1;
use crate::pakindexv2::PakIndexV2;
use crate::PakVersion;
#[derive(Debug)]
pub enum PakIndex {
V1(PakIndexV1),
V2(PakIndexV2),
}
impl PakIndex {
pub fn new(version: PakVersion) -> Self {
if version >= PakVersion::PathHashIndex {
PakIndex::V2(PakIndexV2::default())
} else {
PakIndex::V1(PakIndexV1::default())
}
}
pub fn ser<A: Archive>(&mut self, ar: &mut A, version: PakVersion) -> io::Result<()> {
match self {
PakIndex::V1(v1) => v1.ser_de(ar, version),
PakIndex::V2(v2) => v2.ser(ar, version),
}
}
}