| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //---------------------------------------------------------------------------
- #ifndef FileMasksH
- #define FileMasksH
- //---------------------------------------------------------------------------
- class TFileMasks
- {
- public:
- struct TParams
- {
- TParams();
- __int64 Size;
- };
- static bool __fastcall IsMask(const AnsiString Mask);
- static bool __fastcall SingleMaskMatch(const AnsiString Mask, const AnsiString FileName);
- __fastcall TFileMasks();
- __fastcall TFileMasks(const TFileMasks & Source);
- __fastcall TFileMasks(const AnsiString AMasks);
- TFileMasks & __fastcall operator =(const TFileMasks & rhm);
- TFileMasks & __fastcall operator =(const char * rhs);
- TFileMasks & __fastcall operator =(const AnsiString rhs);
- bool __fastcall operator ==(const TFileMasks & rhm) const;
- bool __fastcall operator ==(const AnsiString rhs) const;
- bool __fastcall Matches(AnsiString FileName, bool Directory,
- AnsiString Path = "", const TParams * Params = NULL) const;
- bool __fastcall Matches(AnsiString FileName, bool Local, bool Directory,
- const TParams * Params = NULL) const;
- bool __fastcall IsValid();
- bool __fastcall IsValid(int & Start, int & Length);
- __property AnsiString Masks = { read = FMasks, write = FMasks };
- private:
- AnsiString FMasks;
- static bool __fastcall MatchesMask(AnsiString FileName, bool Directory,
- AnsiString Path, const TParams * Params, AnsiString M);
- static inline bool __fastcall MatchesFileMask(const AnsiString & Filename, const AnsiString & Mask);
- };
- //---------------------------------------------------------------------------
- AnsiString __fastcall MaskFileName(AnsiString FileName, const AnsiString Mask);
- bool __fastcall IsFileNameMask(const AnsiString Mask);
- AnsiString __fastcall DelimitFileNameMask(AnsiString Mask);
- //---------------------------------------------------------------------------
- typedef void __fastcall (__closure * TCustomCommandPatternEvent)
- (int Index, const AnsiString Pattern, void * Arg, AnsiString & Replacement,
- bool & LastPass);
- //---------------------------------------------------------------------------
- class TCustomCommand
- {
- friend class TInteractiveCustomCommand;
- public:
- TCustomCommand();
- AnsiString __fastcall Complete(const AnsiString & Command, bool LastPass);
- virtual void __fastcall Validate(const AnsiString & Command);
- protected:
- static const char NoQuote;
- static const AnsiString Quotes;
- void __fastcall GetToken(const AnsiString & Command,
- int Index, int & Len, char & PatternCmd);
- void __fastcall CustomValidate(const AnsiString & Command, void * Arg);
- bool __fastcall FindPattern(const AnsiString & Command, char PatternCmd);
- virtual void __fastcall ValidatePattern(const AnsiString & Command,
- int Index, int Len, char PatternCmd, void * Arg);
- virtual int __fastcall PatternLen(int Index, char PatternCmd) = 0;
- virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
- AnsiString & Replacement, bool & Delimit) = 0;
- virtual void __fastcall DelimitReplacement(AnsiString & Replacement, char Quote);
- };
- //---------------------------------------------------------------------------
- class TInteractiveCustomCommand : public TCustomCommand
- {
- public:
- TInteractiveCustomCommand(TCustomCommand * ChildCustomCommand);
- protected:
- virtual void __fastcall Prompt(int Index, const AnsiString & Prompt,
- AnsiString & Value);
- virtual int __fastcall PatternLen(int Index, char PatternCmd);
- virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
- AnsiString & Replacement, bool & Delimit);
- private:
- TCustomCommand * FChildCustomCommand;
- };
- //---------------------------------------------------------------------------
- class TTerminal;
- struct TCustomCommandData
- {
- __fastcall TCustomCommandData();
- __fastcall TCustomCommandData(TTerminal * Terminal);
- AnsiString HostName;
- AnsiString UserName;
- AnsiString Password;
- };
- //---------------------------------------------------------------------------
- class TFileCustomCommand : public TCustomCommand
- {
- public:
- TFileCustomCommand();
- TFileCustomCommand(const TCustomCommandData & Data, const AnsiString & Path);
- TFileCustomCommand(const TCustomCommandData & Data, const AnsiString & Path,
- const AnsiString & FileName, const AnsiString & FileList);
- virtual void __fastcall Validate(const AnsiString & Command);
- virtual void __fastcall ValidatePattern(const AnsiString & Command,
- int Index, int Len, char PatternCmd, void * Arg);
- bool __fastcall IsFileListCommand(const AnsiString & Command);
- virtual bool __fastcall IsFileCommand(const AnsiString & Command);
- protected:
- virtual int __fastcall PatternLen(int Index, char PatternCmd);
- virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
- AnsiString & Replacement, bool & Delimit);
- private:
- TCustomCommandData FData;
- AnsiString FPath;
- AnsiString FFileName;
- AnsiString FFileList;
- };
- //---------------------------------------------------------------------------
- typedef TFileCustomCommand TRemoteCustomCommand;
- //---------------------------------------------------------------------------
- #endif
|