summaryrefslogtreecommitdiff
path: root/zip/ZipArchive/ZipStringStoreSettings.h
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2008-06-08 11:04:43 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2008-06-08 11:04:43 +0200
commit16f738ecee689c6feb2acb7e4ef4d9bb4144ae7d (patch)
tree3d22f54f7298f81b18ed66d05a62fa8bfab359ab /zip/ZipArchive/ZipStringStoreSettings.h
downloadtuxcmd-modules-0.6.36.tar.xz
Diffstat (limited to 'zip/ZipArchive/ZipStringStoreSettings.h')
-rw-r--r--zip/ZipArchive/ZipStringStoreSettings.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/zip/ZipArchive/ZipStringStoreSettings.h b/zip/ZipArchive/ZipStringStoreSettings.h
new file mode 100644
index 0000000..5ad47d6
--- /dev/null
+++ b/zip/ZipArchive/ZipStringStoreSettings.h
@@ -0,0 +1,210 @@
+////////////////////////////////////////////////////////////////////////////////
+// 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 ZipStringStoreSettings.h
+* Includes the CZipStringStoreSettings class.
+*
+*/
+
+#if !defined(ZIPARCHIVE_ZIPSTRINGSTRINGSTORESETTINGS_DOT_H)
+#define ZIPARCHIVE_ZIPSTRINGSTRINGSTORESETTINGS_DOT_H
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include "stdafx.h"
+#include "ZipPlatform.h"
+#include "ZipCompatibility.h"
+
+
+/**
+ Settings used in storing strings inside archives.
+
+ \see
+ <a href="kb">0610051525</a>
+ \see
+ CZipArchive::SetStringStoreSettings.
+*/
+class ZIP_API CZipStringStoreSettings
+{
+public:
+
+ /**
+ Gets the default filename code page for the given platform.
+
+ \param iPlatform
+ One of the ZipCompatibility::ZipPlatforms values.
+
+ \return
+ The default filename code page.
+ */
+ static UINT GetDefaultNameCodePage(int iPlatform)
+ {
+ return iPlatform == ZipCompatibility::zcDosFat ? CP_OEMCP : CP_ACP;
+ }
+
+ /**
+ Gets the default filename code page for the current platform.
+
+ \return
+ The default filename code page.
+ */
+ static UINT GetDefaultNameCodePage()
+ {
+ return GetDefaultNameCodePage(ZipPlatform::GetSystemID());
+ }
+
+ /**
+ Gets the default comment code page. It is not platform-dependent.
+ */
+ static UINT GetDefaultCommentCodePage()
+ {
+ return CP_ACP;
+ }
+
+ /**
+ Initializes a new instance of the CZipStringStoreSettings class.
+ */
+ CZipStringStoreSettings()
+ {
+ Reset();
+ }
+
+ /**
+ Sets the default filename code page depening on the given platform.
+
+ \param iPlatform
+ One of the ZipCompatibility::ZipPlatforms values.
+ */
+ void SetDefaultNameCodePage(int iPlatform)
+ {
+ m_uNameCodePage = GetDefaultNameCodePage(iPlatform);
+ }
+
+ /**
+ Gets a value indicating whether the current filename code page is
+ standard for the current platform or not.
+
+ \return
+ \c true, if the current filename code page is standard; \c false otherwise.
+
+ \see
+ ZipPlatform::GetSystemID
+ */
+ bool IsStandardNameCodePage() const
+ {
+ return m_uNameCodePage == GetDefaultNameCodePage();
+ }
+
+ /**
+ Gets a value indicating whether the current filename code page is
+ standard for the given platform or not.
+
+ \param iPlatform
+ One of the ZipCompatibility::ZipPlatforms values.
+
+ \return
+ \c true, if the current filename code page is standard; \c false otherwise.
+ */
+ bool IsStandardNameCodePage(int iPlatform) const
+ {
+ return m_uNameCodePage == GetDefaultNameCodePage(iPlatform);
+ }
+
+ /**
+ Gets a value indicating whether the current comment code page is standard.
+
+ \return
+ \c true, if the current comment code page is standard; \c false otherwise.
+ */
+ bool IsStandardCommentCodePage() const
+ {
+ return m_uCommentCodePage == GetDefaultCommentCodePage();
+ }
+
+ /**
+ Gets a value indicating whether the current settings are
+ standard for the given platform or not.
+
+ \param iPlatform
+ One of the ZipCompatibility::ZipPlatforms values.
+
+ \return
+ \c true, if the current settings are standard; \c false otherwise.
+ */
+ bool IsStandard(int iPlatform) const
+ {
+ return !m_bStoreNameInExtraData && IsStandardNameCodePage(iPlatform) && IsStandardCommentCodePage();
+ }
+
+ /**
+ Reset the settings to its default values for the given platform.
+
+ \param iPlatform
+ One of the ZipCompatibility::ZipPlatforms values.
+ \see
+ Reset
+ */
+ void Reset(int iPlatform)
+ {
+ m_bStoreNameInExtraData = false;
+ SetDefaultNameCodePage(iPlatform);
+ m_uCommentCodePage = GetDefaultCommentCodePage();
+ }
+
+ /**
+ Reset the settings to its default values for the current platform.
+
+ \see
+ Reset(int)
+ \see
+ ZipPlatform::GetSystemID
+ */
+ void Reset()
+ {
+ Reset(ZipPlatform::GetSystemID());
+ }
+
+ /**
+ Sets the string store settings.
+
+ \see
+ CZipArchive::SetStringStoreSettings(UINT, bool, UINT)
+ */
+ void Set(UINT uFileNameCodePage, bool bStoreNameInExtraData, UINT uCommentCodePage)
+ {
+ m_uNameCodePage = uFileNameCodePage;
+ m_bStoreNameInExtraData = bStoreNameInExtraData;
+ m_uCommentCodePage = uCommentCodePage;
+ }
+
+ /**
+ If \c true, the converted filenames are stored in extra field in the archive.
+ */
+ bool m_bStoreNameInExtraData;
+
+ /**
+ The current filename code page.
+ */
+ UINT m_uNameCodePage;
+
+ /**
+ The current comment code page.
+ */
+ UINT m_uCommentCodePage;
+};
+
+#endif // !defined(ZIPARCHIVE_ZIPSTRINGSTRINGSTORESETTINGS_DOT_H)