//---------------------------------------------------------------------------- // ObjectWindows // (C) Copyright 1993, 1994 by Borland International, All Rights Reserved // //---------------------------------------------------------------------------- #if !defined(OWL_VALIDATE_H) #define OWL_VALIDATE_H #if !defined(OWL_WINDOW_H) # include #endif #if !defined(CLASSLIB_ARRAYS_H) # include #endif #if !defined(OWL_BITSET_H) # include #endif #include // // Validator option flags // enum TValidatorOptions { voFill = 0x0001, // option to fill in chars on IsValidInput checks voTransfer = 0x0002, // option to perform conversion & transfer voOnAppend = 0x0004, // option to only validate input on appending voReserved = 0x00F8 // reserved for future use }; // // class TValidator // ----- ---------- // class _OWLCLASS TValidator : public TStreamableBase { public: class _OWLCLASS_RTL TXValidator : public TXOwl { public: TXValidator(uint resId = IDS_VALIDATORSYNTAX); }; TValidator(); virtual ~TValidator(); virtual void Error(); virtual bool IsValidInput(char far* str, bool suppressFill); virtual bool IsValid(const char far* str); virtual uint Transfer(char far* str, void* buffer, TTransferDirection direction); // Checks input against validator for completeness. Never modifies input. // Calls error if not valid. // bool Valid(const char far* str) {if (!IsValid(str)) {Error(); return false;} return true;} bool HasOption(int option) {return Options & option;} void SetOption(int option) {Options |= uint16(option);} void UnsetOption(int option) {Options &= uint16(~option);} protected: uint16 Options; DECLARE_STREAMABLE(_OWLCLASS, TValidator, 1); }; // // TPXPictureValidator result type // enum TPicResult { prComplete, prIncomplete, prEmpty, prError, prSyntax, prAmbiguous, prIncompNoFill }; // // class TPXPictureValidator // ----- ------------------- // class _OWLCLASS TPXPictureValidator : public TValidator { public: TPXPictureValidator(const char far* pic, bool autoFill=false); // // override TValidator's virtuals // void Error(); bool IsValidInput(char far* str, bool suppressFill); bool IsValid(const char far* str); virtual TPicResult Picture(char far* input, bool autoFill=false); protected: string Pic; private: bool IsComplete(TPicResult rslt); bool IsIncomplete(TPicResult rslt); void ToGroupEnd(uint termCh, uint& i); bool SkipToComma(uint termCh, uint& i); uint CalcTerm(uint termCh, uint i); TPicResult Iteration(char far* input, uint termCh, uint& i, uint& j); TPicResult Group(char far* input, uint termCh, uint& i, uint& j); TPicResult CheckComplete(uint termCh, uint& i, TPicResult rslt); TPicResult Scan(char far* input, uint termCh, uint& i, uint& j); TPicResult Process(char far* input, uint termCh, uint& i, uint& j); bool SyntaxCheck(); DECLARE_STREAMABLE(_OWLCLASS, TPXPictureValidator, 1); }; // // class TFilterValidator // ----- ---------------- // class _OWLCLASS TFilterValidator : public TValidator { public: TFilterValidator(const TCharSet& validChars); // // override TValidator's virtuals // void Error(); bool IsValid(const char far* str); bool IsValidInput(char far* str, bool suppressFill); protected: TCharSet ValidChars; DECLARE_STREAMABLE(_OWLCLASS, TFilterValidator, 1); }; // // class TRangeValidator // ----- --------------- // class _OWLCLASS TRangeValidator : public TFilterValidator { public: TRangeValidator(long min, long max); // // override TValidator's virtuals // void Error(); bool IsValid(const char far* str); uint Transfer(char far* str, void* buffer, TTransferDirection direction); protected: long Min; long Max; DECLARE_STREAMABLE(_OWLCLASS, TRangeValidator, 1); }; // // class TLookupValidator // ----- ---------------- // class _OWLCLASS TLookupValidator : public TValidator { public: TLookupValidator(); // // override TValidator's virtuals // bool IsValid(const char far* str); // virtual lookup of a string virtual bool Lookup(const char far* str); DECLARE_STREAMABLE(_OWLCLASS, TLookupValidator, 1); }; // // class TSortedStringArray // ----- ------------------ // class _OWLCLASS TSortedStringArray { public: typedef void (*IterFunc)(string&, void*); typedef int (*CondFunc)(const string&, void*); TSortedStringArray(int upper, int lower, int delta); int LowerBound() const; int UpperBound() const; unsigned ArraySize() const; int IsFull() const; int IsEmpty() const; unsigned GetItemsInContainer() const; int Add(const string& t); int Detach(const string& t); int Detach(int loc); int Destroy(const string& t); int Destroy(int loc); int HasMember(const string& t) const; int Find(const string& t) const; string& operator [](int loc); string& operator [](int loc) const; void ForEach(IterFunc iter, void* args); string* FirstThat(CondFunc cond, void* args) const; string* LastThat(CondFunc cond, void* args) const; void Flush(); private: TSArrayAsVector Data; friend class TSortedStringArrayIterator; }; // // class TStringLookupValidator // ----- ---------------------- // class _OWLCLASS TStringLookupValidator : public TLookupValidator { public: TStringLookupValidator(TSortedStringArray* strings); ~TStringLookupValidator(); // // override TValidator's virtuals // void Error(); // // override TLookupValidator's virtuals // bool Lookup(const char far* str); void NewStringList(TSortedStringArray* strings); protected: TSortedStringArray* Strings; DECLARE_STREAMABLE(_OWLCLASS, TStringLookupValidator, 1); }; #endif // OWL_VALIDATE_H