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  char str[4];
49  str[0] = (code>>16) & 0xFF;
50  str[1] = (code>>8) & 0xFF;
51  str[2] = code & 0xFF;
52  str[3] = 0;
53  return QString(str);
54 }
55 
57 static inline bool iso639_is_key_undefined(int code)
58 {
59  int bits = code & 0xFFFFFF;
60  return (0 == bits) || (0xFFFFFF == bits) || (0x756E64 == bits);
61 }
62 
63 static inline int iso639_str3_to_key(const unsigned char *iso639_2)
64 {
65  return ((tolower(iso639_2[0])<<16)|(tolower(iso639_2[1])<<8)|tolower(iso639_2[2]));
66 }
67 
68 static inline int iso639_str3_to_key(const char *iso639_2)
69 {
70  return iso639_str3_to_key((const unsigned char*)iso639_2);
71 }
72 
73 static inline int iso639_str3_to_key(const QString &iso639_2)
74 {
75  if (iso639_2.length() < 3)
76  {
77  return iso639_str3_to_key("und");
78  }
79  else
80  {
81  return ((iso639_2.at(0).toLatin1()<<16) |
82  (iso639_2.at(1).toLatin1()<<8) |
83  (iso639_2.at(2).toLatin1()));
84  }
85 }
86 
87 
88 static inline int iso639_str2_to_key2(const unsigned char *iso639_1)
89 {
90  return (iso639_1[0]<<8)|iso639_1[1];
91 }
92 
93 static inline int iso639_str2_to_key2(const char *iso639_1)
94 {
95  return iso639_str2_to_key2((const unsigned char*)iso639_1);
96 }
97 
98 static inline QString iso639_str_to_canonoical_str(const QString &str3)
99 {
100  int key = iso639_str3_to_key(str3.toLatin1().constData());
101  int can = iso639_key_to_canonical_key(key);
102  return iso639_key_to_str3(can);
103 }
104 
105 MBASE_PUBLIC QString GetISO639LanguageName(const QString &iso639Code);
106 MBASE_PUBLIC QString GetISO639EnglishLanguageName(const QString &iso639Code);
107 
108 #endif // _ISO_639_2_H_
MBASE_PUBLIC QString iso639_str2_to_str3(const QString &str2)
Definition: iso639.cpp:70
static int iso639_str2_to_key2(const unsigned char *iso639_1)
Definition: iso639.h:88
MBASE_PUBLIC void iso639_clear_language_list(void)
Definition: iso639.cpp:24
MBASE_PUBLIC QString iso639_key_toName(int iso639_2)
Converts a canonical key to language name in English.
Definition: iso639.cpp:111
MBASE_PUBLIC int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:121
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:63
MBASE_PUBLIC QString GetISO639EnglishLanguageName(const QString &iso639Code)
Definition: iso639.cpp:967
#define MBASE_PUBLIC
Definition: mythbaseexp.h:15
MBASE_PUBLIC QMap< int, QString > _iso639_key_to_english_name
Definition: iso639.cpp:12
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:102
static bool iso639_is_key_undefined(int code)
Returns true if the key is 0, 0xFFFFFF, or 'und'.
Definition: iso639.h:57
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:35
MBASE_PUBLIC QString GetISO639LanguageName(const QString &iso639Code)
Definition: iso639.cpp:959
static QString iso639_str_to_canonoical_str(const QString &str3)
Definition: iso639.h:98
static QString iso639_key_to_str3(int code)
Definition: iso639.h:46
MBASE_PUBLIC std::vector< int > iso639_get_language_key_list(void)
Definition: iso639.cpp:58