00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014
00015
00016
00017
00018
00019
00026 #if !defined(ZIPARCHIVE_WILDCARD_DOT_H)
00027 #define ZIPARCHIVE_WILDCARD_DOT_H
00028
00029 #if _MSC_VER > 1000
00030 #pragma once
00031 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
00032 #pragma warning( push )
00033 #pragma warning( disable : 4251 ) // needs to have dll-interface to be used by clients of class
00034 #endif
00035 #endif
00036
00037 #include "ZipString.h"
00038
00039 namespace ZipArchiveLib
00040 {
00047 class ZIP_API CWildcard
00048 {
00049 public:
00050
00051 enum Match
00052 {
00053 matchNone,
00054 matchValid,
00055 matchEnd,
00056 matchAbort,
00057 matchRange,
00058 matchLiteral,
00059 matchPattern
00060 };
00061
00062 enum Pattern
00063 {
00064 patternEmpty = -4,
00065 patternClose,
00066 patternRange,
00067 patternEsc,
00068 patternValid,
00069 };
00070
00071
00089 bool IsMatch(LPCTSTR lpszText, int* iRetCode = NULL);
00090
00101 static bool IsPattern(LPCTSTR lpszPattern);
00102
00116 static bool IsPatternValid(LPCTSTR lpszPattern, int* iErrorType = NULL);
00117
00135 static int Match(LPCTSTR lpszPattern, LPCTSTR lpszText);
00136
00140 CWildcard(){}
00141
00154 CWildcard(LPCTSTR lpszPattern, bool bCaseSensitive)
00155 {
00156 SetPattern(lpszPattern, bCaseSensitive);
00157 }
00158
00159 virtual ~CWildcard(){}
00160
00173 void SetPattern(LPCTSTR lpszPattern, bool bCaseSensitive)
00174 {
00175 m_szPattern = lpszPattern;
00176 m_bCaseSensitive=bCaseSensitive;
00177 if (!bCaseSensitive)
00178 m_szPattern.MakeLower();
00179 }
00180 operator LPCTSTR()
00181 {
00182 return (LPCTSTR)m_szPattern;
00183 }
00184 private:
00185 bool m_bCaseSensitive;
00186 static int MatchAfterStar(LPCTSTR p , LPCTSTR t);
00187 CZipString m_szPattern;
00188 };
00189 }
00190
00191 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
00192 #pragma warning (pop)
00193 #endif
00194
00195 #endif