epoc32/include/ziparchive.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// $Revision: 1.1 $
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@2
    18
#ifndef _ZIP_ARCHIVE_H_
williamr@2
    19
#define _ZIP_ARCHIVE_H_
williamr@2
    20
williamr@2
    21
#include "localtypes.h"
williamr@2
    22
williamr@2
    23
/**
williamr@2
    24
This class represents a zip archive
williamr@2
    25
williamr@2
    26
@publishedAll
williamr@2
    27
@released
williamr@2
    28
*/
williamr@2
    29
class CZipArchive: public CBase
williamr@2
    30
	{
williamr@2
    31
public:
williamr@2
    32
williamr@2
    33
    enum 
williamr@2
    34
		{	
williamr@2
    35
		KZipArchiveError 					= -256,
williamr@2
    36
	    KCentralDirectoryTrailerNotFound	= KZipArchiveError - 1,
williamr@2
    37
	    KCentralDirectoryTrailerInvalid		= KZipArchiveError - 3,
williamr@2
    38
	    KCompressionMethodNotSupported		= KZipArchiveError - 4,
williamr@2
    39
	    KLocalHeaderSignatureInvalid		= KZipArchiveError - 5,
williamr@2
    40
	    KMultiDiskArchivesNotSupported		= KZipArchiveError - 6,
williamr@2
    41
		KMemberNotFound						= KZipArchiveError - 7,
williamr@2
    42
williamr@2
    43
		KZipArchiveMinError					= KZipArchiveError - 8
williamr@2
    44
williamr@2
    45
		};
williamr@2
    46
    
williamr@2
    47
    enum TCompressionMethod 
williamr@2
    48
		{
williamr@2
    49
		
williamr@2
    50
		EStored 		= 0,
williamr@2
    51
		EShrunk 		= 1,
williamr@2
    52
		EReducedCFOne	= 2,
williamr@2
    53
		EReducedCFTwo	= 3,
williamr@2
    54
		EReducedCFThree	= 4,
williamr@2
    55
		EReducedCFFour	= 5,
williamr@2
    56
		EImploded		= 6,
williamr@2
    57
		EReservedOne	= 7,
williamr@2
    58
		EDeflated		= 8,
williamr@2
    59
		EReservedTwo	= 9,
williamr@2
    60
		EPKWAREImploded	= 10
williamr@2
    61
		
williamr@2
    62
		};
williamr@2
    63
williamr@2
    64
protected:
williamr@2
    65
williamr@2
    66
    enum // Constants 
williamr@2
    67
		{
williamr@2
    68
    
williamr@2
    69
        KCentralDirectorySignature  		= 0x06054b50,
williamr@2
    70
    	KCentralDirectoryHeaderSignature	= 0x02014b50,
williamr@2
    71
    	KLocalHeaderSignature   			= 0x04034b50
williamr@2
    72
		};
williamr@2
    73
	
williamr@2
    74
	enum // Lengths 
williamr@2
    75
		{
williamr@2
    76
	
williamr@2
    77
		KCentralDirectoryTrailerFixedLength = 22,
williamr@2
    78
		KLocalHeaderFixedLength             = 30,
williamr@2
    79
		KCentralDirectoryHeaderFixedLength	= 46,
williamr@2
    80
		KSignatureLength                    =  4,
williamr@2
    81
		KMaxTrailerSearchLength             = 65536
williamr@2
    82
		};
williamr@2
    83
	
williamr@2
    84
	enum // Offsets 
williamr@2
    85
		{
williamr@2
    86
	
williamr@2
    87
		KCentralFileHeaderFileNameLengthOffset   = 28,
williamr@2
    88
		KCentralFileHeaderExtraFieldLengthOffset = 30,
williamr@2
    89
		KCentralFileHeaderFileNameOffset         = 46
williamr@2
    90
		};
williamr@2
    91
	
williamr@2
    92
	/**
williamr@2
    93
	Represents the archive's central directory trailer - the central directory contains information
williamr@2
    94
	about files in the arhive
williamr@2
    95
williamr@2
    96
	@publishedAll
williamr@2
    97
	@released
williamr@2
    98
	*/
williamr@2
    99
    struct TCentralDirectoryTrailer 
williamr@2
   100
		{
williamr@2
   101
        TUint32 iSignature;
williamr@2
   102
		TUint16 iDiskNumber;
williamr@2
   103
		TUint16 iStartDiskNumber;
williamr@2
   104
		TUint16 iLocalEntryCount;
williamr@2
   105
		TUint16 iTotalEntryCount;
williamr@2
   106
		TUint32 iSize;
williamr@2
   107
		TUint32 iOffset;
williamr@2
   108
		TUint16 iCommentLength;
williamr@2
   109
		// comment -- variable length
williamr@2
   110
		};
williamr@2
   111
williamr@2
   112
	/**
williamr@2
   113
	Represents the archive's central directory header - the central directory contains information
williamr@2
   114
	about files in the arhive
williamr@2
   115
williamr@2
   116
	@publishedAll
williamr@2
   117
	@released
williamr@2
   118
	*/
williamr@2
   119
	struct TCentralDirectoryHeader 
williamr@2
   120
		{
williamr@2
   121
		TUint32 iSignature;
williamr@2
   122
		TUint16 iMadeBy;
williamr@2
   123
		TUint16 iRequired;
williamr@2
   124
		TUint16 iFlags;
williamr@2
   125
		TUint16 iCompressionMethod;
williamr@2
   126
		TUint16 iLastModifiedFileTime;
williamr@2
   127
		TUint16 iLastModifiedFileDate;
williamr@2
   128
		TUint32 iCRC32;
williamr@2
   129
		TUint32 iCompressedSize;
williamr@2
   130
		TUint32 iUncompressedSize;
williamr@2
   131
		TUint16 iFileNameLength;
williamr@2
   132
		TUint16 iExtraFieldLength;
williamr@2
   133
		TUint16 iFileCommentLength;
williamr@2
   134
		TUint16 iDiskNumberStart;
williamr@2
   135
		TUint16 iInternalFileAttributes;
williamr@2
   136
		TUint32 iExternalFileAttributes;
williamr@2
   137
		TUint32 iLocalHeaderOffset;
williamr@2
   138
		// file name    -- variable length 
williamr@2
   139
		// extra field  -- variable length
williamr@2
   140
		// file comment -- variable length
williamr@2
   141
		};
williamr@2
   142
williamr@2
   143
	/**
williamr@2
   144
	Represents the archive's local header
williamr@2
   145
williamr@2
   146
	@publishedAll
williamr@2
   147
	@released
williamr@2
   148
	*/
williamr@2
   149
	struct TLocalHeader 
williamr@2
   150
		{
williamr@2
   151
		TUint32 iSignature;
williamr@2
   152
		TUint16 iVersionNeeded;
williamr@2
   153
		TUint16 iFlags;
williamr@2
   154
		TUint16 iCompressionMethod;
williamr@2
   155
		TUint16 iLastModifiedFileTime;
williamr@2
   156
		TUint16 iLastModifiedFileDate;
williamr@2
   157
		TUint32 iCRC32;
williamr@2
   158
		TUint32 iCompressedSize;
williamr@2
   159
		TUint32 iUncompressedSize;
williamr@2
   160
		TUint16 iFileNameLength;
williamr@2
   161
		TUint16 iExtraFieldLength;
williamr@2
   162
		// file name    -- variable length 
williamr@2
   163
		// extra field  -- variable length
williamr@2
   164
		};
williamr@2
   165
	};
williamr@2
   166
williamr@2
   167
#endif /* !_ZIP_ARCHIVE_H_ */