////////////////////////////////////////////////////////////////////////////////
// This source file is part of the ZipArchive library source distribution and
// is Copyrighted 2000 - 2009 by Artpol Software - Tadeusz Dracz
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// For the licensing details refer to the License.txt file.
//
// Web Site: http://www.artpol-software.com
////////////////////////////////////////////////////////////////////////////////

/**
* \file _features.h
*	Contains the definitions that enable or disable certain features in the ZipArchive Library.
*
*/

#if !defined(ZIPARCHIVE_FEATURES_DOT_H)
/// @cond
#define ZIPARCHIVE_FEATURES_DOT_H 
/// @endcond

#if _MSC_VER > 1000
#pragma once
#endif

// #define _ZIP_TRIAL
#include "_platform.h"

#ifdef __GNUC__

#ifndef __int64
	#define __int64 long long
#endif

#endif

/************ Feel free to adjust the definitions in the following block ************/
/************************************ BLOCK START ***********************************/

/**
	Define it, if you use ZIP64.

	\see
		<a href="kb">0610051629</a>
*/
// #define _ZIP_ZIP64
/**
	Define it, if you use AES.

	\see
		<a href="kb">0610201627|aes</a>
*/
// #define _ZIP_AES
/**
	Define it, if you use the BZIP2 algorithm for compression.

	\see
		<a href="kb">0610231446|bzip2</a>
*/
// #define _ZIP_BZIP2
/**
	Define it, if you want to create seekable data.

	\see
		<a href="kb">0711101739</a>

*/
// #define _ZIP_SEEK
/**
	Define it, if you want to use Unicode support for filenames and comments (WinZip compatible). This functionality is available in the Full Version only.
	Under Windows, this functionality requires Unicode compilation.

	\see
		<a href="kb">0610051525|unicode</a>

*/
// #define _ZIP_UNICODE
/**
	Define it, if you want to use custom Unicode support for filenames and comments provided by the ZipArchive Library. This functionality is available only under Windows and is deprecated.
	Requires Unicode compilation.

	\see
		<a href="kb">0610051525|custom</a>

*/
// #define _ZIP_UNICODE_CUSTOM
/**
	Define it, if you use Unicode and under Windows you decompress archives from systems that use different Unicode Normalization form for filenames (like Mac OS X).
	This functionality is available only under Windows and requires Unicode compilation.

	\see
		<a href="kb">0610051525|considerNormal</a>

*/
// #define _ZIP_UNICODE_NORMALIZE
/**
	Define it, if you use the AES encryption in a multithreaded environment or archive sharing (CZipArchive::OpenFrom).

	\see
		<a href="kb">0610201627|aes</a>
	\see
		<a href="kb">0610241003|thread</a>
*/
// #define _ZIP_USE_LOCKING
#ifndef _ZIP_ZIP64
// Uncomment this to have the index and volume numbers types defined as WORD. Otherwise they are defined as int.
#define _ZIP_STRICT_U16
#endif

/************************************* BLOCK END ***********************************/
/***** The contents below this line are usually not intended for modification ******/


/**
	Default implementation of CZipFile class. 

	\see
			<a href="kb">0610050933|fileImpl</a>
*/
#define ZIP_ZFI_DEFAULT 0

/**
	STL implementation of CZipFile class. 

	\see
			<a href="kb">0610050933|fileImpl</a>
*/
#define ZIP_ZFI_STL 1

/**
	Windows API implementation of CZipFile class. 

	\see
			<a href="kb">0610050933|fileImpl</a>
*/
#define ZIP_ZFI_WIN 2

/**
	Active implementation of CZipFile class. 

	\see
			<a href="kb">0610050933|fileImpl</a>
*/
#define _ZIP_FILE_IMPLEMENTATION ZIP_ZFI_DEFAULT

#if defined _ZIP_ZIP64 && (defined __BORLANDC__ || (defined _MSC_VER && _MSC_VER < 1300 && defined _ZIP_IMPL_MFC))
	/**
		Define this, if you want to use Zip64 functionality in Visual Studio 6.0 MFC or Borland. These platforms do not support large files, 
		but this definition will cause to use the STL implementation of CZipFile (which has the support for large files) instead of MFC.
		\see
			<a href="kb">0610050933|fileImpl</a>
	*/
	#if _ZIP_FILE_IMPLEMENTATION != ZIP_ZFI_WIN
		#undef _ZIP_FILE_IMPLEMENTATION
		#define _ZIP_FILE_IMPLEMENTATION ZIP_ZFI_WIN		
	#endif
#endif

#ifdef _ZIP_UNICODE_NORMALIZE
	#if !defined _MSC_VER && !defined __BORLANDC__
		#undef _ZIP_UNICODE_NORMALIZE
	#else
		// uncomment the below, if you are having compilation problems with Unicode Normalization functions in ZipPlatform::MultiByteToWide
		//#if WINVER < 0x600
		//	#define WINVER 0x600
		//#endif
	#endif
#endif

#endif // !defined(ZIPARCHIVE_FEATURES_DOT_H)
