Add access to DCNC list.
authorCarl Hetherington <cth@carlh.net>
Sat, 20 Mar 2021 09:51:34 +0000 (10:51 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 20 Mar 2021 09:51:34 +0000 (10:51 +0100)
src/language_tag.cc
src/language_tag.h
wscript

index c2e81869ed133cbb8a10a5eeed5d6a980e3a471f..6c7e6da94e1b6429ffd33945530cfbb63f6ec915 100644 (file)
@@ -61,6 +61,8 @@ static vector<LanguageTag::SubtagData> region_list;
 static vector<LanguageTag::SubtagData> script_list;
 static vector<LanguageTag::SubtagData> extlang_list;
 
+static vector<pair<string, string>> dcnc_list;
+
 
 static
 optional<LanguageTag::SubtagData>
@@ -434,7 +436,7 @@ LanguageTag::get_subtag_description (LanguageTag::SubtagType type, string subtag
 
 
 void
-load_language_tag_list (boost::filesystem::path tags_directory, string name, vector<LanguageTag::SubtagData>& list)
+load_language_tag_list (boost::filesystem::path tags_directory, string name, std::function<void (std::string, std::string)> add)
 {
        auto f = fopen_boost (tags_directory / name, "r");
        if (!f) {
@@ -457,7 +459,7 @@ load_language_tag_list (boost::filesystem::path tags_directory, string name, vec
                }
                string b = buffer;
                trim (b);
-               list.push_back (LanguageTag::SubtagData(a, b));
+               add (a, b);
                ++i;
        }
 
@@ -468,11 +470,23 @@ load_language_tag_list (boost::filesystem::path tags_directory, string name, vec
 void
 dcp::load_language_tag_lists (boost::filesystem::path tags_directory)
 {
-       load_language_tag_list (tags_directory, "language", language_list);
-       load_language_tag_list (tags_directory, "variant", variant_list);
-       load_language_tag_list (tags_directory, "region", region_list);
-       load_language_tag_list (tags_directory, "script", script_list);
-       load_language_tag_list (tags_directory, "extlang", extlang_list);
+       auto add_subtag = [](vector<LanguageTag::SubtagData>& list, string a, string b) {
+               list.push_back (LanguageTag::SubtagData(a, b));
+       };
+
+       load_language_tag_list (tags_directory, "language", [&add_subtag](string a, string b) { add_subtag(language_list, a, b); });
+       load_language_tag_list (tags_directory, "variant",  [&add_subtag](string a, string b) { add_subtag(variant_list, a, b); });
+       load_language_tag_list (tags_directory, "region",   [&add_subtag](string a, string b) { add_subtag(region_list, a, b); });
+       load_language_tag_list (tags_directory, "script",   [&add_subtag](string a, string b) { add_subtag(script_list, a, b); });
+       load_language_tag_list (tags_directory, "extlang",  [&add_subtag](string a, string b) { add_subtag(extlang_list, a, b); });
+
+       load_language_tag_list (tags_directory, "dcnc", [](string a, string b) { dcnc_list.push_back(make_pair(a, b)); });
+}
+
+
+vector<pair<string, string>> dcp::dcnc_tags ()
+{
+       return dcnc_list;
 }
 
 
index 0f05ac12371ba3d7cdc2ffed4a88695807bdf4a7..1716a8dbdcb3c8e2a465dfcd12d7995e050ed4e3 100644 (file)
@@ -246,6 +246,9 @@ extern std::ostream& operator<<(std::ostream& os, dcp::LanguageTag const& tag);
 extern void load_language_tag_lists (boost::filesystem::path tags_directory);
 
 
+extern std::vector<std::pair<std::string, std::string>> dcnc_tags ();
+
+
 }
 
 
diff --git a/wscript b/wscript
index 83344d072c5a9d4eca7dac2bd7a600baf31c20e5..5876b1b618fca88ab4a1d98e9ca84a7c81503a54 100644 (file)
--- a/wscript
+++ b/wscript
@@ -249,7 +249,7 @@ def build(bld):
     for i in os.listdir('xsd'):
         bld.install_files('${PREFIX}/share/libdcp/xsd', os.path.join('xsd', i))
 
-    for i in ['language', 'region', 'script', 'variant', 'extlang']:
+    for i in ['language', 'region', 'script', 'variant', 'extlang', 'dcnc']:
         bld.install_files('${PREFIX}/share/libdcp/tags', os.path.join('tags', i))
 
     bld.add_post_fun(post)