summaryrefslogtreecommitdiff
path: root/plugins/CyrTranslit/src/TransliterationMap.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-07-17 08:44:50 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-07-17 08:44:50 +0000
commite736ab21213b66669dde5d9a9003596706eee8bd (patch)
treeb891b19763dd047c3b34c9df8c3b32b941ce4983 /plugins/CyrTranslit/src/TransliterationMap.cpp
parentee2e419778605a5445474a33a29f2cfbb7eed245 (diff)
CSList, CyrTranslit: changed folder structure
git-svn-id: http://svn.miranda-ng.org/main/trunk@1002 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/CyrTranslit/src/TransliterationMap.cpp')
-rw-r--r--plugins/CyrTranslit/src/TransliterationMap.cpp247
1 files changed, 247 insertions, 0 deletions
diff --git a/plugins/CyrTranslit/src/TransliterationMap.cpp b/plugins/CyrTranslit/src/TransliterationMap.cpp
new file mode 100644
index 0000000000..f678c0a16e
--- /dev/null
+++ b/plugins/CyrTranslit/src/TransliterationMap.cpp
@@ -0,0 +1,247 @@
+/**
+ * CyrTranslit: the Cyrillic transliteration plug-in for Miranda IM.
+ * Copyright 2005 Ivan Krechetov.
+ *
+ * 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 (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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "plugin.h"
+#include "TransliterationMap.h"
+
+namespace CyrTranslit
+{
+
+TransliterationMap::Guard TransliterationMap::guard;
+const TransliterationMap *TransliterationMap::pInstance = 0;
+
+//------------------------------------------------------------------------------
+
+TransliterationMap::Guard::~Guard()
+{
+ delete TransliterationMap::pInstance;
+}
+
+//------------------------------------------------------------------------------
+
+const TransliterationMap& TransliterationMap::getInstance()
+{
+ if(!pInstance)
+ {
+ pInstance = new TransliterationMap();
+ }
+ return *pInstance;
+}
+
+//------------------------------------------------------------------------------
+
+TransliterationMap::TransliterationMap()
+{
+ theMap['à'] = "a";
+ theMap['á'] = "b";
+ theMap['â'] = "v";
+ theMap['ã'] = "g";
+ theMap['ä'] = "d";
+ theMap['å'] = "e";
+ theMap['¸'] = "e";
+ theMap['æ'] = "zh";
+ theMap['ç'] = "z";
+ theMap['è'] = "i";
+ theMap['é'] = "i";
+ theMap['ê'] = "k";
+ theMap['ë'] = "l";
+ theMap['ì'] = "m";
+ theMap['í'] = "n";
+ theMap['î'] = "o";
+ theMap['ï'] = "p";
+ theMap['ð'] = "r";
+ theMap['ñ'] = "s";
+ theMap['ò'] = "t";
+ theMap['ó'] = "u";
+ theMap['ô'] = "f";
+ theMap['õ'] = "kh";
+ theMap['ö'] = "ts";
+ theMap['÷'] = "ch";
+ theMap['ø'] = "sh";
+ theMap['ù'] = "sch";
+ theMap['ú'] = "`";
+ theMap['û'] = "y";
+ theMap['ü'] = "'";
+ theMap['ý'] = "e";
+ theMap['þ'] = "yu";
+ theMap['ÿ'] = "ya";
+
+ theMap['À'] = "A";
+ theMap['Á'] = "B";
+ theMap['Â'] = "V";
+ theMap['Ã'] = "G";
+ theMap['Ä'] = "D";
+ theMap['Å'] = "E";
+ theMap['¨'] = "E";
+ theMap['Æ'] = "ZH";
+ theMap['Ç'] = "Z";
+ theMap['È'] = "I";
+ theMap['É'] = "I";
+ theMap['Ê'] = "K";
+ theMap['Ë'] = "L";
+ theMap['Ì'] = "M";
+ theMap['Í'] = "N";
+ theMap['Î'] = "O";
+ theMap['Ï'] = "P";
+ theMap['Ð'] = "R";
+ theMap['Ñ'] = "S";
+ theMap['Ò'] = "T";
+ theMap['Ó'] = "U";
+ theMap['Ô'] = "F";
+ theMap['Õ'] = "KH";
+ theMap['Ö'] = "TS";
+ theMap['×'] = "CH";
+ theMap['Ø'] = "SH";
+ theMap['Ù'] = "SCH";
+ theMap['Ú'] = "`";
+ theMap['Û'] = "Y";
+ theMap['Ü'] = "'";
+ theMap['Ý'] = "E";
+ theMap['Þ'] = "YU";
+ theMap['ß'] = "YA";
+
+
+
+
+ theMapW[L'à'] = L"a";
+ theMapW[L'á'] = L"b";
+ theMapW[L'â'] = L"v";
+ theMapW[L'ã'] = L"g";
+ theMapW[L'ä'] = L"d";
+ theMapW[L'å'] = L"e";
+ theMapW[L'¸'] = L"e";
+ theMapW[L'æ'] = L"zh";
+ theMapW[L'ç'] = L"z";
+ theMapW[L'è'] = L"i";
+ theMapW[L'é'] = L"i";
+ theMapW[L'ê'] = L"k";
+ theMapW[L'ë'] = L"l";
+ theMapW[L'ì'] = L"m";
+ theMapW[L'í'] = L"n";
+ theMapW[L'î'] = L"o";
+ theMapW[L'ï'] = L"p";
+ theMapW[L'ð'] = L"r";
+ theMapW[L'ñ'] = L"s";
+ theMapW[L'ò'] = L"t";
+ theMapW[L'ó'] = L"u";
+ theMapW[L'ô'] = L"f";
+ theMapW[L'õ'] = L"kh";
+ theMapW[L'ö'] = L"ts";
+ theMapW[L'÷'] = L"ch";
+ theMapW[L'ø'] = L"sh";
+ theMapW[L'ù'] = L"sch";
+ theMapW[L'ú'] = L"`";
+ theMapW[L'û'] = L"y";
+ theMapW[L'ü'] = L"'";
+ theMapW[L'ý'] = L"e";
+ theMapW[L'þ'] = L"yu";
+ theMapW[L'ÿ'] = L"ya";
+
+ theMapW[L'À'] = L"A";
+ theMapW[L'Á'] = L"B";
+ theMapW[L'Â'] = L"V";
+ theMapW[L'Ã'] = L"G";
+ theMapW[L'Ä'] = L"D";
+ theMapW[L'Å'] = L"E";
+ theMapW[L'¨'] = L"E";
+ theMapW[L'Æ'] = L"ZH";
+ theMapW[L'Ç'] = L"Z";
+ theMapW[L'È'] = L"I";
+ theMapW[L'É'] = L"I";
+ theMapW[L'Ê'] = L"K";
+ theMapW[L'Ë'] = L"L";
+ theMapW[L'Ì'] = L"M";
+ theMapW[L'Í'] = L"N";
+ theMapW[L'Î'] = L"O";
+ theMapW[L'Ï'] = L"P";
+ theMapW[L'Ð'] = L"R";
+ theMapW[L'Ñ'] = L"S";
+ theMapW[L'Ò'] = L"T";
+ theMapW[L'Ó'] = L"U";
+ theMapW[L'Ô'] = L"F";
+ theMapW[L'Õ'] = L"KH";
+ theMapW[L'Ö'] = L"TS";
+ theMapW[L'×'] = L"CH";
+ theMapW[L'Ø'] = L"SH";
+ theMapW[L'Ù'] = L"SCH";
+ theMapW[L'Ú'] = L"`";
+ theMapW[L'Û'] = L"Y";
+ theMapW[L'Ü'] = L"'";
+ theMapW[L'Ý'] = L"E";
+ theMapW[L'Þ'] = L"YU";
+ theMapW[L'ß'] = L"YA";
+}
+
+//------------------------------------------------------------------------------
+
+std::string TransliterationMap::cyrillicToLatin(char c) const
+{
+ std::string ret(1, c);
+
+ CharMap::const_iterator it = theMap.find(c);
+ if(it != theMap.end())
+ {
+ ret = (*it).second;
+ }
+
+ return ret;
+}
+//------------------------------------------------------------------------------
+
+std::wstring TransliterationMap::cyrillicToLatin(wchar_t c) const
+{
+ std::wstring ret(1, c);
+
+ WCharMap::const_iterator it = theMapW.find(c);
+ if(it != theMapW.end())
+ {
+ ret = (*it).second;
+ }
+
+ return ret;
+}
+
+//------------------------------------------------------------------------------
+
+std::string TransliterationMap::cyrillicToLatin(const std::string &src) const
+{
+ std::string ret;
+
+ for(std::string::const_iterator i = src.begin(); i != src.end(); ++i)
+ {
+ ret += cyrillicToLatin(*i);
+ }
+
+ return ret;
+}
+//------------------------------------------------------------------------------
+
+std::wstring TransliterationMap::cyrillicToLatin(const std::wstring &src) const
+{
+ std::wstring ret;
+
+ for(std::wstring::const_iterator i = src.begin(); i != src.end(); ++i)
+ {
+ ret += cyrillicToLatin(*i);
+ }
+
+ return ret;
+}
+
+} \ No newline at end of file