X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fstrfnd.h;h=3142cc10d180d6a9a919adb31ea8bbee0770764c;hb=b2102bfe49002f1ac10ca8288f5337e9feec7f65;hp=049ae0bae99375554e596418849fb0e1bbd1469d;hpb=8dd3622c6d3c85adbb293eacf61f76c1118c9255;p=minetest.git diff --git a/src/strfnd.h b/src/strfnd.h index 049ae0bae..3142cc10d 100644 --- a/src/strfnd.h +++ b/src/strfnd.h @@ -1,18 +1,18 @@ /* -Minetest-c55 -Copyright (C) 2010 celeron55, Perttu Ahola +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -22,8 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include -std::string trim(const std::string &str); - class Strfnd{ std::string tek; unsigned int p; @@ -65,6 +63,25 @@ class Strfnd{ //std::cout<<"palautus=\""<= tek.size()) + return ""; + + realp = p; + do { + n = tek.find(plop, p); + if (n == std::string::npos || plop == "") + n = tek.length(); + p = n + plop.length(); + } while (n > 0 && tek[n - 1] == '\\'); + + return tek.substr(realp, n - realp); + } + void skip_over(std::string chars){ while(p < tek.size()){ bool is = false; @@ -128,6 +145,24 @@ class WStrfnd{ //std::cout<<"palautus=\""<= tek.size()) + return L""; + + realp = p; + do { + n = tek.find(plop, p); + if (n == std::wstring::npos || plop == L"") + n = tek.length(); + p = n + plop.length(); + } while (n > 0 && tek[n - 1] == '\\'); + + return tek.substr(realp, n - realp); + } + bool atend(){ if(p>=tek.size()) return true; return false; @@ -137,43 +172,5 @@ class WStrfnd{ } }; -inline std::string trim(const std::string &s) -{ - std::string str = s; - while( - str.length()>0 - && - ( - str.substr(0, 1)==" " || - str.substr(0, 1)=="\t" || - str.substr(0, 1)=="\r" || - str.substr(0, 1)=="\n" || - str.substr(str.length()-1, 1)==" " || - str.substr(str.length()-1, 1)=="\t" || - str.substr(str.length()-1, 1)=="\r" || - str.substr(str.length()-1, 1)=="\n" - ) - ) - { - if (str.substr(0, 1)==" ") - str = str.substr(1,str.length()-1); - else if (str.substr(0, 1)=="\t") - str = str.substr(1,str.length()-1); - else if (str.substr(0, 1)=="\r") - str = str.substr(1,str.length()-1); - else if (str.substr(0, 1)=="\n") - str = str.substr(1,str.length()-1); - else if (str.substr(str.length()-1, 1)==" ") - str = str.substr(0,str.length()-1); - else if (str.substr(str.length()-1, 1)=="\t") - str = str.substr(0,str.length()-1); - else if (str.substr(str.length()-1, 1)=="\r") - str = str.substr(0,str.length()-1); - else if (str.substr(str.length()-1, 1)=="\n") - str = str.substr(0,str.length()-1); - } - return str; -} - #endif