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 #include "mythbaseexp.h"
11 
12 extern MBASE_PUBLIC QMap<int, QString> iso639_key_to_english_name;
13 
34 MBASE_PUBLIC QString iso639_str_toName(const unsigned char *iso639);
37 MBASE_PUBLIC QString iso639_key_toName(int iso639_2);
39 MBASE_PUBLIC QStringList iso639_get_language_list(void);
40 MBASE_PUBLIC std::vector<int> iso639_get_language_key_list(void);
42 MBASE_PUBLIC QString iso639_str2_to_str3(const QString &str2);
43 
44 static inline QString iso639_key_to_str3(int code)
45 {
46  std::string str { static_cast<char>((code>>16) & 0xFF),
47  static_cast<char>((code>>8) & 0xFF),
48  static_cast<char>(code & 0xFF) };
49  return QString::fromStdString(str);
50 }
51 
53 static inline bool iso639_is_key_undefined(int code)
54 {
55  int bits = code & 0xFFFFFF;
56  return (0 == bits) || (0xFFFFFF == bits) || (0x756E64 == bits);
57 }
58 
59 static inline int iso639_str3_to_key(const unsigned char *iso639_2)
60 {
61  return ((tolower(iso639_2[0])<<16)|(tolower(iso639_2[1])<<8)|tolower(iso639_2[2]));
62 }
63 
64 static inline int iso639_str3_to_key(const char *iso639_2)
65 {
66  return iso639_str3_to_key((const unsigned char*)iso639_2);
67 }
68 
69 static inline int iso639_str3_to_key(const QString &iso639_2)
70 {
71  if (iso639_2.length() < 3)
72  return iso639_str3_to_key("und");
73  return ((iso639_2.at(0).toLatin1()<<16) |
74  (iso639_2.at(1).toLatin1()<<8) |
75  (iso639_2.at(2).toLatin1()));
76 }
77 
78 
79 static inline int iso639_str2_to_key2(const unsigned char *iso639_1)
80 {
81  return (iso639_1[0]<<8)|iso639_1[1];
82 }
83 
84 static inline int iso639_str2_to_key2(const char *iso639_1)
85 {
86  return iso639_str2_to_key2((const unsigned char*)iso639_1);
87 }
88 
89 static inline QString iso639_str_to_canonoical_str(const QString &str3)
90 {
91  int key = iso639_str3_to_key(str3.toLatin1().constData());
92  int can = iso639_key_to_canonical_key(key);
93  return iso639_key_to_str3(can);
94 }
95 
96 MBASE_PUBLIC QString GetISO639LanguageName(const QString &iso639Code);
97 MBASE_PUBLIC QString GetISO639EnglishLanguageName(const QString &iso639Code);
98 
99 #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:53
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:44
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:79
iso639_str_to_canonoical_str
static QString iso639_str_to_canonoical_str(const QString &str3)
Definition: iso639.h:89
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:59
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