summaryrefslogtreecommitdiff
path: root/i18nlangtag
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2014-06-03 14:43:27 +0200
committerEike Rathke <erack@redhat.com>2014-06-03 14:48:47 +0200
commit4516b18f9a2e9c1bbbf013ccaedf0a526ba69dea (patch)
tree1c5ccebc84ac93a82a947c4730b4b8e87c966151 /i18nlangtag
parenta31f53d0587b39bec9dca62b49a63cee0f08f3fe (diff)
and some replacement code for lt_tag_get_privateuse(), sigh..
Change-Id: Ida5064f32a16269b16ec16c0ce9f42ea895641f9
Diffstat (limited to 'i18nlangtag')
-rw-r--r--i18nlangtag/source/languagetag/simple-langtag.cxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/i18nlangtag/source/languagetag/simple-langtag.cxx b/i18nlangtag/source/languagetag/simple-langtag.cxx
index 7693c3a1e07a..8afa42d3f6a6 100644
--- a/i18nlangtag/source/languagetag/simple-langtag.cxx
+++ b/i18nlangtag/source/languagetag/simple-langtag.cxx
@@ -141,6 +141,12 @@ struct lt_variant_t : public my_t_impl
virtual ~lt_variant_t() {}
};
+struct lt_string_t : public my_t_impl
+{
+ explicit lt_string_t() : my_t_impl() {}
+ virtual ~lt_string_t() {}
+};
+
struct lt_list_t : public my_t_impl
{
lt_list_t* mpPrev;
@@ -260,6 +266,7 @@ struct lt_tag_t : public my_t_impl
lt_script_t maScript;
lt_region_t maRegion;
my_t_list maVariants;
+ lt_string_t maPrivateUse;
explicit lt_tag_t() : my_t_impl(), maLanguage(), maScript(), maRegion(), maVariants() {}
virtual ~lt_tag_t() {}
explicit lt_tag_t( const lt_tag_t& r )
@@ -354,6 +361,13 @@ static lt_bool_t lt_tag_parse(lt_tag_t *tag,
{
(*ppSub)->assign( pStart, p);
bPrivate = true;
+ if (*pStart == 'x')
+ {
+ // Simply copy all to privateuse field, we
+ // do not care here what part actually is
+ // private.
+ tag->maPrivateUse.assign( pStart, pEnd);
+ }
}
else
return 0; // bad
@@ -531,6 +545,11 @@ static const lt_list_t *lt_tag_get_variants(const lt_tag_t *tag)
return tag ? tag->maVariants.mpList : NULL;
}
+static const lt_string_t *lt_tag_get_privateuse(const lt_tag_t *tag)
+{
+ return tag && tag->maPrivateUse.mpStr ? &tag->maPrivateUse : NULL;
+}
+
static const char *lt_lang_get_tag(const lt_lang_t *lang)
{
return lang ? lang->mpStr : NULL;
@@ -551,6 +570,11 @@ static const char *lt_variant_get_tag(const lt_variant_t *variant)
return variant ? variant->mpStr : NULL;
}
+static size_t lt_string_length(const lt_string_t *string)
+{
+ return string ? strlen(string->mpStr) : 0;
+}
+
#ifdef erDEBUG
static void lt_tag_dump(const lt_tag_t *tag)
{