| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Common/Wildcard.h
- #ifndef __COMMON_WILDCARD_H
- #define __COMMON_WILDCARD_H
- #include "MyString.h"
- int CompareFileNames(const UString &s1, const UString &s2);
- void SplitPathToParts(const UString &path, UStringVector &pathParts);
- void SplitPathToParts(const UString &path, UString &dirPrefix, UString &name);
- UString ExtractDirPrefixFromPath(const UString &path);
- UString ExtractFileNameFromPath(const UString &path);
- bool DoesNameContainWildCard(const UString &path);
- bool CompareWildCardWithName(const UString &mask, const UString &name);
- namespace NWildcard {
- struct CItem
- {
- UStringVector PathParts;
- bool Recursive;
- bool ForFile;
- bool ForDir;
- bool CheckPath(const UStringVector &pathParts, bool isFile) const;
- };
- class CCensorNode
- {
- CCensorNode *Parent;
- bool CheckPathCurrent(bool include, const UStringVector &pathParts, bool isFile) const;
- void AddItemSimple(bool include, CItem &item);
- bool CheckPath(UStringVector &pathParts, bool isFile, bool &include) const;
- public:
- CCensorNode(): Parent(0) { };
- CCensorNode(const UString &name, CCensorNode *parent): Name(name), Parent(parent) { };
- UString Name;
- CObjectVector<CCensorNode> SubNodes;
- CObjectVector<CItem> IncludeItems;
- CObjectVector<CItem> ExcludeItems;
- int FindSubNode(const UString &path) const;
- void AddItem(bool include, CItem &item);
- void AddItem(bool include, const UString &path, bool recursive, bool forFile, bool forDir);
- void AddItem2(bool include, const UString &path, bool recursive);
- bool NeedCheckSubDirs() const;
- bool AreThereIncludeItems() const;
- bool CheckPath(const UString &path, bool isFile, bool &include) const;
- bool CheckPath(const UString &path, bool isFile) const;
- bool CheckPathToRoot(bool include, UStringVector &pathParts, bool isFile) const;
- // bool CheckPathToRoot(const UString &path, bool isFile, bool include) const;
- void ExtendExclude(const CCensorNode &fromNodes);
- };
- struct CPair
- {
- UString Prefix;
- CCensorNode Head;
- CPair(const UString &prefix): Prefix(prefix) { };
- };
- class CCensor
- {
- int FindPrefix(const UString &prefix) const;
- public:
- CObjectVector<CPair> Pairs;
- bool AllAreRelative() const
- { return (Pairs.Size() == 1 && Pairs.Front().Prefix.IsEmpty()); }
- void AddItem(bool include, const UString &path, bool recursive);
- bool CheckPath(const UString &path, bool isFile) const;
- void ExtendExclude();
- };
- }
- #endif
|