00001 //////////////////////////////////////////////////////////////////////////////// 00002 // Scorched3D (c) 2000-2009 00003 // 00004 // This file is part of Scorched3D. 00005 // 00006 // Scorched3D is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation; either version 2 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // Scorched3D is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with Scorched3D; if not, write to the Free Software 00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 //////////////////////////////////////////////////////////////////////////////// 00020 00021 #if !defined(__INCLUDE_LangString_INCLUDE__) 00022 #define __INCLUDE_LangString_INCLUDE__ 00023 00024 #include <string> 00025 00026 #define LANG_STRING(x) LangStringUtil::convertToLang(x) 00027 00028 typedef unsigned int LangStringStorage; 00029 typedef std::basic_string<LangStringStorage> LangString; 00030 00031 class LangStringConverter 00032 { 00033 public: 00034 LangStringConverter(const char *value); 00035 LangStringConverter(const std::string &value); 00036 LangStringConverter(const LangString &value); 00037 LangStringConverter(const int value); 00038 LangStringConverter(const unsigned int value); 00039 LangStringConverter(const float value, int decimal = 0); 00040 00041 LangString &getValue() { return value_; } 00042 const LangString &getValue() const { return value_; } 00043 00044 std::string getValueAsString(); 00045 00046 private: 00047 LangString value_; 00048 00049 void appendValue(const std::string &value); 00050 }; 00051 00052 namespace LangStringUtil 00053 { 00054 LangString convertToLang(const LangStringConverter &input); 00055 void appendToLang(LangString &output, const LangStringConverter &input); 00056 void replaceToLang(LangString &output, const LangStringConverter &input); 00057 00058 std::string convertFromLang(const LangString &input); 00059 00060 void trim(LangString &str1); 00061 void lowercase(LangString &str1); 00062 int strcmp(const LangString &str1, const LangString &str2); 00063 int strcasecmp(const LangString &str1, const LangString &str2); 00064 int strlen(const LangString &str1); 00065 unsigned int *strstr(const unsigned int *str1, const LangString &str2); 00066 unsigned int *stristr(const unsigned int *str1, const LangString &str2); 00067 }; 00068 00069 #endif // __INCLUDE_LangString_INCLUDE__
1.5.3