ICU-6434 Refactoring language tag support. Removed ultag.h, renamed ultag.c to uloc_tag.c.
X-SVN-Rev: 25849
This commit is contained in:
parent
82e6611b79
commit
a5ccb30821
@ -87,7 +87,7 @@ rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.
|
||||
serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \
|
||||
uidna.o usprep.o punycode.o \
|
||||
util.o util_props.o parsepos.o locbased.o cwchar.o wintz.o mutex.o dtintrv.o ucnvsel.o propsvec.o \
|
||||
ulist.o ultag.o
|
||||
ulist.o uloc_tag.o
|
||||
|
||||
## Header files to install
|
||||
HEADERS = $(srcdir)/unicode/*.h unicode/*.h
|
||||
|
@ -2745,18 +2745,14 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\uloc_tag.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ulocimp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ultag.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ultag.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\unicode\ures.h"
|
||||
>
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "uarrsort.h"
|
||||
#include "uenumimp.h"
|
||||
#include "uassert.h"
|
||||
#include "ultag.h"
|
||||
|
||||
#include <stdio.h> /* for sprintf */
|
||||
|
||||
@ -4375,24 +4374,4 @@ uloc_minimizeSubtags(const char* localeID,
|
||||
}
|
||||
}
|
||||
|
||||
U_DRAFT int32_t U_EXPORT2
|
||||
uloc_forLanguageTag(const char* langtag,
|
||||
char* localeID,
|
||||
int32_t localeIDCapacity,
|
||||
int32_t* parsedLength,
|
||||
UErrorCode* err)
|
||||
{
|
||||
return ultag_languageTagToLocale(langtag, localeID, localeIDCapacity, parsedLength, err);
|
||||
}
|
||||
|
||||
U_DRAFT int32_t U_EXPORT2
|
||||
uloc_toLanguageTag(const char* localeID,
|
||||
char* langtag,
|
||||
int32_t langtagCapacity,
|
||||
UBool strict,
|
||||
UErrorCode* err)
|
||||
{
|
||||
return ultag_localeToLanguageTag(localeID, langtag, langtagCapacity, strict, err);
|
||||
}
|
||||
|
||||
/*eof*/
|
||||
|
@ -8,11 +8,11 @@
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/ures.h"
|
||||
#include "unicode/putil.h"
|
||||
#include "unicode/uloc.h"
|
||||
#include "ustr_imp.h"
|
||||
#include "cmemory.h"
|
||||
#include "cstring.h"
|
||||
#include "putilimp.h"
|
||||
#include "ultag.h"
|
||||
|
||||
/* struct holding a single variant */
|
||||
typedef struct VariantListEntry {
|
||||
@ -28,7 +28,7 @@ typedef struct ExtensionListEntry {
|
||||
} ExtensionListEntry;
|
||||
|
||||
#define MAXEXTLANG 3
|
||||
struct ULanguageTag {
|
||||
typedef struct ULanguageTag {
|
||||
char *buf; /* holding parsed subtags */
|
||||
const char *language;
|
||||
const char *extlang[MAXEXTLANG];
|
||||
@ -38,7 +38,7 @@ struct ULanguageTag {
|
||||
ExtensionListEntry *extensions;
|
||||
const char *privateuse;
|
||||
const char *grandfathered;
|
||||
};
|
||||
} ULanguageTag;
|
||||
|
||||
#define MINLEN 2
|
||||
#define SEP '-'
|
||||
@ -98,6 +98,59 @@ static const char* DEPRECATEDLANGS[] = {
|
||||
NULL, NULL
|
||||
};
|
||||
|
||||
/*
|
||||
* -------------------------------------------------
|
||||
*
|
||||
* These ultag_ functions may be exposed as APIs later
|
||||
*
|
||||
* -------------------------------------------------
|
||||
*/
|
||||
|
||||
static ULanguageTag*
|
||||
ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status);
|
||||
|
||||
static void
|
||||
ultag_close(ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getLanguage(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getJDKLanguage(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getExtlang(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
static int32_t
|
||||
ultag_getExtlangSize(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getScript(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getRegion(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getVariant(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
static int32_t
|
||||
ultag_getVariantsSize(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
static const char*
|
||||
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
static int32_t
|
||||
ultag_getExtensionsSize(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getPrivateUse(const ULanguageTag* langtag);
|
||||
|
||||
static const char*
|
||||
ultag_getGrandfathered(const ULanguageTag* langtag);
|
||||
|
||||
/*
|
||||
* -------------------------------------------------
|
||||
*
|
||||
@ -1497,7 +1550,7 @@ _appendKeywords(ULanguageTag* langtag, char* appendAt, int32_t capacity, UErrorC
|
||||
/*
|
||||
* -------------------------------------------------
|
||||
*
|
||||
* ultag_ APIs
|
||||
* ultag_ functions
|
||||
*
|
||||
* -------------------------------------------------
|
||||
*/
|
||||
@ -1512,7 +1565,7 @@ _appendKeywords(ULanguageTag* langtag, char* appendAt, int32_t capacity, UErrorC
|
||||
#define EXTV 0x0040
|
||||
#define PRIV 0x0080
|
||||
|
||||
U_CFUNC ULanguageTag*
|
||||
static ULanguageTag*
|
||||
ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status) {
|
||||
ULanguageTag *t;
|
||||
char *tagBuf;
|
||||
@ -1874,7 +1927,7 @@ error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
U_CFUNC void
|
||||
static void
|
||||
ultag_close(ULanguageTag* langtag) {
|
||||
|
||||
if (langtag == NULL) {
|
||||
@ -1904,12 +1957,12 @@ ultag_close(ULanguageTag* langtag) {
|
||||
uprv_free(langtag);
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getLanguage(const ULanguageTag* langtag) {
|
||||
return langtag->language;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getJDKLanguage(const ULanguageTag* langtag) {
|
||||
int32_t i;
|
||||
for (i = 0; DEPRECATEDLANGS[i] != NULL; i += 2) {
|
||||
@ -1920,7 +1973,7 @@ ultag_getJDKLanguage(const ULanguageTag* langtag) {
|
||||
return langtag->language;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
|
||||
if (idx >= 0 && idx < MAXEXTLANG) {
|
||||
return langtag->extlang[idx];
|
||||
@ -1928,7 +1981,7 @@ ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
static int32_t
|
||||
ultag_getExtlangSize(const ULanguageTag* langtag) {
|
||||
int32_t size = 0;
|
||||
int32_t i;
|
||||
@ -1940,17 +1993,17 @@ ultag_getExtlangSize(const ULanguageTag* langtag) {
|
||||
return size;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getScript(const ULanguageTag* langtag) {
|
||||
return langtag->script;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getRegion(const ULanguageTag* langtag) {
|
||||
return langtag->region;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
|
||||
const char *var = NULL;
|
||||
VariantListEntry *cur = langtag->variants;
|
||||
@ -1966,7 +2019,7 @@ ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
|
||||
return var;
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
static int32_t
|
||||
ultag_getVariantsSize(const ULanguageTag* langtag) {
|
||||
int32_t size = 0;
|
||||
VariantListEntry *cur = langtag->variants;
|
||||
@ -1980,7 +2033,7 @@ ultag_getVariantsSize(const ULanguageTag* langtag) {
|
||||
return size;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
|
||||
const char *key = NULL;
|
||||
ExtensionListEntry *cur = langtag->extensions;
|
||||
@ -1996,7 +2049,7 @@ ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
|
||||
return key;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
|
||||
const char *val = NULL;
|
||||
ExtensionListEntry *cur = langtag->extensions;
|
||||
@ -2012,7 +2065,7 @@ ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
|
||||
return val;
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
static int32_t
|
||||
ultag_getExtensionsSize(const ULanguageTag* langtag) {
|
||||
int32_t size = 0;
|
||||
ExtensionListEntry *cur = langtag->extensions;
|
||||
@ -2026,22 +2079,30 @@ ultag_getExtensionsSize(const ULanguageTag* langtag) {
|
||||
return size;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getPrivateUse(const ULanguageTag* langtag) {
|
||||
return langtag->privateuse;
|
||||
}
|
||||
|
||||
U_CFUNC const char*
|
||||
static const char*
|
||||
ultag_getGrandfathered(const ULanguageTag* langtag) {
|
||||
return langtag->grandfathered;
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_localeToLanguageTag(const char* localeID,
|
||||
char* langtag,
|
||||
int32_t langtagCapacity,
|
||||
UBool strict,
|
||||
UErrorCode* status) {
|
||||
|
||||
/*
|
||||
* -------------------------------------------------
|
||||
*
|
||||
* Locale/BCP47 conversion APIs, exposed as uloc_*
|
||||
*
|
||||
* -------------------------------------------------
|
||||
*/
|
||||
U_DRAFT int32_t U_EXPORT2
|
||||
uloc_toLanguageTag(const char* localeID,
|
||||
char* langtag,
|
||||
int32_t langtagCapacity,
|
||||
UBool strict,
|
||||
UErrorCode* status) {
|
||||
/* char canonical[ULOC_FULLNAME_CAPACITY]; */ /* See #6822 */
|
||||
char canonical[256];
|
||||
int32_t reslen = 0;
|
||||
@ -2066,12 +2127,13 @@ ultag_localeToLanguageTag(const char* localeID,
|
||||
return reslen;
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_languageTagToLocale(const char* langtag,
|
||||
char* localeID,
|
||||
int32_t localeIDCapacity,
|
||||
int32_t* parsedLength,
|
||||
UErrorCode* status) {
|
||||
|
||||
U_DRAFT int32_t U_EXPORT2
|
||||
uloc_forLanguageTag(const char* langtag,
|
||||
char* localeID,
|
||||
int32_t localeIDCapacity,
|
||||
int32_t* parsedLength,
|
||||
UErrorCode* status) {
|
||||
ULanguageTag *lt;
|
||||
int32_t reslen = 0;
|
||||
const char *subtag, *p;
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 2009, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef ULTAG_H
|
||||
#define ULTAG_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
typedef struct ULanguageTag ULanguageTag;
|
||||
|
||||
U_CFUNC ULanguageTag*
|
||||
ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* status);
|
||||
|
||||
U_CFUNC void
|
||||
ultag_close(ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getLanguage(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getJDKLanguage(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getExtlang(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_getExtlangSize(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getScript(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getRegion(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getVariant(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_getVariantsSize(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx);
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_getExtensionsSize(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getPrivateUse(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC const char*
|
||||
ultag_getGrandfathered(const ULanguageTag* langtag);
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_languageTagToLocale(const char* langtag,
|
||||
char* localeID,
|
||||
int32_t localeIDCapacity,
|
||||
int32_t* parsedLength,
|
||||
UErrorCode* status);
|
||||
|
||||
U_CFUNC int32_t
|
||||
ultag_localeToLanguageTag(const char* localeID,
|
||||
char* langtag,
|
||||
int32_t langtagCapacity,
|
||||
UBool strict,
|
||||
UErrorCode* status);
|
||||
|
||||
|
||||
#endif /* ULTAG_H */
|
Loading…
Reference in New Issue
Block a user