Mercurial > vba-clojure
view src/win32/7zip/7z/CPP/Windows/FileFind.h @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
line wrap: on
line source
1 // Windows/FileFind.h3 #ifndef __WINDOWS_FILEFIND_H4 #define __WINDOWS_FILEFIND_H6 #include "../Common/MyString.h"7 #include "../Common/Types.h"8 #include "FileName.h"9 #include "Defs.h"11 namespace NWindows {12 namespace NFile {13 namespace NFind {15 namespace NAttributes16 {17 inline bool IsReadOnly(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_READONLY) != 0; }18 inline bool IsHidden(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_HIDDEN) != 0; }19 inline bool IsSystem(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_SYSTEM) != 0; }20 inline bool IsDir(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_DIRECTORY) != 0; }21 inline bool IsArchived(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_ARCHIVE) != 0; }22 inline bool IsCompressed(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_COMPRESSED) != 0; }23 inline bool IsEncrypted(DWORD attrib) { return (attrib & FILE_ATTRIBUTE_ENCRYPTED) != 0; }24 }26 class CFileInfoBase27 {28 bool MatchesMask(UINT32 mask) const { return ((Attrib & mask) != 0); }29 public:30 UInt64 Size;31 FILETIME CTime;32 FILETIME ATime;33 FILETIME MTime;34 DWORD Attrib;36 #ifndef _WIN32_WCE37 UINT32 ReparseTag;38 #else39 DWORD ObjectID;40 #endif42 bool IsArchived() const { return MatchesMask(FILE_ATTRIBUTE_ARCHIVE); }43 bool IsCompressed() const { return MatchesMask(FILE_ATTRIBUTE_COMPRESSED); }44 bool IsDir() const { return MatchesMask(FILE_ATTRIBUTE_DIRECTORY); }45 bool IsEncrypted() const { return MatchesMask(FILE_ATTRIBUTE_ENCRYPTED); }46 bool IsHidden() const { return MatchesMask(FILE_ATTRIBUTE_HIDDEN); }47 bool IsNormal() const { return MatchesMask(FILE_ATTRIBUTE_NORMAL); }48 bool IsOffline() const { return MatchesMask(FILE_ATTRIBUTE_OFFLINE); }49 bool IsReadOnly() const { return MatchesMask(FILE_ATTRIBUTE_READONLY); }50 bool HasReparsePoint() const { return MatchesMask(FILE_ATTRIBUTE_REPARSE_POINT); }51 bool IsSparse() const { return MatchesMask(FILE_ATTRIBUTE_SPARSE_FILE); }52 bool IsSystem() const { return MatchesMask(FILE_ATTRIBUTE_SYSTEM); }53 bool IsTemporary() const { return MatchesMask(FILE_ATTRIBUTE_TEMPORARY); }54 };56 class CFileInfo: public CFileInfoBase57 {58 public:59 CSysString Name;60 bool IsDots() const;61 };63 #ifdef _UNICODE64 typedef CFileInfo CFileInfoW;65 #else66 class CFileInfoW: public CFileInfoBase67 {68 public:69 UString Name;70 bool IsDots() const;71 };72 #endif74 class CFindFile75 {76 friend class CEnumerator;77 HANDLE _handle;78 public:79 bool IsHandleAllocated() const { return _handle != INVALID_HANDLE_VALUE; }80 CFindFile(): _handle(INVALID_HANDLE_VALUE) {}81 ~CFindFile() { Close(); }82 bool FindFirst(LPCTSTR wildcard, CFileInfo &fileInfo);83 bool FindNext(CFileInfo &fileInfo);84 #ifndef _UNICODE85 bool FindFirst(LPCWSTR wildcard, CFileInfoW &fileInfo);86 bool FindNext(CFileInfoW &fileInfo);87 #endif88 bool Close();89 };91 bool FindFile(LPCTSTR wildcard, CFileInfo &fileInfo);93 bool DoesFileExist(LPCTSTR name);94 #ifndef _UNICODE95 bool FindFile(LPCWSTR wildcard, CFileInfoW &fileInfo);96 bool DoesFileExist(LPCWSTR name);97 #endif99 class CEnumerator100 {101 CFindFile _findFile;102 CSysString _wildcard;103 bool NextAny(CFileInfo &fileInfo);104 public:105 CEnumerator(): _wildcard(NName::kAnyStringWildcard) {}106 CEnumerator(const CSysString &wildcard): _wildcard(wildcard) {}107 bool Next(CFileInfo &fileInfo);108 bool Next(CFileInfo &fileInfo, bool &found);109 };111 #ifdef _UNICODE112 typedef CEnumerator CEnumeratorW;113 #else114 class CEnumeratorW115 {116 CFindFile _findFile;117 UString _wildcard;118 bool NextAny(CFileInfoW &fileInfo);119 public:120 CEnumeratorW(): _wildcard(NName::kAnyStringWildcard) {}121 CEnumeratorW(const UString &wildcard): _wildcard(wildcard) {}122 bool Next(CFileInfoW &fileInfo);123 bool Next(CFileInfoW &fileInfo, bool &found);124 };125 #endif127 class CFindChangeNotification128 {129 HANDLE _handle;130 public:131 operator HANDLE () { return _handle; }132 bool IsHandleAllocated() const { return _handle != INVALID_HANDLE_VALUE && _handle != 0; }133 CFindChangeNotification(): _handle(INVALID_HANDLE_VALUE) {}134 ~CFindChangeNotification() { Close(); }135 bool Close();136 HANDLE FindFirst(LPCTSTR pathName, bool watchSubtree, DWORD notifyFilter);137 #ifndef _UNICODE138 HANDLE FindFirst(LPCWSTR pathName, bool watchSubtree, DWORD notifyFilter);139 #endif140 bool FindNext() { return BOOLToBool(::FindNextChangeNotification(_handle)); }141 };143 #ifndef _WIN32_WCE144 bool MyGetLogicalDriveStrings(CSysStringVector &driveStrings);145 #ifndef _UNICODE146 bool MyGetLogicalDriveStrings(UStringVector &driveStrings);147 #endif148 #endif150 }}}152 #endif