1 /*********************************************************************** 2 created: Mon Jul 27 2009 3 author: Paul D Turner <paul@cegui.org.uk> 4 *************************************************************************/ 5 /*************************************************************************** 6 * Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining 9 * a copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sublicense, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be 17 * included in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 * OTHER DEALINGS IN THE SOFTWARE. 26 ***************************************************************************/ 27 #ifndef _CEGUIRegexMatcher_h_ 28 #define _CEGUIRegexMatcher_h_ 29 30 #include "CEGUI/Base.h" 31 #include "CEGUI/String.h" 32 #include "CEGUI/InputEvent.h" 33 34 // Start of CEGUI namespace section 35 namespace CEGUI 36 { 37 38 //! Interface for Regex matching support classes 39 class CEGUIEXPORT RegexMatcher : 40 public AllocatedObject<RegexMatcher> 41 { 42 public: 43 //! Enumeration of possible states when cosidering a regex match. 44 enum MatchState 45 { 46 //! String matches the regular expression completely. 47 MS_VALID, 48 //! String does not match the regular expression at all. 49 MS_INVALID, 50 /** String partially matches. Changes to the string could result in 51 * either an MS_VALID or MS_INVALID MatchState. 52 */ 53 MS_PARTIAL 54 }; 55 56 //! Destructor. ~RegexMatcher()57 virtual ~RegexMatcher() {} 58 //! Set the regex string that will be matched against. 59 virtual void setRegexString(const String& regex) = 0; 60 //! Return reference to current regex string set. 61 virtual const String& getRegexString() const = 0; 62 //! Return the MatchState result for the given String. 63 virtual MatchState getMatchStateOfString(const String& str) const = 0; 64 }; 65 66 /** WindowEventArgs based class that is used for notifications regarding 67 * RegexMatcher::MatchState changes for some component. 68 */ 69 class CEGUIEXPORT RegexMatchStateEventArgs : public WindowEventArgs 70 { 71 public: RegexMatchStateEventArgs(Window * wnd,RegexMatcher::MatchState state)72 RegexMatchStateEventArgs(Window* wnd, 73 RegexMatcher::MatchState state) : 74 WindowEventArgs(wnd), 75 matchState(state) 76 {} 77 78 RegexMatcher::MatchState matchState; 79 }; 80 81 } // End of CEGUI namespace section 82 83 #endif // end of guard _CEGUIRegexMatcher_h_ 84