1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// 7zItem.h 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __7Z_ITEM_H 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __7Z_ITEM_H 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../../Common/Buffer.h" 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../../Common/MyString.h" 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../Common/MethodId.h" 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "7zHeader.h" 12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 13baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NArchive { 14baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace N7z { 15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 16baa3858d3f5d128a5c8466b700098109edcad5f2repo syncconst UInt64 k_AES = 0x06F10701; 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 18baa3858d3f5d128a5c8466b700098109edcad5f2repo synctypedef UInt32 CNum; 19baa3858d3f5d128a5c8466b700098109edcad5f2repo syncconst CNum kNumMax = 0x7FFFFFFF; 20baa3858d3f5d128a5c8466b700098109edcad5f2repo syncconst CNum kNumNoIndex = 0xFFFFFFFF; 21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 22baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CCoderInfo 23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CMethodId MethodID; 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CByteBuffer Props; 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum NumInStreams; 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum NumOutStreams; 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsSimpleCoder() const { return (NumInStreams == 1) && (NumOutStreams == 1); } 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 31baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CBindPair 32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum InIndex; 34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum OutIndex; 35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 37baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CFolder 38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 39baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CObjectVector<CCoderInfo> Coders; 40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<CBindPair> BindPairs; 41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<CNum> PackStreams; 42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<UInt64> UnpackSizes; 43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 UnpackCRC; 44baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool UnpackCRCDefined; 45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CFolder(): UnpackCRCDefined(false) {} 47baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 48baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 GetUnpackSize() const // test it 49baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 50baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (UnpackSizes.IsEmpty()) 51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return 0; 52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for (int i = UnpackSizes.Size() - 1; i >= 0; i--) 53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (FindBindPairForOutStream(i) < 0) 54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return UnpackSizes[i]; 55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync throw 1; 56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum GetNumOutStreams() const 59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 60baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CNum result = 0; 61baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for (int i = 0; i < Coders.Size(); i++) 62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync result += Coders[i].NumOutStreams; 63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return result; 64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 66baa3858d3f5d128a5c8466b700098109edcad5f2repo sync int FindBindPairForInStream(CNum inStreamIndex) const 67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for(int i = 0; i < BindPairs.Size(); i++) 69baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (BindPairs[i].InIndex == inStreamIndex) 70baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return i; 71baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return -1; 72baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 73baa3858d3f5d128a5c8466b700098109edcad5f2repo sync int FindBindPairForOutStream(CNum outStreamIndex) const 74baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 75baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for(int i = 0; i < BindPairs.Size(); i++) 76baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (BindPairs[i].OutIndex == outStreamIndex) 77baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return i; 78baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return -1; 79baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 80baa3858d3f5d128a5c8466b700098109edcad5f2repo sync int FindPackStreamArrayIndex(CNum inStreamIndex) const 81baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 82baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for(int i = 0; i < PackStreams.Size(); i++) 83baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (PackStreams[i] == inStreamIndex) 84baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return i; 85baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return -1; 86baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 87baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 88baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsEncrypted() const 89baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 90baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for (int i = Coders.Size() - 1; i >= 0; i--) 91baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (Coders[i].MethodID == k_AES) 92baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return true; 93baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return false; 94baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 95baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 96baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool CheckStructure() const; 97baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 98baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 99baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CUInt64DefVector 100baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 101baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<UInt64> Values; 102baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<bool> Defined; 103baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 104baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void Clear() 105baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 106baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Values.Clear(); 107baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Defined.Clear(); 108baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 109baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 110baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void ReserveDown() 111baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 112baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Values.ReserveDown(); 113baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Values.ReserveDown(); 114baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 115baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 116baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool GetItem(int index, UInt64 &value) const 117baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 118baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (index < Defined.Size() && Defined[index]) 119baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 120baa3858d3f5d128a5c8466b700098109edcad5f2repo sync value = Values[index]; 121baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return true; 122baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 123baa3858d3f5d128a5c8466b700098109edcad5f2repo sync value = 0; 124baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return false; 125baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 126baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 127baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void SetItem(int index, bool defined, UInt64 value) 128baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 129baa3858d3f5d128a5c8466b700098109edcad5f2repo sync while (index >= Defined.Size()) 130baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Defined.Add(false); 131baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Defined[index] = defined; 132baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (!defined) 133baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return; 134baa3858d3f5d128a5c8466b700098109edcad5f2repo sync while (index >= Values.Size()) 135baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Values.Add(0); 136baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Values[index] = value; 137baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 138baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 139baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool CheckSize(int size) const { return Defined.Size() == size || Defined.Size() == 0; } 140baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 141baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 142baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CFileItem 143baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 144baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 Size; 145baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 Attrib; 146baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 Crc; 147baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UString Name; 148baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 149baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool HasStream; // Test it !!! it means that there is 150baa3858d3f5d128a5c8466b700098109edcad5f2repo sync // stream in some folder. It can be empty stream 151baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsDir; 152baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool CrcDefined; 153baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool AttribDefined; 154baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 155baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CFileItem(): 156baa3858d3f5d128a5c8466b700098109edcad5f2repo sync HasStream(true), 157baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IsDir(false), 158baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CrcDefined(false), 159baa3858d3f5d128a5c8466b700098109edcad5f2repo sync AttribDefined(false) 160baa3858d3f5d128a5c8466b700098109edcad5f2repo sync {} 161baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void SetAttrib(UInt32 attrib) 162baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 163baa3858d3f5d128a5c8466b700098109edcad5f2repo sync AttribDefined = true; 164baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Attrib = attrib; 165baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 166baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 167baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 168baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CFileItem2 169baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 170baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 CTime; 171baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 ATime; 172baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 MTime; 173baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt64 StartPos; 174baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool CTimeDefined; 175baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool ATimeDefined; 176baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool MTimeDefined; 177baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool StartPosDefined; 178baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsAnti; 179baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 180baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 181baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CArchiveDatabase 182baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 183baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<UInt64> PackSizes; 184baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<bool> PackCRCsDefined; 185baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<UInt32> PackCRCs; 186baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CObjectVector<CFolder> Folders; 187baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<CNum> NumUnpackStreamsVector; 188baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CObjectVector<CFileItem> Files; 189baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 190baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CUInt64DefVector CTime; 191baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CUInt64DefVector ATime; 192baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CUInt64DefVector MTime; 193baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CUInt64DefVector StartPos; 194baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CRecordVector<bool> IsAnti; 195baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 196baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void Clear() 197baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 198baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackSizes.Clear(); 199baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCsDefined.Clear(); 200baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCs.Clear(); 201baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Folders.Clear(); 202baa3858d3f5d128a5c8466b700098109edcad5f2repo sync NumUnpackStreamsVector.Clear(); 203baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Files.Clear(); 204baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CTime.Clear(); 205baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ATime.Clear(); 206baa3858d3f5d128a5c8466b700098109edcad5f2repo sync MTime.Clear(); 207baa3858d3f5d128a5c8466b700098109edcad5f2repo sync StartPos.Clear(); 208baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IsAnti.Clear(); 209baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 210baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 211baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void ReserveDown() 212baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 213baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackSizes.ReserveDown(); 214baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCsDefined.ReserveDown(); 215baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCs.ReserveDown(); 216baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Folders.ReserveDown(); 217baa3858d3f5d128a5c8466b700098109edcad5f2repo sync NumUnpackStreamsVector.ReserveDown(); 218baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Files.ReserveDown(); 219baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CTime.ReserveDown(); 220baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ATime.ReserveDown(); 221baa3858d3f5d128a5c8466b700098109edcad5f2repo sync MTime.ReserveDown(); 222baa3858d3f5d128a5c8466b700098109edcad5f2repo sync StartPos.ReserveDown(); 223baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IsAnti.ReserveDown(); 224baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 225baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 226baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsEmpty() const 227baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 228baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return (PackSizes.IsEmpty() && 229baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCsDefined.IsEmpty() && 230baa3858d3f5d128a5c8466b700098109edcad5f2repo sync PackCRCs.IsEmpty() && 231baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Folders.IsEmpty() && 232baa3858d3f5d128a5c8466b700098109edcad5f2repo sync NumUnpackStreamsVector.IsEmpty() && 233baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Files.IsEmpty()); 234baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 235baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 236baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool CheckNumFiles() const 237baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 238baa3858d3f5d128a5c8466b700098109edcad5f2repo sync int size = Files.Size(); 239baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return ( 240baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CTime.CheckSize(size) && 241baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ATime.CheckSize(size) && 242baa3858d3f5d128a5c8466b700098109edcad5f2repo sync MTime.CheckSize(size) && 243baa3858d3f5d128a5c8466b700098109edcad5f2repo sync StartPos.CheckSize(size) && 244baa3858d3f5d128a5c8466b700098109edcad5f2repo sync (size == IsAnti.Size() || IsAnti.Size() == 0)); 245baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 246baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 247baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsSolid() const 248baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 249baa3858d3f5d128a5c8466b700098109edcad5f2repo sync for (int i = 0; i < NumUnpackStreamsVector.Size(); i++) 250baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (NumUnpackStreamsVector[i] > 1) 251baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return true; 252baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return false; 253baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 254baa3858d3f5d128a5c8466b700098109edcad5f2repo sync bool IsItemAnti(int index) const { return (index < IsAnti.Size() && IsAnti[index]); } 255baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void SetItemAnti(int index, bool isAnti) 256baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 257baa3858d3f5d128a5c8466b700098109edcad5f2repo sync while (index >= IsAnti.Size()) 258baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IsAnti.Add(false); 259baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IsAnti[index] = isAnti; 260baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 261baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 262baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void GetFile(int index, CFileItem &file, CFileItem2 &file2) const; 263baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void AddFile(const CFileItem &file, const CFileItem2 &file2); 264baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 265baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 266baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}} 267baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 268baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 269