1 /*********************************************************************** 2 created: 30/5/2004 3 author: Paul D Turner 4 5 purpose: Interface to a static class containing some utility 6 functions for text / string operations 7 *************************************************************************/ 8 /*************************************************************************** 9 * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team 10 * 11 * Permission is hereby granted, free of charge, to any person obtaining 12 * a copy of this software and associated documentation files (the 13 * "Software"), to deal in the Software without restriction, including 14 * without limitation the rights to use, copy, modify, merge, publish, 15 * distribute, sublicense, and/or sell copies of the Software, and to 16 * permit persons to whom the Software is furnished to do so, subject to 17 * the following conditions: 18 * 19 * The above copyright notice and this permission notice shall be 20 * included in all copies or substantial portions of the Software. 21 * 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 25 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 26 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 27 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 28 * OTHER DEALINGS IN THE SOFTWARE. 29 ***************************************************************************/ 30 #ifndef _CEGUITextUtils_h_ 31 #define _CEGUITextUtils_h_ 32 33 #include "CEGUI/Base.h" 34 #include "CEGUI/String.h" 35 #include <vector> 36 37 // Start of CEGUI namespace section 38 namespace CEGUI 39 { 40 /*! 41 \brief 42 Text utility support class. This class is all static members. You do not create instances of this class. 43 */ 44 class CEGUIEXPORT TextUtils 45 { 46 public: 47 /************************************************************************* 48 Constants 49 *************************************************************************/ 50 static const String DefaultWhitespace; //!< The default set of whitespace 51 static const String DefaultAlphanumerical; //!< default set of alphanumericals. 52 static const String DefaultWrapDelimiters; //!< The default set of word-wrap delimiters 53 54 55 /************************************************************************* 56 Methods 57 *************************************************************************/ 58 /*! 59 \brief 60 return a String containing the the next word in a String. 61 62 This method returns a String object containing the the word, starting at index \a start_idx, of String \a str 63 as delimited by the code points specified in string \a delimiters (or the ends of the input string). 64 65 \param str 66 String object containing the input data. 67 68 \param start_idx 69 index into \a str where the search for the next word is to begin. Defaults to start of \a str. 70 71 \param delimiters 72 String object containing the set of delimiter code points to be used when determining the start and end 73 points of a word in string \a str. Defaults to whitespace. 74 75 \return 76 String object containing the next \a delimiters delimited word from \a str, starting at index \a start_idx. 77 */ 78 static String getNextWord(const String& str, String::size_type start_idx = 0, const String& delimiters = DefaultWhitespace); 79 80 81 /*! 82 \brief 83 Return the index of the first character of the word at \a idx. 84 85 /note 86 This currently uses DefaultWhitespace and DefaultAlphanumerical to determine groupings for what constitutes a 'word'. 87 88 \param str 89 String containing text. 90 91 \param idx 92 Index into \a str where search for start of word is to begin. 93 94 \return 95 Index into \a str which marks the begining of the word at index \a idx. 96 */ 97 static String::size_type getWordStartIdx(const String& str, String::size_type idx); 98 99 100 /*! 101 \brief 102 Return the index of the first character of the word after the word at \a idx. 103 104 /note 105 This currently uses DefaultWhitespace and DefaultAlphanumerical to determine groupings for what constitutes a 'word'. 106 107 \param str 108 String containing text. 109 110 \param idx 111 Index into \a str where search is to begin. 112 113 \return 114 Index into \a str which marks the begining of the word at after the word at index \a idx. 115 If \a idx is within the last word, then the return is the last index in \a str. 116 */ 117 static String::size_type getNextWordStartIdx(const String& str, String::size_type idx); 118 119 120 /*! 121 \brief 122 Trim all characters from the set specified in \a chars from the begining of \a str. 123 124 \param str 125 String object to be trimmed. 126 127 \param chars 128 String object containing the set of code points to be trimmed. 129 */ 130 static void trimLeadingChars(String& str, const String& chars); 131 132 133 /*! 134 \brief 135 Trim all characters from the set specified in \a chars from the end of \a str. 136 137 \param str 138 String object to be trimmed. 139 140 \param chars 141 String object containing the set of code points to be trimmed. 142 */ 143 static void trimTrailingChars(String& str, const String& chars); 144 145 private: 146 /************************************************************************* 147 Data 148 *************************************************************************/ 149 static String d_delimiters; //!< Current set of delimiters. 150 static String d_whitespace; //!< Current set of whitespace. 151 152 153 /************************************************************************* 154 Construction / Destruction 155 *************************************************************************/ 156 /*! 157 \brief 158 Constructor and Destructor are private. This class has all static members. 159 */ 160 TextUtils(void); 161 ~TextUtils(void); 162 }; 163 164 } // End of CEGUI namespace section 165 166 167 #endif // end of guard _CEGUITextUtils_h_ 168