Changeset 1889 for code/trunk/src
- Timestamp:
- Oct 6, 2008, 1:05:07 AM (16 years ago)
- Location:
- code/trunk/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/core/ConfigFileManager.cc
r1795 r1889 255 255 if (!isEmpty(temp) && !isComment(temp)) 256 256 { 257 unsigned int pos1 = temp.find('[');257 size_t pos1 = temp.find('['); 258 258 if (pos1 == 0) pos1 = line.find('['); else pos1 = std::string::npos; 259 unsigned int pos2 = line.find(']');259 size_t pos2 = line.find(']'); 260 260 261 261 if (pos1 != std::string::npos && pos2 != std::string::npos && pos2 > pos1 + 1) … … 282 282 else 283 283 { 284 unsigned int pos1 = line.find('=');284 size_t pos1 = line.find('='); 285 285 286 286 if (pos1 != std::string::npos && pos1 > 0) 287 287 { 288 288 // New entry 289 unsigned int pos2 = line.find('[');290 unsigned int pos3 = line.find(']');291 unsigned int commentposition = getNextCommentPosition(line, pos1 + 1);289 size_t pos2 = line.find('['); 290 size_t pos3 = line.find(']'); 291 size_t commentposition = getNextCommentPosition(line, pos1 + 1); 292 292 while (isBetweenQuotes(line, commentposition)) 293 293 { -
code/trunk/src/core/Executor.h
r1879 r1889 177 177 inline FunctionType getType() const 178 178 { return this->functor_->getType(); } 179 inline MultiTypegetReturnvalue() const179 inline const MultiType& getReturnvalue() const 180 180 { return this->functor_->getReturnvalue(); } 181 inline std::stringgetTypenameParam(unsigned int param) const181 inline const std::string& getTypenameParam(unsigned int param) const 182 182 { return this->functor_->getTypenameParam(param); } 183 inline std::stringgetTypenameReturnvalue() const183 inline const std::string& getTypenameReturnvalue() const 184 184 { return this->functor_->getTypenameReturnvalue(); } 185 185 -
code/trunk/src/core/Functor.h
r1879 r1889 34 34 35 35 #include "util/MultiType.h" 36 #include "util/String.h" 36 37 #include "util/Debug.h" 37 38 … … 103 104 inline bool hasReturnvalue() const { return this->hasReturnValue_; } 104 105 inline FunctionType getType() const { return this->type_; } 105 inline MultiTypegetReturnvalue() const { return this->returnedValue_; }106 107 std::string getTypenameParam(unsigned int param) const { return (param < 5) ? this->typeParam_[param] : ""; }108 std::stringgetTypenameReturnvalue() const { return this->typeReturnvalue_; }106 inline const MultiType& getReturnvalue() const { return this->returnedValue_; } 107 108 const std::string& getTypenameParam(unsigned int param) const { return (param < 5) ? this->typeParam_[param] : blankString; } 109 const std::string& getTypenameReturnvalue() const { return this->typeReturnvalue_; } 109 110 110 111 virtual void evaluateParam(unsigned int index, MultiType& param) const = 0; -
code/trunk/src/core/Namespace.cc
r1854 r1889 63 63 64 64 std::string name = this->getName(); 65 unsigned int pos = 0;65 size_t pos = 0; 66 66 while ((pos = name.find(',')) != std::string::npos) 67 67 name.replace(pos, 1, " "); -
code/trunk/src/core/NamespaceNode.cc
r1747 r1889 56 56 else 57 57 { 58 unsigned int pos = name.find("::");58 size_t pos = name.find("::"); 59 59 std::string firstPart = name; 60 60 std::string secondPart; -
code/trunk/src/core/Script.cc
r1810 r1889 33 33 34 34 #include "CoreIncludes.h" 35 36 #include "util/String.h" 35 37 36 38 #include "lua/lua.hpp" … … 131 133 } 132 134 133 unsigned int Script::getNextQuote(const std::string& text, unsigned int start)134 {135 unsigned int quote = start - 1;136 137 while ((quote = text.find('\"', quote + 1)) != std::string::npos)138 {139 unsigned int backslash = quote;140 unsigned int numbackslashes = 0;141 for (; backslash > 0; backslash--, numbackslashes++)142 if (text[backslash - 1] != '\\')143 break;144 145 if (numbackslashes % 2 == 0)146 break;147 }148 149 return quote;150 }151 152 135 std::string Script::replaceLuaTags(const std::string& text) 153 136 { 154 137 // chreate map with all Lua tags 155 std::map< unsigned int, bool> luaTags;156 { 157 unsigned int pos = 0;138 std::map<size_t, bool> luaTags; 139 { 140 size_t pos = 0; 158 141 while ((pos = text.find("<?lua", pos)) != std::string::npos) 159 142 luaTags[pos++] = true; 160 143 } 161 144 { 162 unsigned int pos = 0;145 size_t pos = 0; 163 146 while ((pos = text.find("?>", pos)) != std::string::npos) 164 147 luaTags[pos++] = false; … … 167 150 // erase all tags from the map that are between two quotes 168 151 { 169 std::map< unsigned int, bool>::iterator it = luaTags.begin();170 std::map< unsigned int, bool>::iterator it2 = it;152 std::map<size_t, bool>::iterator it = luaTags.begin(); 153 std::map<size_t, bool>::iterator it2 = it; 171 154 bool bBetweenQuotes = false; 172 unsigned int pos = 0;155 size_t pos = 0; 173 156 while ((pos = getNextQuote(text, pos)) != std::string::npos) 174 157 { … … 193 176 { 194 177 bool expectedValue = true; 195 for (std::map< unsigned int, bool>::iterator it = luaTags.begin(); it != luaTags.end(); ++it)178 for (std::map<size_t, bool>::iterator it = luaTags.begin(); it != luaTags.end(); ++it) 196 179 { 197 180 if (it->second == expectedValue) … … 212 195 std::string output; 213 196 { 214 std::map< unsigned int, bool>::iterator it = luaTags.begin();197 std::map<size_t, bool>::iterator it = luaTags.begin(); 215 198 bool bInPrintFunction = true; 216 unsigned int start = 0;217 unsigned int end = 0;199 size_t start = 0; 200 size_t end = 0; 218 201 219 202 do … … 231 214 std::string temp = text.substr(start, end - start); 232 215 { 233 unsigned int pos = 0;216 size_t pos = 0; 234 217 while ((pos = temp.find('[', pos)) != std::string::npos) 235 218 { 236 219 unsigned int tempCounter = 1; 237 unsigned int tempPos = pos++;220 size_t tempPos = pos++; 238 221 while(temp[++tempPos] == '=') { 239 222 tempCounter++; … … 250 233 } 251 234 { 252 unsigned int pos = 0;235 size_t pos = 0; 253 236 while ((pos = temp.find(']', pos)) != std::string::npos) 254 237 { 255 238 unsigned int tempCounter = 1; 256 unsigned int tempPos = pos++;239 size_t tempPos = pos++; 257 240 while(temp[++tempPos] == '=') { 258 241 tempCounter++; -
code/trunk/src/core/Script.h
r1810 r1889 76 76 inline void clearLuaOutput() { output_ = ""; } 77 77 78 unsigned int getNextQuote(const std::string& text, unsigned int start);79 78 std::string replaceLuaTags(const std::string& text); 80 79 -
code/trunk/src/core/XMLPort.h
r1856 r1889 83 83 */ 84 84 #define XMLPortParamTemplate(classname, paramname, loadfunction, savefunction, xmlelement, mode, ...) \ 85 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode)85 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode) 86 86 87 87 // -------------------- … … 105 105 */ 106 106 #define XMLPortParamLoadOnlyTemplate(classname, paramname, loadfunction, xmlelement, mode, ...) \ 107 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), 0, xmlelement, mode)107 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), 0, xmlelement, mode) 108 108 109 109 // ------------------ … … 135 135 */ 136 136 #define XMLPortParamExternTemplate(classname, externclass, object, paramname, loadfunction, savefunction, xmlelement, mode, ...) \ 137 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, externclass, object, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction), xmlelement, mode);137 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, externclass, object, paramname, orxonox::createExecutor(orxonox::createFunctor<externclass, __VA_ARGS__ >(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction), xmlelement, mode); 138 138 139 139 // ------------------- -
code/trunk/src/orxonox/objects/WorldEntity.cc
r1854 r1889 113 113 SUPER(WorldEntity, XMLPort, xmlelement, mode); 114 114 115 XMLPortParamExternTemplate(WorldEntity, Ogre::Node, this->node_, "position", setPosition, getPosition, xmlelement, mode, Ogre::Node,const Vector3&);115 XMLPortParamExternTemplate(WorldEntity, Ogre::Node, this->node_, "position", setPosition, getPosition, xmlelement, mode, const Vector3&); 116 116 XMLPortParamLoadOnly(WorldEntity, "direction", setDirectionSimple, xmlelement, mode); 117 117 XMLPortParamLoadOnly(WorldEntity, "yawpitchroll", setYawPitchRoll, xmlelement, mode); 118 118 XMLPortParam(WorldEntity, "scale", setScale, getScale, xmlelement, mode); 119 XMLPortParamTemplate(WorldEntity, "rotationAxis", setRotationAxis, getRotationAxis, xmlelement, mode, WorldEntity,const Vector3&);119 XMLPortParamTemplate(WorldEntity, "rotationAxis", setRotationAxis, getRotationAxis, xmlelement, mode, const Vector3&); 120 120 XMLPortParam(WorldEntity, "rotationRate", setRotationRate, getRotationRate, xmlelement, mode); 121 121 -
code/trunk/src/util/Convert.h
r1837 r1889 512 512 static bool convert(orxonox::Vector2* output, const std::string& input) 513 513 { 514 unsigned int opening_parenthesis, closing_parenthesis = input.find(')');514 size_t opening_parenthesis, closing_parenthesis = input.find(')'); 515 515 if ((opening_parenthesis = input.find('(')) == std::string::npos) { opening_parenthesis = 0; } else { opening_parenthesis++; } 516 516 … … 536 536 static bool convert(orxonox::Vector3* output, const std::string& input) 537 537 { 538 unsigned int opening_parenthesis, closing_parenthesis = input.find(')');538 size_t opening_parenthesis, closing_parenthesis = input.find(')'); 539 539 if ((opening_parenthesis = input.find('(')) == std::string::npos) { opening_parenthesis = 0; } else { opening_parenthesis++; } 540 540 … … 562 562 static bool convert(orxonox::Vector4* output, const std::string& input) 563 563 { 564 unsigned int opening_parenthesis, closing_parenthesis = input.find(')');564 size_t opening_parenthesis, closing_parenthesis = input.find(')'); 565 565 if ((opening_parenthesis = input.find('(')) == std::string::npos) { opening_parenthesis = 0; } else { opening_parenthesis++; } 566 566 … … 590 590 static bool convert(orxonox::Quaternion* output, const std::string& input) 591 591 { 592 unsigned int opening_parenthesis, closing_parenthesis = input.find(')');592 size_t opening_parenthesis, closing_parenthesis = input.find(')'); 593 593 if ((opening_parenthesis = input.find('(')) == std::string::npos) { opening_parenthesis = 0; } else { opening_parenthesis++; } 594 594 … … 618 618 static bool convert(orxonox::ColourValue* output, const std::string& input) 619 619 { 620 unsigned int opening_parenthesis, closing_parenthesis = input.find(')');620 size_t opening_parenthesis, closing_parenthesis = input.find(')'); 621 621 if ((opening_parenthesis = input.find('(')) == std::string::npos) { opening_parenthesis = 0; } else { opening_parenthesis++; } 622 622 -
code/trunk/src/util/String.cc
r1830 r1889 48 48 void strip(std::string* str) 49 49 { 50 unsigned int pos;50 size_t pos; 51 51 while ((pos = (*str).find(" ")) < (*str).length()) 52 52 (*str).erase(pos, 1); … … 76 76 std::string removeTrailingWhitespaces(const std::string& str) 77 77 { 78 unsigned int pos1 = 0;78 size_t pos1 = 0; 79 79 int pos2 = str.size() - 1; 80 80 for (; pos1 < str.size() && (str[pos1] == ' ' || str[pos1] == '\t' || str[pos1] == '\n'); pos1++); 81 for (; pos2 > 0&& (str[pos2] == ' ' || str[pos2] == '\t' || str[pos2] == '\n'); pos2--);81 for (; pos2 != 0 && (str[pos2] == ' ' || str[pos2] == '\t' || str[pos2] == '\n'); pos2--); 82 82 return str.substr(pos1, pos2 - pos1 + 1); 83 83 } … … 89 89 @return The position of the next quote (std::string::npos if there is no next quote) 90 90 */ 91 unsigned int getNextQuote(const std::string& str, unsigned int start)92 { 93 unsigned int quote = start - 1;91 size_t getNextQuote(const std::string& str, size_t start) 92 { 93 size_t quote = start - 1; 94 94 95 95 while ((quote = str.find('\"', quote + 1)) != std::string::npos) 96 96 { 97 unsigned int backslash = quote;98 unsigned int numbackslashes = 0;97 size_t backslash = quote; 98 size_t numbackslashes = 0; 99 99 for (; backslash > 0; backslash--, numbackslashes++) 100 100 if (str[backslash - 1] != '\\') … … 114 114 @return True if pos is between two quotes 115 115 */ 116 bool isBetweenQuotes(const std::string& str, unsigned int pos)116 bool isBetweenQuotes(const std::string& str, size_t pos) 117 117 { 118 118 if (pos == std::string::npos) 119 119 return false; 120 120 121 unsigned int quotecount = 0;122 unsigned int quote = (unsigned int)-1;121 size_t quotecount = 0; 122 size_t quote = (size_t)-1; 123 123 while ((quote = getNextQuote(str, quote + 1)) < pos) 124 124 { … … 141 141 bool hasStringBetweenQuotes(const std::string& str) 142 142 { 143 unsigned int pos1 = getNextQuote(str, 0);144 unsigned int pos2 = getNextQuote(str, pos1 + 1);143 size_t pos1 = getNextQuote(str, 0); 144 size_t pos2 = getNextQuote(str, pos1 + 1); 145 145 return (pos1 != std::string::npos && pos2 != std::string::npos && pos2 > pos1 + 1); 146 146 } … … 153 153 std::string getStringBetweenQuotes(const std::string& str) 154 154 { 155 unsigned int pos1 = getNextQuote(str, 0);156 unsigned int pos2 = getNextQuote(str, pos1 + 1);155 size_t pos1 = getNextQuote(str, 0); 156 size_t pos2 = getNextQuote(str, pos1 + 1); 157 157 if (pos1 != std::string::npos && pos2 != std::string::npos) 158 158 return str.substr(pos1, pos2 - pos1 + 1); … … 168 168 std::string stripEnclosingQuotes(const std::string& str) 169 169 { 170 unsigned int start = std::string::npos;171 unsigned int end = 0;172 173 for ( unsigned int pos = 0; (pos < str.size()) && (pos < std::string::npos); pos++)170 size_t start = std::string::npos; 171 size_t end = 0; 172 173 for (size_t pos = 0; (pos < str.size()) && (pos < std::string::npos); pos++) 174 174 { 175 175 if (str[pos] == '"') … … 183 183 } 184 184 185 for ( unsigned int pos = str.size() - 1; pos < std::string::npos; pos--)185 for (size_t pos = str.size() - 1; pos < std::string::npos; pos--) 186 186 { 187 187 if (str[pos] == '"') … … 290 290 std::string output = str; 291 291 292 for ( unsigned int pos = 0; (pos = output.find('\\', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\\"); }293 for ( unsigned int pos = 0; (pos = output.find('\n', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\n"); }294 for ( unsigned int pos = 0; (pos = output.find('\t', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\t"); }295 for ( unsigned int pos = 0; (pos = output.find('\v', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\v"); }296 for ( unsigned int pos = 0; (pos = output.find('\b', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\b"); }297 for ( unsigned int pos = 0; (pos = output.find('\r', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\r"); }298 for ( unsigned int pos = 0; (pos = output.find('\f', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\f"); }299 for ( unsigned int pos = 0; (pos = output.find('\a', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\a"); }300 for ( unsigned int pos = 0; (pos = output.find('"', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\""); }301 for ( unsigned int pos = 0; (pos = output.find('\0', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\0"); }292 for (size_t pos = 0; (pos = output.find('\\', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\\"); } 293 for (size_t pos = 0; (pos = output.find('\n', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\n"); } 294 for (size_t pos = 0; (pos = output.find('\t', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\t"); } 295 for (size_t pos = 0; (pos = output.find('\v', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\v"); } 296 for (size_t pos = 0; (pos = output.find('\b', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\b"); } 297 for (size_t pos = 0; (pos = output.find('\r', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\r"); } 298 for (size_t pos = 0; (pos = output.find('\f', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\f"); } 299 for (size_t pos = 0; (pos = output.find('\a', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\a"); } 300 for (size_t pos = 0; (pos = output.find('"', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\\""); } 301 for (size_t pos = 0; (pos = output.find('\0', pos)) < std::string::npos; pos += 2) { output.replace(pos, 1, "\\0"); } 302 302 303 303 return output; … … 315 315 316 316 std::string output = ""; 317 for ( unsigned int pos = 0; pos < str.size() - 1; )317 for (size_t pos = 0; pos < str.size() - 1; ) 318 318 { 319 319 if (str[pos] == '\\') … … 345 345 void lowercase(std::string* str) 346 346 { 347 for ( unsigned int i = 0; i < str->size(); ++i)347 for (size_t i = 0; i < str->size(); ++i) 348 348 { 349 349 (*str)[i] = (char)tolower((*str)[i]); … … 369 369 void uppercase(std::string* str) 370 370 { 371 for ( unsigned int i = 0; i < str->size(); ++i)371 for (size_t i = 0; i < str->size(); ++i) 372 372 { 373 373 (*str)[i] = (char)toupper((*str)[i]); … … 421 421 @param len Maximal number of chars to compare 422 422 */ 423 int nocaseCmp(const std::string& s1, const std::string& s2, unsigned int len)423 int nocaseCmp(const std::string& s1, const std::string& s2, size_t len) 424 424 { 425 425 if (len == 0) … … 466 466 @return The position 467 467 */ 468 unsigned int getCommentPosition(const std::string& str)468 size_t getCommentPosition(const std::string& str) 469 469 { 470 470 return getNextCommentPosition(str, 0); … … 477 477 @return The position 478 478 */ 479 unsigned int getNextCommentPosition(const std::string& str, unsigned int start)480 { 481 for ( unsigned int i = start; i < str.size(); i++)479 size_t getNextCommentPosition(const std::string& str, size_t start) 480 { 481 for (size_t i = start; i < str.size(); i++) 482 482 if (isComment(str.substr(i))) 483 483 return i; -
code/trunk/src/util/String.h
r1791 r1889 42 42 extern _UtilExport std::string blankString; 43 43 44 _UtilExport void 45 _UtilExport std::string 44 _UtilExport void strip(std::string* str); 45 _UtilExport std::string getStripped(const std::string& str); 46 46 47 _UtilExport std::string 47 _UtilExport std::string removeTrailingWhitespaces(const std::string& str); 48 48 49 _UtilExport unsigned int getNextQuote(const std::string& str, unsigned int start);50 _UtilExport bool isBetweenQuotes(const std::string& str, unsigned int pos);49 _UtilExport size_t getNextQuote(const std::string& str, size_t start); 50 _UtilExport bool isBetweenQuotes(const std::string& str, size_t pos); 51 51 52 _UtilExport bool 53 _UtilExport std::string 52 _UtilExport bool hasStringBetweenQuotes(const std::string& str); 53 _UtilExport std::string getStringBetweenQuotes(const std::string& str); 54 54 55 _UtilExport std::string 56 _UtilExport std::string 55 _UtilExport std::string stripEnclosingQuotes(const std::string& str); 56 _UtilExport std::string stripEnclosingBraces(const std::string& str); 57 57 58 _UtilExport bool 59 _UtilExport bool 60 _UtilExport bool 58 _UtilExport bool isEmpty(const std::string& str); 59 _UtilExport bool isComment(const std::string& str); 60 _UtilExport bool isNumeric(const std::string& str); 61 61 62 _UtilExport std::string 63 _UtilExport std::string 62 _UtilExport std::string addSlashes(const std::string& str); 63 _UtilExport std::string removeSlashes(const std::string& str); 64 64 65 _UtilExport void 66 _UtilExport std::string 65 _UtilExport void lowercase(std::string* str); 66 _UtilExport std::string getLowercase(const std::string& str); 67 67 68 _UtilExport void 69 _UtilExport std::string 68 _UtilExport void uppercase(std::string* str); 69 _UtilExport std::string getUppercase(const std::string& str); 70 70 71 _UtilExport int 72 _UtilExport int nocaseCmp(const std::string& s1, const std::string& s2, unsigned int len);71 _UtilExport int nocaseCmp(const std::string& s1, const std::string& s2); 72 _UtilExport int nocaseCmp(const std::string& s1, const std::string& s2, size_t len); 73 73 74 _UtilExport bool 75 _UtilExport std::string 76 _UtilExport unsigned intgetCommentPosition(const std::string& str);77 _UtilExport unsigned int getNextCommentPosition(const std::string& str, unsigned int start = 0);74 _UtilExport bool hasComment(const std::string& str); 75 _UtilExport std::string getComment(const std::string& str); 76 _UtilExport size_t getCommentPosition(const std::string& str); 77 _UtilExport size_t getNextCommentPosition(const std::string& str, size_t start = 0); 78 78 79 79 #endif /* _Util_String_H__ */
Note: See TracChangeset
for help on using the changeset viewer.