1
/* 7zItem.c -- 7z Items
2
2008-10-04 : Igor Pavlov : Public domain */
6
void SzCoderInfo_Init(CSzCoderInfo *p)
11
void SzCoderInfo_Free(CSzCoderInfo *p, ISzAlloc *alloc)
13
Buf_Free(&p->Props, alloc);
17
void SzFolder_Init(CSzFolder *p)
25
p->NumPackStreams = 0;
26
p->UnpackCRCDefined = 0;
28
p->NumUnpackStreams = 0;
31
void SzFolder_Free(CSzFolder *p, ISzAlloc *alloc)
35
for (i = 0; i < p->NumCoders; i++)
36
SzCoderInfo_Free(&p->Coders[i], alloc);
37
IAlloc_Free(alloc, p->Coders);
38
IAlloc_Free(alloc, p->BindPairs);
39
IAlloc_Free(alloc, p->PackStreams);
40
IAlloc_Free(alloc, p->UnpackSizes);
44
UInt32 SzFolder_GetNumOutStreams(CSzFolder *p)
48
for (i = 0; i < p->NumCoders; i++)
49
result += p->Coders[i].NumOutStreams;
53
int SzFolder_FindBindPairForInStream(CSzFolder *p, UInt32 inStreamIndex)
56
for (i = 0; i < p->NumBindPairs; i++)
57
if (p->BindPairs[i].InIndex == inStreamIndex)
63
int SzFolder_FindBindPairForOutStream(CSzFolder *p, UInt32 outStreamIndex)
66
for (i = 0; i < p->NumBindPairs; i++)
67
if (p->BindPairs[i].OutIndex == outStreamIndex)
72
UInt64 SzFolder_GetUnpackSize(CSzFolder *p)
74
int i = (int)SzFolder_GetNumOutStreams(p);
77
for (i--; i >= 0; i--)
78
if (SzFolder_FindBindPairForOutStream(p, i) < 0)
79
return p->UnpackSizes[i];
84
void SzFile_Init(CSzFileItem *p)
89
p->FileCRCDefined = 0;
94
static void SzFile_Free(CSzFileItem *p, ISzAlloc *alloc)
96
IAlloc_Free(alloc, p->Name);
100
void SzAr_Init(CSzAr *p)
103
p->PackCRCsDefined = 0;
107
p->NumPackStreams = 0;
112
void SzAr_Free(CSzAr *p, ISzAlloc *alloc)
116
for (i = 0; i < p->NumFolders; i++)
117
SzFolder_Free(&p->Folders[i], alloc);
119
for (i = 0; i < p->NumFiles; i++)
120
SzFile_Free(&p->Files[i], alloc);
121
IAlloc_Free(alloc, p->PackSizes);
122
IAlloc_Free(alloc, p->PackCRCsDefined);
123
IAlloc_Free(alloc, p->PackCRCs);
124
IAlloc_Free(alloc, p->Folders);
125
IAlloc_Free(alloc, p->Files);