MythTV  master
iso639.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 #ifndef ISO_639_2_H
3 #define ISO_639_2_H
4 
5 #include <vector>
6 
7 #include <QMap>
8 #include <QString>
9 
10 class QStringList;
11 
12 #include "mythbaseexp.h"
13 
14 extern MBASE_PUBLIC QMap<int, QString> iso639_key_to_english_name;
15 
36 MBASE_PUBLIC QString iso639_str_toName(const unsigned char *iso639);
39 MBASE_PUBLIC QString iso639_key_toName(int iso639_2);
41 MBASE_PUBLIC QStringList iso639_get_language_list(void);
42 MBASE_PUBLIC std::vector<int> iso639_get_language_key_list(void);
44 MBASE_PUBLIC QString iso639_str2_to_str3(const QString &str2);
45 
46 static inline QString iso639_key_to_str3(int code)
47 {
48  std::string str { static_cast<char>((code>>16) & 0xFF),
49  static_cast<char>((code>>8) & 0xFF),
50  static_cast<char>(code & 0xFF) };
51  return QString::fromStdString(str);
52 }
53 
55 static inline bool iso639_is_key_undefined(int code)
56 {
57  int bits = code & 0xFFFFFF;
58  return (0 == bits) || (0xFFFFFF == bits) || (0x756E64 == bits);
59 }
60 
61 static inline int iso639_str3_to_key(const unsigned char *iso639_2)
62 {
63  return ((tolower(iso639_2[0])<<16)|(tolower(iso639_2[1])<<8)|tolower(iso639_2[2]));
64 }
65 
66 static inline int iso639_str3_to_key(const char *iso639_2)
67 {
68  return iso639_str3_to_key((const unsigned char*)iso639_2);
69 }
70 
71 static inline int iso639_str3_to_key(const QString &iso639_2)
72 {
73  if (iso639_2.length() < 3)
74  return iso639_str3_to_key("und");
75  return ((iso639_2.at(0).toLatin1()<<16) |
76  (iso639_2.at(1).toLatin1()<<8) |
77  (iso639_2.at(2).toLatin1()));
78 }
79 
80 
81 static inline int iso639_str2_to_key2(const unsigned char *iso639_1)
82 {
83  return (iso639_1[0]<<8)|iso639_1[1];
84 }
85 
86 static inline int iso639_str2_to_key2(const char *iso639_1)
87 {
88  return iso639_str2_to_key2((const unsigned char*)iso639_1);
89 }
90 
91 static inline QString iso639_str_to_canonoical_str(const QString &str3)
92 {
93  int key = iso639_str3_to_key(str3.toLatin1().constData());
94  int can = iso639_key_to_canonical_key(key);
95  return iso639_key_to_str3(can);
96 }
97 
98 MBASE_PUBLIC QString GetISO639LanguageName(const QString &iso639Code);
99 MBASE_PUBLIC QString GetISO639EnglishLanguageName(const QString &iso639Code);
100 
101 #endif // ISO_639_2_H
iso639_get_language_list
MBASE_PUBLIC QStringList iso639_get_language_list(void)
Returns list of three character ISO-639 language descriptors, starting with the most preferred.
Definition: iso639.cpp:33
iso639_key_to_english_name
MBASE_PUBLIC QMap< int, QString > iso639_key_to_english_name
Definition: iso639.cpp:10
mythbaseexp.h
iso639_clear_language_list
MBASE_PUBLIC void iso639_clear_language_list(void)
Definition: iso639.cpp:22
iso639_key_to_canonical_key
MBASE_PUBLIC int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:118
iso639_is_key_undefined
static bool iso639_is_key_undefined(int code)
Returns true if the key is 0, 0xFFFFFF, or 'und'.
Definition: iso639.h:55
MBASE_PUBLIC
#define MBASE_PUBLIC
Definition: mythbaseexp.h:15
iso639_get_language_key_list
MBASE_PUBLIC std::vector< int > iso639_get_language_key_list(void)
Definition: iso639.cpp:56
GetISO639LanguageName
MBASE_PUBLIC QString GetISO639LanguageName(const QString &iso639Code)
Definition: iso639.cpp:954
iso639_key_to_str3
static QString iso639_key_to_str3(int code)
Definition: iso639.h:46
GetISO639EnglishLanguageName
MBASE_PUBLIC QString GetISO639EnglishLanguageName(const QString &iso639Code)
Definition: iso639.cpp:962
iso639_key_toName
MBASE_PUBLIC QString iso639_key_toName(int iso639_2)
Converts a canonical key to language name in English.
Definition: iso639.cpp:109
iso639_str2_to_key2
static int iso639_str2_to_key2(const unsigned char *iso639_1)
Definition: iso639.h:81
iso639_str_to_canonoical_str
static QString iso639_str_to_canonoical_str(const QString &str3)
Definition: iso639.h:91
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:61
iso639_str2_to_str3
MBASE_PUBLIC QString iso639_str2_to_str3(const QString &str2)
Definition: iso639.cpp:68
iso639_str_toName
MBASE_PUBLIC QString iso639_str_toName(const unsigned char *iso639)
Converts a 2 or 3 character iso639 string to a language name in English.
Definition: iso639.cpp:100