xref: /aosp_15_r20/external/lzma/CPP/7zip/Common/UniqBlocks.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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