From 16f738ecee689c6feb2acb7e4ef4d9bb4144ae7d Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 8 Jun 2008 11:04:43 +0200 Subject: Initial commit --- zip/ZipArchive/ZipCallbackProvider.h | 90 ++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 zip/ZipArchive/ZipCallbackProvider.h (limited to 'zip/ZipArchive/ZipCallbackProvider.h') diff --git a/zip/ZipArchive/ZipCallbackProvider.h b/zip/ZipArchive/ZipCallbackProvider.h new file mode 100644 index 0000000..1b8a6df --- /dev/null +++ b/zip/ZipArchive/ZipCallbackProvider.h @@ -0,0 +1,90 @@ +//////////////////////////////////////////////////////////////////////////////// +// This source file is part of the ZipArchive library source distribution and +// is Copyrighted 2000 - 2007 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 ZipCallbackProvider.h +* Includes the ZipArchiveLib::CZipCallbackProvider class. +* +*/ + +#if !defined(ZIPARCHIVE_ZIPCALLBACKPROVIDER_DOT_H) +#define ZIPARCHIVE_ZIPCALLBACKPROVIDER_DOT_H + +#if _MSC_VER > 1000 + #pragma once + #if defined ZIP_HAS_DLL + #pragma warning (push) + #pragma warning( disable : 4275 ) // non dll-interface used as base for dll-interface class + #endif +#endif + +#include "ZipCallback.h" +#include "ZipExport.h" +#include "ZipCollections.h" + +namespace ZipArchiveLib +{ + +/** + The storage for callback objects. A structure for the internal use only. + \see + CZipArchive::SetCallback + CZipArchive::GetCallback +*/ +class ZIP_API CZipCallbackProvider : public CZipMap +{ +public: + void Set(CZipActionCallback* pCallback, int iWhich) + { + CZipActionCallback::CallbackType cbs[] = {CZipActionCallback::cbAdd, CZipActionCallback::cbAddTmp, CZipActionCallback::cbAddStore, CZipActionCallback::cbExtract, CZipActionCallback::cbDeleteCnt, CZipActionCallback::cbDelete, CZipActionCallback::cbTest, CZipActionCallback::cbSave, CZipActionCallback::cbGet, CZipActionCallback::cbRename, CZipActionCallback::cbMoveData, CZipActionCallback::cbCalculateForMulti, CZipActionCallback::cbMultiAdd, CZipActionCallback::cbEncryptPrepare, CZipActionCallback::cbEncryptMoveData, CZipActionCallback::cbEncrypt, CZipActionCallback::cbMultiEncrypt}; + int iCount = sizeof(cbs)/sizeof(CZipActionCallback::CallbackType); + for (int i = 0; i < iCount; i++) + { + CZipActionCallback::CallbackType iCallback = cbs[i]; + if (iWhich & iCallback) + SetInternal(pCallback, iCallback); + } + } + + CZipActionCallback* Get(CZipActionCallback::CallbackType iType) + { + CZipActionCallback* pCallback = NULL; + if (Lookup(iType, pCallback)) + { + pCallback->m_iType = iType; + return pCallback; + } + else + return NULL; + } +protected: + void SetInternal(CZipActionCallback* pCallback, CZipActionCallback::CallbackType iType) + { + if (pCallback) + { + SetAt(iType, pCallback); + } + else + RemoveKey(iType); + } +}; + +} // namespace + +#if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL) + #pragma warning (pop) +#endif + + +#endif // !defined(ZIPARCHIVE_ZIPCALLBACKPROVIDER_DOT_H) -- cgit v1.2.3