1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 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)
|