00001 // -*- Mode: c++ -*- 00002 #ifndef _ISO_639_2_H_ 00003 #define _ISO_639_2_H_ 00004 00005 #include <qmap.h> 00006 #include <qstring.h> 00007 #include <qstringlist.h> 00008 #include <vector> 00009 #include "mythexp.h" 00010 using namespace std; 00011 00012 extern MPUBLIC QMap<int, QString> _iso639_key_to_english_name; 00013 00032 00033 QString iso639_str_toName(const unsigned char *iso639); 00035 QString iso639_key_toName(int iso639_2); 00036 void iso639_clear_language_list(void); 00037 QStringList iso639_get_language_list(void); 00038 vector<int> iso639_get_language_key_list(void); 00039 int iso639_key_to_canonical_key(int iso639_2); 00040 MPUBLIC QString iso639_str2_to_str3(const QString &str2); 00041 00042 static inline QString iso639_key_to_str3(int code) 00043 { 00044 char str[4]; 00045 str[0] = (code>>16) & 0xFF; 00046 str[1] = (code>>8) & 0xFF; 00047 str[2] = code & 0xFF; 00048 str[3] = 0; 00049 return QString(str); 00050 } 00051 00052 static inline int iso639_str3_to_key(const unsigned char *iso639_2) 00053 { 00054 return (iso639_2[0]<<16)|(iso639_2[1]<<8)|iso639_2[2]; 00055 } 00056 00057 static inline int iso639_str3_to_key(const char *iso639_2) 00058 { 00059 return iso639_str3_to_key((const unsigned char*)iso639_2); 00060 } 00061 00062 static inline int iso639_str2_to_key2(const unsigned char *iso639_1) 00063 { 00064 return (iso639_1[0]<<8)|iso639_1[1]; 00065 } 00066 00067 static inline int iso639_str2_to_key2(const char *iso639_1) 00068 { 00069 return iso639_str2_to_key2((const unsigned char*)iso639_1); 00070 } 00071 00072 static inline QString iso639_str_to_canonoical_str(const QString &str3) 00073 { 00074 int key = iso639_str3_to_key(str3.ascii()); 00075 int can = iso639_key_to_canonical_key(key); 00076 return iso639_key_to_str3(can); 00077 } 00078 00079 #endif // _ISO_639_2_H_
1.5.5