Symbian3/SDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023" xml:lang="en"><title>Zip
Compression Library Overview</title><shortdesc>The Zip Compression Library, EZLib, provides stream and file compression
and decompression functionality for the Symbian platforms. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>EZLib provides classes to handle the file, stream and buffer requirements
of zlib. It provides native Symbian APIs that access the zlib compression
algorithms and it exports some zlib and gzio C APIs from libz.dll. EZLib can
operate on streams, flat zip files (zlib format) and gzip files. </p>
<section><title>Purpose</title> <p>EZLib facilitates: </p> <ul>
<li id="GUID-EB810152-39F6-5B42-B9CA-092FD2DBADB5"><p>Compression and decompression
of memory streams </p> </li>
<li id="GUID-F1E8AD72-1E1C-5978-BBDB-FCF529238441"><p>Compression and decompression
of files </p> </li>
<li id="GUID-B08AB8E2-DE37-59B2-86D3-04F5385BFCE0"><p>Decompression of file
archives of gzip format </p> </li>
</ul> </section>
<section><title>Required background</title> <p>You must be familiar with zlib,
gzip compression and decompression formats and Deflate algorithms. You can
find further information about each of these on the IETF (Internet Engineering
Task Force) website. </p> <p> <xref href="http://www.ietf.org/rfc/rfc1950.txt" scope="external">RFC1950- zlib format</xref>  </p> <p> <xref href="http://www.ietf.org/rfc/rfc1951.txt" scope="external">RFC1951-Deflate algorithm</xref>  </p> <p> <xref href="http://www.ietf.org/rfc/rfc1952.txt" scope="external">RFC1952-gzip format</xref>  </p> </section>
<section><title>Key concepts and terms</title> <dl>
<dlentry>
<dt>zlib</dt>
<dd><p>zlib format is an open standard for lossless compressed data. It can
be implemented using a number of alternative compression algorithms. </p> </dd>
</dlentry>
<dlentry>
<dt>Compression</dt>
<dd><p>Data compression is a process of encoding information using fewer bits
(or other information-bearing units) using specific encoding algorithms. </p> </dd>
</dlentry>
<dlentry>
<dt>Decompression</dt>
<dd><p>Decompression is the process of reconverting compressed data into its
original (or nearly original) form. </p> </dd>
</dlentry>
<dlentry>
<dt>Stream</dt>
<dd><p>A stream is an abstraction that represents a device on which input
and ouput operations are performed. A stream can be considered as a source
or destination of characters of indefinite length. A stream can be accessed
only in sequence. </p> </dd>
</dlentry>
<dlentry>
<dt>gzip File Format</dt>
<dd><p>gzip is normally used to compress single files. Deflate is the compression
algorithm used. </p> </dd>
</dlentry>
<dlentry>
<dt>gzio</dt>
<dd><p>gzio APIs are input amd output functions for gzip format. </p> </dd>
</dlentry>
<dlentry>
<dt>zip Format</dt>
<dd><p>The zip file format is both data compression and archive. A zip file
contains one or more files that have been compressed where possible to reduce
file size. The zip file format permits a number of compression algorithms
but only Deflate is widely used and supported. </p> </dd>
</dlentry>
</dl> </section>
<section><title>Architecture</title> <p>The Zip Compression Library (EZLib)
provides C++ wrapper classes that encapsulate the functionality of version
1.2.3 of the zlib library. zlib and gzio APIs are written in C. The core functionality
is performed by a core library (libzcore.dll). </p> <p>EZLib provides three
DLLs which encapsulate the core functionality in Symbian C++ and Open Environment
APIs. </p> <ul>
<li id="GUID-D8A474AF-8853-5297-AF1A-CDB87AA90CDC"><p>LIBZ.DLL: This is an
Open Environment library that provides the zlib and gzio C APIs. The APIs
can be used to compress and decompress zlib and gzip file formats. </p> </li>
<li id="GUID-11302514-AFA7-548A-8EB2-2CD0FE34B1B5"><p>EZLIB.DLL: This provides
Symbian C++ wrappers for the zlib compression and decompression APIs. It offers
buffer, stream and gzip file handling classes. It also exports the C API interface
provided by LIBZ.DLL with the exception of the gzio APIs. This library can
be used to compress and decompress zlib and gzip file formats and memory streams. </p> </li>
<li id="GUID-123ED28B-2F59-593E-B1F4-DA1E70368A0C"><p>EZIP.DLL: This provides
Symbian C++ APIs for reading from and decompressing zip archives. It cannot
be used to compress archives to zip archives. </p> </li>
</ul> <fig id="GUID-14EAABD4-6E9D-53CA-9515-7504EF0482D7">
<title>              EZLib Architecture            </title>
<image href="GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e144644_href.jpg" placement="inline"/>
</fig> </section>
<section><title>APIs</title> <p>The classes exported from <filepath>ezlib.dll</filepath> are
tabulated below: </p> <table id="GUID-DD3CE37A-8241-5961-B517-03266AE463F0">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>API</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><p> <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita"><apiname>CEZCompressor</apiname></xref>  </p> </entry>
<entry><p>Provides wrapper for ‘compress’ and ‘Deflate’ zlib APIs. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita"><apiname>CEZDecompressor</apiname></xref>  </p> </entry>
<entry><p>Provides wrapper for ‘uncompress’ and ‘inflate’ zlib APIs. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref>  </p> </entry>
<entry><p>Provides basic file handling for CEZCompressor and CEZDecompressor
classes. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita"><apiname>CEZFileToGZip</apiname></xref>  </p> </entry>
<entry><p>Provides implementation to compress an uncompressed file to a gzip
file. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-20B207AF-0DEB-3B4A-8BA4-4C0D17F544AC.dita"><apiname>CEZFileToGzipBM</apiname></xref>  </p> </entry>
<entry><p>Provides buffer management class for CEZFileToGZip. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita"><apiname>CEZGZipToFile</apiname></xref>  </p> </entry>
<entry><p>Provides implementation to uncompress a gzip file to an output file. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-2C372219-941A-3D1B-885F-8BC745827445.dita"><apiname>CEZGzipToFileBM</apiname></xref>  </p> </entry>
<entry><p>Provides buffer management class for CEZGzipToFile. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-E9A5CC9F-612E-3C32-AF93-6F28D2A894EF.dita"><apiname>CEZZStream</apiname></xref>  </p> </entry>
<entry><p>Provides stream handling. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-B90BA6D6-72A2-3EB8-B8EF-CD5408107A9E.dita"><apiname>MEZBufferManager</apiname></xref>  </p> </entry>
<entry><p>Pure virtual interface class. CEZFileBufferManager derives from
this class. </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p>The classes exported from <filepath>ezip.dll</filepath> are tabulated
below: </p> <table id="GUID-067977A4-93E7-5E09-9962-63B3FA501B42">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>API</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><p> <xref href="GUID-8C8DEC50-6FC8-3DED-84E1-1EA42E2A0BB8.dita"><apiname>CZipArchive</apiname></xref>  </p> </entry>
<entry><p>Represents a zip archive and defines all relevant enumerations and
structures. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita"><apiname>CZipFile</apiname></xref>  </p> </entry>
<entry><p>Represents a zip archive contained in a single file. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref>  </p> </entry>
<entry><p>Represents a compressed file contained in a CZipFile archive file. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref>  </p> </entry>
<entry><p>Allows iteration through all the entries of an archive. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-62F9728B-9C39-3496-BAEB-6E1456E6F197.dita"><apiname>RZipFileMemberReaderStream</apiname></xref>  </p> </entry>
<entry><p>Represents an input stream for compressed files in an archive. </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p><filepath>libz.dll</filepath> provides the C open environment
and hybrid applications to support the zlib library. </p></section>
<section><title>Typical uses</title> <p>The typical uses of
the ZIP Compression Library are: </p> <ul>
<li id="GUID-374EF76C-333C-5A09-9154-42056C70DD58"><p><xref href="GUID-548CC331-8E38-5627-A925-EA386BE90258.dita"> Compression
and decompression of files(gzip)</xref>  </p> </li>
<li id="GUID-053B2446-7ED5-5263-AF3D-00866C829B4C"><p><xref href="GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita">Compression
and decompression of files(zip) </xref>  </p> </li>
<li id="GUID-BA9F0FBB-6B0C-51DB-8162-336C27002B79"><p><xref href="GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita"> Compression
and decompression of memory streams </xref>  </p> </li>
<li id="GUID-A6DDC9BD-B8F4-52CE-BE3D-AFAC549EF9ED"><p><xref href="GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita"> Decompression
of file archives </xref>  </p> </li>
</ul> </section>
</conbody></concept>