Zip Code Internals [Zip Code]

Collaboration diagram for Zip Code Internals:


Detailed Description

The zip code internals are mostly undocumented, but should be fairly obvious to anyone who is familiar with the zip file format.


Classes

class  Zip::CentralDir
class  Zip::EndOfCentralDir
class  Zip::Compressor
class  Zip::ExtraField
class  Zip::FileHeader
class  Zip::ZipStatFilter
 Helper class for tracking CRC and uncompressed size. More...
class  Zip::ZipTempStream

Defines

#define ImplementCompressor(name, method)
#define CompressorCreateReadStream(name)   Stream * Compressor##name::createReadStream(const CentralDir *cdir, Stream *zipStream)
#define CompressorCreateWriteStream(name)   Stream * Compressor##name::createWriteStream(const CentralDir *cdir, Stream *zipStream)
#define DeclareExtraField(name)   name(U16 id, ExtraFieldCreateFn fnCreate) : Parent(id, fnCreate) {}
#define ImplementExtraField(name, id)   name gExtraField##name##instance(id, &createExtraField<name>);

Typedefs

typedef ExtraField *(*) Zip::ExtraFieldCreateFn ()

Enumerations

enum  Zip::CDIntFlags {
  Zip::CDFileDirty = BIT(0),
  Zip::CDFileAdded = BIT(1),
  Zip::CDFileDeleted = BIT(2),
  Zip::CDFileOpen = BIT(3)
}
 Internal flags used by the zip code when writing zips. More...
enum  Zip::CompressionMethod {
  Zip::Stored = 0,
  Zip::Shrunk = 1,
  Zip::ReducedL1 = 2,
  Zip::ReducedL2 = 3,
  Zip::ReducedL3 = 4,
  Zip::ReducedL4 = 5,
  Zip::Imploded = 6,
  Zip::ReservedTokenized = 7,
  Zip::Deflated = 8,
  Zip::EnhDefalted = 9,
  Zip::DateCompression = 10,
  Zip::ReservedPKWARE = 11,
  Zip::BZip2 = 12,
  Zip::PPMd = 98,
  Zip::AESEncrypted = 99
}
enum  Zip::FileFlags {
  Zip::Encrypted = BIT(0),
  Zip::Implode8KDictionary = BIT(1),
  Zip::Implode3ShannonFanoTrees = BIT(2),
  Zip::DeflateTypeMask = BIT(1) | BIT(2),
  Zip::FileInfoInDirectory = BIT(3),
  Zip::ReservedEnhDeflate = BIT(4),
  Zip::PatchData = BIT(5),
  Zip::StrongEncryption = BIT(6),
  Zip::UnusedReserved1 = BIT(7),
  Zip::UnusedReserved2 = BIT(8),
  Zip::UnusedReserved3 = BIT(9),
  Zip::UnusedReserved4 = BIT(10),
  Zip::UnusedReserved5 = BIT(11),
  Zip::ReservedPKWARE1 = BIT(12),
  Zip::EncryptedDirectory = BIT(13),
  Zip::ReservedPKWARE2 = BIT(14),
  Zip::ReservedPKWARE3 = BIT(15)
}

Functions

template<class T>
ExtraField * Zip::createExtraField ()


Define Documentation

#define ImplementCompressor ( name,
method   ) 

Value:

class Compressor##name : public Compressor   \
   {                                            \
   public:                                      \
      Compressor##name(S32 m, const char *n) : Compressor(m, n) {} \
      virtual Stream *createReadStream(const CentralDir *cdir, Stream *zipStream); \
      virtual Stream *createWriteStream(const CentralDir *cdir, Stream *zipStream); \
   };                                           \
   Compressor##name gCompressor##name##instance(method, #name);

#define CompressorCreateReadStream ( name   )     Stream * Compressor##name::createReadStream(const CentralDir *cdir, Stream *zipStream)

#define CompressorCreateWriteStream ( name   )     Stream * Compressor##name::createWriteStream(const CentralDir *cdir, Stream *zipStream)

#define DeclareExtraField ( name   )     name(U16 id, ExtraFieldCreateFn fnCreate) : Parent(id, fnCreate) {}

#define ImplementExtraField ( name,
id   )     name gExtraField##name##instance(id, &createExtraField<name>);


Typedef Documentation

typedef ExtraField*(*) Zip::ExtraFieldCreateFn()


Enumeration Type Documentation

Internal flags used by the zip code when writing zips.

Enumerator:
CDFileDirty 
CDFileAdded 
CDFileDeleted 
CDFileOpen 

Enumerator:
Stored 
Shrunk 
ReducedL1 
ReducedL2 
ReducedL3 
ReducedL4 
Imploded 
ReservedTokenized 
Deflated 
EnhDefalted 
DateCompression 
ReservedPKWARE 
BZip2 
PPMd 
AESEncrypted 

Enumerator:
Encrypted 
Implode8KDictionary 
Implode3ShannonFanoTrees 
DeflateTypeMask 
FileInfoInDirectory 
ReservedEnhDeflate 
PatchData 
StrongEncryption 
UnusedReserved1 
UnusedReserved2 
UnusedReserved3 
UnusedReserved4 
UnusedReserved5 
ReservedPKWARE1 
EncryptedDirectory 
ReservedPKWARE2 
ReservedPKWARE3 


Function Documentation

template<class T>
ExtraField* Zip::createExtraField (  )