FileMasks.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //---------------------------------------------------------------------------
  2. #ifndef FileMasksH
  3. #define FileMasksH
  4. //---------------------------------------------------------------------------
  5. class TFileMasks
  6. {
  7. public:
  8. static bool __fastcall IsMask(const AnsiString Mask);
  9. static bool __fastcall SingleMaskMatch(const AnsiString Mask, const AnsiString FileName);
  10. __fastcall TFileMasks();
  11. __fastcall TFileMasks(const TFileMasks & Source);
  12. __fastcall TFileMasks(const AnsiString AMasks);
  13. TFileMasks & __fastcall operator =(const TFileMasks & rhm);
  14. TFileMasks & __fastcall operator =(const char * rhs);
  15. TFileMasks & __fastcall operator =(const AnsiString rhs);
  16. bool __fastcall operator ==(const TFileMasks & rhm) const;
  17. bool __fastcall operator ==(const AnsiString rhs) const;
  18. bool __fastcall Matches(AnsiString FileName, AnsiString Path = "") const;
  19. bool __fastcall Matches(AnsiString FileName, bool Local) const;
  20. bool __fastcall IsValid();
  21. bool __fastcall IsValid(int & Start, int & Length);
  22. __property AnsiString Masks = { read = FMasks, write = FMasks };
  23. private:
  24. AnsiString FMasks;
  25. };
  26. //---------------------------------------------------------------------------
  27. AnsiString __fastcall MaskFileName(AnsiString FileName, const AnsiString Mask);
  28. bool __fastcall IsFileNameMask(const AnsiString Mask);
  29. AnsiString __fastcall DelimitFileNameMask(AnsiString Mask);
  30. //---------------------------------------------------------------------------
  31. typedef void __fastcall (__closure * TCustomCommandPatternEvent)
  32. (int Index, const AnsiString Pattern, void * Arg, AnsiString & Replacement,
  33. bool & LastPass);
  34. //---------------------------------------------------------------------------
  35. class TCustomCommand
  36. {
  37. friend class TInteractiveCustomCommand;
  38. public:
  39. TCustomCommand();
  40. AnsiString __fastcall Complete(const AnsiString & Command, bool LastPass);
  41. virtual void __fastcall Validate(const AnsiString & Command);
  42. protected:
  43. void __fastcall GetToken(const AnsiString & Command,
  44. int Index, int & Len, char & PatternCmd);
  45. void __fastcall CustomValidate(const AnsiString & Command, void * Arg);
  46. bool __fastcall FindPattern(const AnsiString & Command, char PatternCmd);
  47. virtual void __fastcall ValidatePattern(const AnsiString & Command,
  48. int Index, int Len, char PatternCmd, void * Arg);
  49. virtual int __fastcall PatternLen(int Index, char PatternCmd) = 0;
  50. virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
  51. AnsiString & Replacement) = 0;
  52. };
  53. //---------------------------------------------------------------------------
  54. class TInteractiveCustomCommand : public TCustomCommand
  55. {
  56. public:
  57. TInteractiveCustomCommand(TCustomCommand * ChildCustomCommand);
  58. protected:
  59. virtual void __fastcall Prompt(int Index, const AnsiString & Prompt,
  60. AnsiString & Value);
  61. virtual int __fastcall PatternLen(int Index, char PatternCmd);
  62. virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
  63. AnsiString & Replacement);
  64. private:
  65. TCustomCommand * FChildCustomCommand;
  66. };
  67. //---------------------------------------------------------------------------
  68. class TFileCustomCommand : public TCustomCommand
  69. {
  70. public:
  71. TFileCustomCommand();
  72. TFileCustomCommand(const AnsiString & FileName, const AnsiString & FileList);
  73. virtual void __fastcall Validate(const AnsiString & Command);
  74. virtual void __fastcall ValidatePattern(const AnsiString & Command,
  75. int Index, int Len, char PatternCmd, void * Arg);
  76. bool __fastcall IsFileListCommand(const AnsiString & Command);
  77. virtual bool __fastcall IsFileCommand(const AnsiString & Command);
  78. protected:
  79. virtual int __fastcall PatternLen(int Index, char PatternCmd);
  80. virtual bool __fastcall PatternReplacement(int Index, const AnsiString & Pattern,
  81. AnsiString & Replacement);
  82. private:
  83. AnsiString FFileName;
  84. AnsiString FFileList;
  85. };
  86. //---------------------------------------------------------------------------
  87. typedef TFileCustomCommand TRemoteCustomCommand;
  88. //---------------------------------------------------------------------------
  89. #endif