1*f6dc9357SAndroid Build Coastguard Worker // UniqBlocks.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_UNIQ_BLOCKS_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_UNIQ_BLOCKS_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyBuffer.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyString.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker struct C_UInt32_UString_Map 10*f6dc9357SAndroid Build Coastguard Worker { 11*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt32> Numbers; 12*f6dc9357SAndroid Build Coastguard Worker UStringVector Strings; 13*f6dc9357SAndroid Build Coastguard Worker Add_UInt32C_UInt32_UString_Map14*f6dc9357SAndroid Build Coastguard Worker void Add_UInt32(const UInt32 n) 15*f6dc9357SAndroid Build Coastguard Worker { 16*f6dc9357SAndroid Build Coastguard Worker Numbers.AddToUniqueSorted(n); 17*f6dc9357SAndroid Build Coastguard Worker } FindC_UInt32_UString_Map18*f6dc9357SAndroid Build Coastguard Worker int Find(const UInt32 n) 19*f6dc9357SAndroid Build Coastguard Worker { 20*f6dc9357SAndroid Build Coastguard Worker return Numbers.FindInSorted(n); 21*f6dc9357SAndroid Build Coastguard Worker } 22*f6dc9357SAndroid Build Coastguard Worker }; 23*f6dc9357SAndroid Build Coastguard Worker 24*f6dc9357SAndroid Build Coastguard Worker 25*f6dc9357SAndroid Build Coastguard Worker struct CUniqBlocks 26*f6dc9357SAndroid Build Coastguard Worker { 27*f6dc9357SAndroid Build Coastguard Worker CObjectVector<CByteBuffer> Bufs; 28*f6dc9357SAndroid Build Coastguard Worker CUIntVector Sorted; 29*f6dc9357SAndroid Build Coastguard Worker CUIntVector BufIndexToSortedIndex; 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker unsigned AddUniq(const Byte *data, size_t size); 32*f6dc9357SAndroid Build Coastguard Worker UInt64 GetTotalSizeInBytes() const; 33*f6dc9357SAndroid Build Coastguard Worker void GetReverseMap(); 34*f6dc9357SAndroid Build Coastguard Worker IsOnlyEmptyCUniqBlocks35*f6dc9357SAndroid Build Coastguard Worker bool IsOnlyEmpty() const 36*f6dc9357SAndroid Build Coastguard Worker { 37*f6dc9357SAndroid Build Coastguard Worker return (Bufs.Size() == 0 || (Bufs.Size() == 1 && Bufs[0].Size() == 0)); 38*f6dc9357SAndroid Build Coastguard Worker } 39*f6dc9357SAndroid Build Coastguard Worker }; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker #endif 42