src/java.base/windows/native/libjava/HostLocaleProviderAdapter_md.c
author naoto
Tue, 12 Nov 2019 14:05:18 -0800
changeset 59043 1a79b4bfc85a
parent 54097 9fc262a75638
permissions -rw-r--r--
8232860: Error formatting integer values with MessageFormat.format() using HOST provider Reviewed-by: rriggs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     1
/*
54097
9fc262a75638 8220227: Host Locale Provider getDisplayCountry returns error message under non-English Win10
tnakamura
parents: 47216
diff changeset
     2
 * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     4
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    10
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    15
 * accompanied this code).
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    16
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    20
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    23
 * questions.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    24
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    25
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    26
#include "sun_util_locale_provider_HostLocaleProviderAdapterImpl.h"
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
    27
#include "jni_util.h"
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    28
#include <windows.h>
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    29
#include <gdefs.h>
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    30
#include <stdlib.h>
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    31
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    32
#define BUFLEN 256
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    33
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    34
// java.util.Calendar constants
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    35
#define CALENDAR_FIELD_ERA              0           // Calendar.ERA
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    36
#define CALENDAR_FIELD_MONTH            2           // Calendar.MONTH
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    37
#define CALENDAR_STYLE_SHORT_MASK       0x00000001  // Calendar.SHORT
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    38
#define CALENDAR_STYLE_STANDALONE_MASK  0x00008000  // Calendar.STANDALONE
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    39
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    40
// global variables
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    41
typedef int (WINAPI *PGLIE)(const jchar *, LCTYPE, LPWSTR, int);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    42
typedef int (WINAPI *PGCIE)(const jchar *, CALID, LPCWSTR, CALTYPE, LPWSTR, int, LPDWORD);
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    43
typedef int (WINAPI *PECIEE)(CALINFO_ENUMPROCEXEX, const jchar *, CALID, LPCWSTR, CALTYPE, LPARAM);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    44
PGLIE pGetLocaleInfoEx;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    45
PGCIE pGetCalendarInfoEx;
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    46
PECIEE pEnumCalendarInfoExEx;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    47
BOOL initialized = FALSE;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    48
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    49
// prototypes
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    50
int getLocaleInfoWrapper(const jchar *langtag, LCTYPE type, LPWSTR data, int buflen);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    51
int getCalendarInfoWrapper(const jchar *langtag, CALID id, LPCWSTR reserved, CALTYPE type, LPWSTR data, int buflen, LPDWORD val);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    52
jint getCalendarID(const jchar *langtag);
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    53
void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jint calid, jobjectArray jarray,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    54
                       CALTYPE* pCalTypes, int offset, int length, int style);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    55
WCHAR * getNumberPattern(const jchar * langtag, const jint numberStyle);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    56
void getNumberPart(const jchar * langtag, const jint numberStyle, WCHAR * number);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    57
void getFixPart(const jchar * langtag, const jint numberStyle, BOOL positive, BOOL prefix, WCHAR * ret);
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    58
int enumCalendarInfoWrapper(const jchar * langtag, CALID calid, CALTYPE type, LPWSTR buf, int buflen);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    59
BOOL CALLBACK EnumCalendarInfoProc(LPWSTR lpCalInfoStr, CALID calid, LPWSTR lpReserved, LPARAM lParam);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    60
jobjectArray getErasImpl(JNIEnv *env, jstring jlangtag, jint calid, jint style, jobjectArray eras);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    61
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    62
// from java_props_md.c
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    63
extern __declspec(dllexport) const char * getJavaIDFromLangID(LANGID langID);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    64
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    65
CALTYPE monthsType[] = {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    66
    CAL_SMONTHNAME1,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    67
    CAL_SMONTHNAME2,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    68
    CAL_SMONTHNAME3,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    69
    CAL_SMONTHNAME4,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    70
    CAL_SMONTHNAME5,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    71
    CAL_SMONTHNAME6,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    72
    CAL_SMONTHNAME7,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    73
    CAL_SMONTHNAME8,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    74
    CAL_SMONTHNAME9,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    75
    CAL_SMONTHNAME10,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    76
    CAL_SMONTHNAME11,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    77
    CAL_SMONTHNAME12,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    78
    CAL_SMONTHNAME13,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    79
};
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    80
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    81
CALTYPE sMonthsType[] = {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    82
    CAL_SABBREVMONTHNAME1,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    83
    CAL_SABBREVMONTHNAME2,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    84
    CAL_SABBREVMONTHNAME3,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    85
    CAL_SABBREVMONTHNAME4,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    86
    CAL_SABBREVMONTHNAME5,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    87
    CAL_SABBREVMONTHNAME6,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    88
    CAL_SABBREVMONTHNAME7,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    89
    CAL_SABBREVMONTHNAME8,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    90
    CAL_SABBREVMONTHNAME9,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    91
    CAL_SABBREVMONTHNAME10,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    92
    CAL_SABBREVMONTHNAME11,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    93
    CAL_SABBREVMONTHNAME12,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    94
    CAL_SABBREVMONTHNAME13,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    95
};
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    96
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    97
#define MONTHTYPES (sizeof(monthsType) / sizeof(CALTYPE))
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
    98
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    99
CALTYPE wDaysType[] = {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   100
    CAL_SDAYNAME7,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   101
    CAL_SDAYNAME1,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   102
    CAL_SDAYNAME2,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   103
    CAL_SDAYNAME3,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   104
    CAL_SDAYNAME4,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   105
    CAL_SDAYNAME5,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   106
    CAL_SDAYNAME6,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   107
};
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   108
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   109
CALTYPE sWDaysType[] = {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   110
    CAL_SABBREVDAYNAME7,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   111
    CAL_SABBREVDAYNAME1,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   112
    CAL_SABBREVDAYNAME2,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   113
    CAL_SABBREVDAYNAME3,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   114
    CAL_SABBREVDAYNAME4,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   115
    CAL_SABBREVDAYNAME5,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   116
    CAL_SABBREVDAYNAME6,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   117
};
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   118
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   119
WCHAR * fixes[2][2][3][16] =
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   120
{
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   121
    { //prefix
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   122
        { //positive
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   123
            { // number
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   124
                L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   125
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   126
            { // currency
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   127
                L"\xA4", L"", L"\xA4 ", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   128
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   129
            { // percent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   130
                L"", L"", L"%", L"% ", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   131
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   132
        },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   133
        { // negative
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   134
            { // number
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   135
                L"(", L"-", L"- ", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   136
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   137
            { //currency
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   138
                L"(\xA4", L"-\xA4", L"\xA4-", L"\xA4", L"(", L"-", L"", L"", L"-", L"-\xA4 ", L"", L"\xA4 ", L"\xA4 -", L"", L"(\xA4 ", L"("
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   139
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   140
            { // percent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   141
                L"-", L"-", L"-%", L"%-", L"%", L"", L"", L"-% ", L"", L"% ", L"% -", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   142
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   143
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   144
    },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   145
    { // suffix
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   146
        { //positive
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   147
            { // number
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   148
                L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L""
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   149
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   150
            { // currency
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   151
                L"", L"\xA4 ", L"", L" \xA4", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   152
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   153
            { // percent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   154
                L" %", L"%", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   155
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   156
        },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   157
        { // negative
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   158
            { // number
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   159
                L")", L"", L" ", L"-", L" -", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   160
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   161
            { //currency
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   162
                L")", L"", L"", L"-", L"\xA4)", L"\xA4", L"-\xA4", L"\xA4-", L" \xA4", L"", L" \xA4-", L"-", L"", L"- \xA4", L")", L" \xA4)"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   163
            },
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   164
            { // percent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   165
                L" %", L"%", L"", L"", L"-", L"-%", L"%-", L"", L" %-", L"-", L"", L"- %", L"", L"", L"", L"",
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   166
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   167
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   168
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   169
};
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   170
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   171
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   172
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   173
 * Method:    initialize
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   174
 * Signature: ()Z
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   175
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   176
JNIEXPORT jboolean JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_initialize
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   177
  (JNIEnv *env, jclass cls) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   178
    if (!initialized) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   179
        pGetLocaleInfoEx = (PGLIE)GetProcAddress(
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   180
            GetModuleHandle("kernel32.dll"),
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   181
            "GetLocaleInfoEx");
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   182
        pGetCalendarInfoEx = (PGCIE)GetProcAddress(
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   183
            GetModuleHandle("kernel32.dll"),
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   184
            "GetCalendarInfoEx");
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   185
        pEnumCalendarInfoExEx = (PECIEE)GetProcAddress(
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   186
            GetModuleHandle("kernel32.dll"),
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   187
            "EnumCalendarInfoExEx");
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   188
        initialized =TRUE;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   189
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   190
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   191
    return pGetLocaleInfoEx != NULL &&
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   192
           pGetCalendarInfoEx != NULL &&
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   193
           pEnumCalendarInfoExEx != NULL;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   194
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   195
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   196
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   197
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   198
 * Method:    getDefaultLocale
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   199
 * Signature: (I)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   200
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   201
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDefaultLocale
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   202
  (JNIEnv *env, jclass cls, jint cat) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   203
    char * localeString = NULL;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   204
    LANGID langid;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   205
    jstring ret;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   206
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   207
    switch (cat) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   208
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_CAT_DISPLAY:
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   209
            langid = LANGIDFROMLCID(GetUserDefaultUILanguage());
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   210
            break;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   211
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_CAT_FORMAT:
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   212
        default:
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   213
            langid = LANGIDFROMLCID(GetUserDefaultLCID());
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   214
            break;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   215
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   216
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   217
    localeString = (char *)getJavaIDFromLangID(langid);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   218
    if (localeString != NULL) {
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   219
        ret = (*env)->NewStringUTF(env, localeString);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   220
        free(localeString);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   221
    } else {
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   222
        JNU_ThrowOutOfMemoryError(env, "memory allocation error");
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   223
        ret = NULL;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   224
    }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   225
    return ret;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   226
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   227
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   228
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   229
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   230
 * Method:    getDateTimePattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   231
 * Signature: (IILjava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   232
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   233
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDateTimePattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   234
  (JNIEnv *env, jclass cls, jint dateStyle, jint timeStyle, jstring jlangtag) {
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   235
    WCHAR pattern[BUFLEN];
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   236
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   237
    CHECK_NULL_RETURN(langtag, NULL);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   238
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   239
    pattern[0] = L'\0';
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   240
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   241
    if (dateStyle == 0 || dateStyle == 1) {
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   242
        getLocaleInfoWrapper(langtag, LOCALE_SLONGDATE, pattern, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   243
    } else if (dateStyle == 2 || dateStyle == 3) {
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   244
        getLocaleInfoWrapper(langtag, LOCALE_SSHORTDATE, pattern, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   245
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   246
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   247
    if (timeStyle == 0 || timeStyle == 1) {
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   248
        getLocaleInfoWrapper(langtag, LOCALE_STIMEFORMAT, pattern, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   249
    } else if (timeStyle == 2 || timeStyle == 3) {
14028
5f3d5ae5f1ea 7198834: HOST Adapter: one extra empty space in the end of the pattern string
naoto
parents: 13583
diff changeset
   250
        getLocaleInfoWrapper(langtag, LOCALE_SSHORTTIME, pattern, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   251
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   252
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   253
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   254
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   255
    return (*env)->NewString(env, pattern, (jsize)wcslen(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   256
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   257
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   258
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   259
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   260
 * Method:    getCalendarID
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   261
 * Signature: (Ljava/lang/String;)I
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   262
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   263
JNIEXPORT jint JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCalendarID
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   264
  (JNIEnv *env, jclass cls, jstring jlangtag) {
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   265
    const jchar *langtag;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   266
    jint ret;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   267
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   268
    CHECK_NULL_RETURN(langtag, 0);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   269
    ret = getCalendarID(langtag);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   270
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   271
    return ret;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   272
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   273
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   274
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   275
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   276
 * Method:    getAmPmStrings
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   277
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   278
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   279
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getAmPmStrings
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   280
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray ampms) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   281
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   282
    const jchar *langtag;
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   283
    jstring tmp_string;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   284
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   285
    // AM
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   286
    int got;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   287
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   288
    CHECK_NULL_RETURN(langtag, NULL);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   289
    got = getLocaleInfoWrapper(langtag, LOCALE_S1159, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   290
    if (got) {
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   291
        tmp_string = (*env)->NewString(env, buf, (jsize)wcslen(buf));
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   292
        if (tmp_string != NULL) {
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   293
            (*env)->SetObjectArrayElement(env, ampms, 0, tmp_string);
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   294
        }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   295
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   296
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   297
    if (!(*env)->ExceptionCheck(env)){
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   298
        // PM
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   299
        got = getLocaleInfoWrapper(langtag, LOCALE_S2359, buf, BUFLEN);
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   300
        if (got) {
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   301
            tmp_string = (*env)->NewString(env, buf, (jsize)wcslen(buf));
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   302
            if (tmp_string != NULL) {
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   303
                (*env)->SetObjectArrayElement(env, ampms, 1, tmp_string);
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   304
            }
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   305
        }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   306
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   307
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   308
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   309
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   310
    return ampms;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   311
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   312
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   313
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   314
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   315
 * Method:    getEras
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   316
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   317
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   318
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getEras
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   319
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray eras) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   320
    return getErasImpl(env, jlangtag, -1, 0, eras);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   321
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   322
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   323
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   324
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   325
 * Method:    getMonths
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   326
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   327
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   328
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getMonths
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   329
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray months) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   330
    replaceCalendarArrayElems(env, jlangtag, -1, months, monthsType,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   331
                      0, MONTHTYPES, 0);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   332
    return months;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   333
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   334
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   335
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   336
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   337
 * Method:    getShortMonths
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   338
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   339
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   340
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getShortMonths
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   341
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray smonths) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   342
    replaceCalendarArrayElems(env, jlangtag, -1, smonths, sMonthsType,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   343
                      0, MONTHTYPES, 0);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   344
    return smonths;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   345
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   346
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   347
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   348
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   349
 * Method:    getWeekdays
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   350
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   351
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   352
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getWeekdays
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   353
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray wdays) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   354
    replaceCalendarArrayElems(env, jlangtag, -1, wdays, wDaysType,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   355
                      1, sizeof(wDaysType)/sizeof(CALTYPE), 0);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   356
    return wdays;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   357
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   358
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   359
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   360
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   361
 * Method:    getShortWeekdays
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   362
 * Signature: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   363
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   364
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getShortWeekdays
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   365
  (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray swdays) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   366
    replaceCalendarArrayElems(env, jlangtag, -1, swdays, sWDaysType,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   367
                      1, sizeof(sWDaysType)/sizeof(CALTYPE), 0);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   368
    return swdays;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   369
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   370
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   371
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   372
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   373
 * Method:    getNumberPattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   374
 * Signature: (ILjava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   375
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   376
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getNumberPattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   377
  (JNIEnv *env, jclass cls, jint numberStyle, jstring jlangtag) {
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   378
    const jchar *langtag;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   379
    jstring ret;
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   380
    WCHAR * pattern;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   381
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   382
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   383
    CHECK_NULL_RETURN(langtag, NULL);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   384
    pattern = getNumberPattern(langtag, numberStyle);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   385
    CHECK_NULL_RETURN(pattern, NULL);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   386
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   387
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   388
    ret = (*env)->NewString(env, pattern, (jsize)wcslen(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   389
    free(pattern);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   390
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   391
    return ret;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   392
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   393
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   394
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   395
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   396
 * Method:    isNativeDigit
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   397
 * Signature: (Ljava/lang/String;)Z
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   398
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   399
JNIEXPORT jboolean JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_isNativeDigit
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   400
  (JNIEnv *env, jclass cls, jstring jlangtag) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   401
    DWORD num;
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   402
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   403
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   404
    CHECK_NULL_RETURN(langtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   405
    got = getLocaleInfoWrapper(langtag,
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   406
        LOCALE_IDIGITSUBSTITUTION | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   407
        (LPWSTR)&num, sizeof(num));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   408
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   409
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   410
    return got && num == 2; // 2: native digit substitution
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   411
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   412
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   413
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   414
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   415
 * Method:    getCurrencySymbol
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   416
 * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   417
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   418
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCurrencySymbol
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   419
  (JNIEnv *env, jclass cls, jstring jlangtag, jstring currencySymbol) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   420
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   421
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   422
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   423
    CHECK_NULL_RETURN(langtag, currencySymbol);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   424
    got = getLocaleInfoWrapper(langtag, LOCALE_SCURRENCY, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   425
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   426
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   427
    if (got) {
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   428
        return (*env)->NewString(env, buf, (jsize)wcslen(buf));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   429
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   430
        return currencySymbol;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   431
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   432
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   433
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   434
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   435
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   436
 * Method:    getDecimalSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   437
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   438
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   439
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDecimalSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   440
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar decimalSeparator) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   441
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   442
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   443
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   444
    CHECK_NULL_RETURN(langtag, decimalSeparator);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   445
    got = getLocaleInfoWrapper(langtag, LOCALE_SDECIMAL, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   446
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   447
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   448
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   449
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   450
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   451
        return decimalSeparator;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   452
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   453
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   454
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   455
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   456
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   457
 * Method:    getGroupingSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   458
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   459
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   460
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getGroupingSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   461
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar groupingSeparator) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   462
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   463
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   464
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   465
    CHECK_NULL_RETURN(langtag, groupingSeparator);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   466
    got = getLocaleInfoWrapper(langtag, LOCALE_STHOUSAND, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   467
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   468
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   469
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   470
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   471
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   472
        return groupingSeparator;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   473
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   474
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   475
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   476
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   477
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   478
 * Method:    getInfinity
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   479
 * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   480
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   481
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getInfinity
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   482
  (JNIEnv *env, jclass cls, jstring jlangtag, jstring infinity) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   483
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   484
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   485
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   486
    CHECK_NULL_RETURN(langtag, infinity);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   487
    got = getLocaleInfoWrapper(langtag, LOCALE_SPOSINFINITY, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   488
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   489
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   490
    if (got) {
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   491
        return (*env)->NewString(env, buf, (jsize)wcslen(buf));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   492
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   493
        return infinity;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   494
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   495
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   496
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   497
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   498
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   499
 * Method:    getInternationalCurrencySymbol
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   500
 * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   501
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   502
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getInternationalCurrencySymbol
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   503
  (JNIEnv *env, jclass cls, jstring jlangtag, jstring internationalCurrencySymbol) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   504
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   505
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   506
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   507
    CHECK_NULL_RETURN(langtag, internationalCurrencySymbol);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   508
    got = getLocaleInfoWrapper(langtag, LOCALE_SINTLSYMBOL, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   509
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   510
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   511
    if (got) {
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   512
        return (*env)->NewString(env, buf, (jsize)wcslen(buf));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   513
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   514
        return internationalCurrencySymbol;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   515
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   516
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   517
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   518
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   519
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   520
 * Method:    getMinusSign
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   521
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   522
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   523
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getMinusSign
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   524
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar minusSign) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   525
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   526
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   527
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   528
    CHECK_NULL_RETURN(langtag, minusSign);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   529
    got = getLocaleInfoWrapper(langtag, LOCALE_SNEGATIVESIGN, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   530
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   531
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   532
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   533
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   534
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   535
        return minusSign;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   536
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   537
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   538
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   539
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   540
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   541
 * Method:    getMonetaryDecimalSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   542
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   543
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   544
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getMonetaryDecimalSeparator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   545
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar monetaryDecimalSeparator) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   546
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   547
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   548
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   549
    CHECK_NULL_RETURN(langtag, monetaryDecimalSeparator);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   550
    got = getLocaleInfoWrapper(langtag, LOCALE_SMONDECIMALSEP, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   551
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   552
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   553
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   554
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   555
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   556
        return monetaryDecimalSeparator;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   557
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   558
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   559
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   560
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   561
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   562
 * Method:    getNaN
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   563
 * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   564
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   565
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getNaN
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   566
  (JNIEnv *env, jclass cls, jstring jlangtag, jstring nan) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   567
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   568
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   569
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   570
    CHECK_NULL_RETURN(langtag, nan);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   571
    got = getLocaleInfoWrapper(langtag, LOCALE_SNAN, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   572
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   573
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   574
    if (got) {
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   575
        return (*env)->NewString(env, buf, (jsize)wcslen(buf));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   576
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   577
        return nan;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   578
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   579
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   580
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   581
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   582
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   583
 * Method:    getPercent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   584
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   585
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   586
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPercent
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   587
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar percent) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   588
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   589
    int got;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   590
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   591
    CHECK_NULL_RETURN(langtag, percent);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   592
    got = getLocaleInfoWrapper(langtag, LOCALE_SPERCENT, buf, BUFLEN);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   593
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   594
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   595
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   596
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   597
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   598
        return percent;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   599
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   600
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   601
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   602
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   603
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   604
 * Method:    getPerMill
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   605
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   606
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   607
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPerMill
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   608
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar perMill) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   609
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   610
    const jchar *langtag;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   611
    int got;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   612
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   613
    CHECK_NULL_RETURN(langtag, perMill);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   614
    got = getLocaleInfoWrapper(langtag, LOCALE_SPERMILLE, buf, BUFLEN);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   615
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   616
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   617
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   618
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   619
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   620
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   621
        return perMill;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   622
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   623
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   624
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   625
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   626
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   627
 * Method:    getZeroDigit
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   628
 * Signature: (Ljava/lang/String;C)C
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   629
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   630
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getZeroDigit
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   631
  (JNIEnv *env, jclass cls, jstring jlangtag, jchar zeroDigit) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   632
    WCHAR buf[BUFLEN];
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   633
    const jchar *langtag;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   634
    int got;
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   635
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   636
    CHECK_NULL_RETURN(langtag, zeroDigit);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   637
    got = getLocaleInfoWrapper(langtag, LOCALE_SNATIVEDIGITS, buf, BUFLEN);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   638
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   639
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   640
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   641
    if (got) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   642
        return buf[0];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   643
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   644
        return zeroDigit;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   645
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   646
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   647
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   648
/*
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   649
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   650
 * Method:    getCalendarDataValue
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   651
 * Signature: (Ljava/lang/String;I)I
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   652
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   653
JNIEXPORT jint JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCalendarDataValue
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   654
  (JNIEnv *env, jclass cls, jstring jlangtag, jint type) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   655
    DWORD num;
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   656
    const jchar *langtag;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   657
    int got = 0;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   658
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   659
    langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   660
    CHECK_NULL_RETURN(langtag, -1);
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   661
    switch (type) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   662
    case sun_util_locale_provider_HostLocaleProviderAdapterImpl_CD_FIRSTDAYOFWEEK:
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   663
        got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   664
            LOCALE_IFIRSTDAYOFWEEK | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   665
            (LPWSTR)&num, sizeof(num));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   666
        break;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   667
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   668
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   669
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   670
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   671
    if (got) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   672
        return num;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   673
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   674
        return -1;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   675
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   676
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   677
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   678
/*
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   679
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   680
 * Method:    getCalendarDisplayStrings
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   681
 * Signature: (Ljava/lang/String;III)[Ljava/lang/String;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   682
 */
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   683
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCalendarDisplayStrings
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   684
  (JNIEnv *env, jclass cls, jstring jlangtag, jint calid, jint field, jint style) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   685
    jobjectArray ret = NULL;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   686
    CALTYPE * pCalType = NULL;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   687
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   688
    switch (field) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   689
    case CALENDAR_FIELD_ERA:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   690
        return getErasImpl(env, jlangtag, calid, style, NULL);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   691
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   692
    case CALENDAR_FIELD_MONTH:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   693
        ret = (*env)->NewObjectArray(env, MONTHTYPES,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   694
                (*env)->FindClass(env, "java/lang/String"), NULL);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   695
        if (ret != NULL) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   696
            if (style & CALENDAR_STYLE_SHORT_MASK) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   697
                pCalType = sMonthsType;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   698
            } else {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   699
                pCalType = monthsType;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   700
            }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   701
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   702
            replaceCalendarArrayElems(env, jlangtag, calid, ret, pCalType,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   703
                          0, MONTHTYPES, style);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   704
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   705
        return ret;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   706
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   707
    default:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   708
        // not supported
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   709
        return NULL;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   710
    }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   711
}
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   712
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   713
/*
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   714
 * Class:     sun_util_locale_provider_HostLocaleProviderAdapterImpl
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   715
 * Method:    getDisplayString
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   716
 * Signature: (Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   717
 */
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   718
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDisplayString
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   719
  (JNIEnv *env, jclass cls, jstring jlangtag, jint type, jstring jvalue) {
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   720
    LCTYPE lcType;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   721
    jstring jStr;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   722
    const jchar * pjChar;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   723
    WCHAR buf[BUFLEN];
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   724
    int got = 0;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   725
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   726
    switch (type) {
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   727
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_DN_CURRENCY_NAME:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   728
            lcType = LOCALE_SNATIVECURRNAME;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   729
            jStr = jlangtag;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   730
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   731
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_DN_CURRENCY_SYMBOL:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   732
            lcType = LOCALE_SCURRENCY;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   733
            jStr = jlangtag;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   734
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   735
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_DN_LOCALE_LANGUAGE:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   736
            lcType = LOCALE_SLOCALIZEDLANGUAGENAME;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   737
            jStr = jvalue;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   738
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   739
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_DN_LOCALE_REGION:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   740
            lcType = LOCALE_SLOCALIZEDCOUNTRYNAME;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   741
            jStr = jvalue;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   742
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   743
        default:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   744
            return NULL;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   745
    }
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   746
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   747
    pjChar = (*env)->GetStringChars(env, jStr, JNI_FALSE);
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   748
    CHECK_NULL_RETURN(pjChar, NULL);
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   749
    got = getLocaleInfoWrapper(pjChar, lcType, buf, BUFLEN);
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   750
    (*env)->ReleaseStringChars(env, jStr, pjChar);
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   751
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   752
    if (got) {
54097
9fc262a75638 8220227: Host Locale Provider getDisplayCountry returns error message under non-English Win10
tnakamura
parents: 47216
diff changeset
   753
        return (*env)->NewString(env, buf, (jsize)wcslen(buf));
9fc262a75638 8220227: Host Locale Provider getDisplayCountry returns error message under non-English Win10
tnakamura
parents: 47216
diff changeset
   754
    } else {
9fc262a75638 8220227: Host Locale Provider getDisplayCountry returns error message under non-English Win10
tnakamura
parents: 47216
diff changeset
   755
        return NULL;
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   756
    }
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   757
}
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   758
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   759
int getLocaleInfoWrapper(const jchar *langtag, LCTYPE type, LPWSTR data, int buflen) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   760
    if (pGetLocaleInfoEx) {
16481
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   761
        if (wcscmp(L"und", (LPWSTR)langtag) == 0) {
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   762
            // defaults to "en"
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   763
            return pGetLocaleInfoEx(L"en", type, data, buflen);
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   764
        } else {
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   765
            return pGetLocaleInfoEx((LPWSTR)langtag, type, data, buflen);
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   766
        }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   767
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   768
        // If we ever wanted to support WinXP, we will need extra module from
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   769
        // MS...
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   770
        // return GetLocaleInfo(DownlevelLocaleNameToLCID(langtag, 0), type, data, buflen);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   771
        return 0;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   772
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   773
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   774
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   775
int getCalendarInfoWrapper(const jchar *langtag, CALID id, LPCWSTR reserved, CALTYPE type, LPWSTR data, int buflen, LPDWORD val) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   776
    if (pGetCalendarInfoEx) {
16481
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   777
        if (wcscmp(L"und", (LPWSTR)langtag) == 0) {
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   778
            // defaults to "en"
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   779
            return pGetCalendarInfoEx(L"en", id, reserved, type, data, buflen, val);
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   780
        } else {
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   781
            return pGetCalendarInfoEx((LPWSTR)langtag, id, reserved, type, data, buflen, val);
8e30386cc014 8008576: Calendar mismatch using Host LocaleProviderAdapter
naoto
parents: 14028
diff changeset
   782
        }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   783
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   784
        // If we ever wanted to support WinXP, we will need extra module from
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   785
        // MS...
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   786
        // return GetCalendarInfo(DownlevelLocaleNameToLCID(langtag, 0), ...);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   787
        return 0;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   788
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   789
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   790
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   791
jint getCalendarID(const jchar *langtag) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   792
    DWORD type = -1;
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   793
    int got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   794
        LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   795
        (LPWSTR)&type, sizeof(type));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   796
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   797
    if (got) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   798
        switch (type) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   799
            case CAL_GREGORIAN:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   800
            case CAL_GREGORIAN_US:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   801
            case CAL_JAPAN:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   802
            case CAL_TAIWAN:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   803
            case CAL_HIJRI:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   804
            case CAL_THAI:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   805
            case CAL_GREGORIAN_ME_FRENCH:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   806
            case CAL_GREGORIAN_ARABIC:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   807
            case CAL_GREGORIAN_XLIT_ENGLISH:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   808
            case CAL_GREGORIAN_XLIT_FRENCH:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   809
            case CAL_UMALQURA:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   810
                break;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   811
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   812
            default:
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   813
                // non-supported calendars return -1
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   814
                type = -1;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   815
                break;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   816
        }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   817
    }
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   818
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   819
    return type;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   820
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   821
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   822
void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jint calid, jobjectArray jarray, CALTYPE* pCalTypes, int offset, int length, int style) {
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   823
    WCHAR name[BUFLEN];
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   824
    const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   825
    jstring tmp_string;
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   826
    CALTYPE isGenitive;
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   827
22939
fc08f20ea32f 8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
naoto
parents: 17169
diff changeset
   828
    CHECK_NULL(langtag);
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   829
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   830
    if (calid < 0) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   831
        calid = getCalendarID(langtag);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   832
    }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   833
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   834
    if (calid != -1) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   835
        int i;
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   836
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   837
        if (!(style & CALENDAR_STYLE_STANDALONE_MASK)) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   838
            isGenitive = CAL_RETURN_GENITIVE_NAMES;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   839
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   840
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   841
        for (i = 0; i < length; i++) {
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   842
            if (getCalendarInfoWrapper(langtag, calid, NULL,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   843
                              pCalTypes[i] | isGenitive, name, BUFLEN, NULL) != 0) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   844
                tmp_string = (*env)->NewString(env, name, (jsize)wcslen(name));
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   845
                if (tmp_string != NULL) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   846
                    (*env)->SetObjectArrayElement(env, jarray, i + offset, tmp_string);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   847
                }
24121
0de1e14447a8 8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
naoto
parents: 22939
diff changeset
   848
            }
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   849
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   850
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   851
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   852
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   853
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   854
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   855
WCHAR * getNumberPattern(const jchar * langtag, const jint numberStyle) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   856
    WCHAR ret[BUFLEN];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   857
    WCHAR number[BUFLEN];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   858
    WCHAR fix[BUFLEN];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   859
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   860
    getFixPart(langtag, numberStyle, TRUE, TRUE, ret); // "+"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   861
    getNumberPart(langtag, numberStyle, number);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   862
    wcscat_s(ret, BUFLEN-wcslen(ret), number);      // "+12.34"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   863
    getFixPart(langtag, numberStyle, TRUE, FALSE, fix);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   864
    wcscat_s(ret, BUFLEN-wcslen(ret), fix);         // "+12.34$"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   865
    wcscat_s(ret, BUFLEN-wcslen(ret), L";");        // "+12.34$;"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   866
    getFixPart(langtag, numberStyle, FALSE, TRUE, fix);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   867
    wcscat_s(ret, BUFLEN-wcslen(ret), fix);         // "+12.34$;("
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   868
    wcscat_s(ret, BUFLEN-wcslen(ret), number);      // "+12.34$;(12.34"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   869
    getFixPart(langtag, numberStyle, FALSE, FALSE, fix);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   870
    wcscat_s(ret, BUFLEN-wcslen(ret), fix);         // "+12.34$;(12.34$)"
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   871
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   872
    return _wcsdup(ret);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   873
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   874
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   875
void getNumberPart(const jchar * langtag, const jint numberStyle, WCHAR * number) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   876
    DWORD digits = 0;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   877
    DWORD leadingZero = 0;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   878
    WCHAR grouping[BUFLEN];
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   879
    int groupingLen;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   880
    WCHAR fractionPattern[BUFLEN];
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   881
    WCHAR * integerPattern = number;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   882
    WCHAR * pDest;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   883
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   884
    // Get info from Windows
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   885
    switch (numberStyle) {
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   886
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_CURRENCY:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   887
            getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   888
                LOCALE_ICURRDIGITS | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   889
                (LPWSTR)&digits, sizeof(digits));
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   890
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   891
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   892
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_INTEGER:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   893
            break;
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   894
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   895
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_NUMBER:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   896
        case sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_PERCENT:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   897
        default:
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   898
            getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   899
                LOCALE_IDIGITS | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   900
                (LPWSTR)&digits, sizeof(digits));
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   901
            break;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   902
    }
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   903
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   904
    getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   905
        LOCALE_ILZERO | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   906
        (LPWSTR)&leadingZero, sizeof(leadingZero));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   907
    groupingLen = getLocaleInfoWrapper(langtag, LOCALE_SGROUPING, grouping, BUFLEN);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   908
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   909
    // fraction pattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   910
    if (digits > 0) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   911
        int i;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   912
        for(i = digits;  i > 0; i--) {
59043
1a79b4bfc85a 8232860: Error formatting integer values with MessageFormat.format() using HOST provider
naoto
parents: 54097
diff changeset
   913
            fractionPattern[i] = L'#';
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   914
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   915
        fractionPattern[0] = L'.';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   916
        fractionPattern[digits+1] = L'\0';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   917
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   918
        fractionPattern[0] = L'\0';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   919
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   920
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   921
    // integer pattern
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   922
    pDest = integerPattern;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   923
    if (groupingLen > 0) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   924
        int cur = groupingLen - 1;// subtracting null terminator
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   925
        while (--cur >= 0) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   926
            int repnum;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   927
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   928
            if (grouping[cur] == L';') {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   929
                continue;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   930
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   931
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   932
            repnum = grouping[cur] - 0x30;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   933
            if (repnum > 0) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   934
                *pDest++ = L'#';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   935
                *pDest++ = L',';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   936
                while(--repnum > 0) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   937
                    *pDest++ = L'#';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   938
                }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   939
            }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   940
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   941
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   942
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   943
    if (leadingZero != 0) {
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   944
        *pDest++ = L'0';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   945
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   946
        *pDest++ = L'#';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   947
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   948
    *pDest = L'\0';
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   949
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   950
    wcscat_s(integerPattern, BUFLEN, fractionPattern);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   951
}
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   952
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   953
void getFixPart(const jchar * langtag, const jint numberStyle, BOOL positive, BOOL prefix, WCHAR * ret) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   954
    DWORD pattern = 0;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   955
    int style = numberStyle;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   956
    int got = 0;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   957
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   958
    if (positive) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   959
        if (style == sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_CURRENCY) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   960
            got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   961
                LOCALE_ICURRENCY | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   962
                (LPWSTR)&pattern, sizeof(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   963
        } else if (style == sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_PERCENT) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   964
            got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   965
                LOCALE_IPOSITIVEPERCENT | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   966
                (LPWSTR)&pattern, sizeof(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   967
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   968
    } else {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   969
        if (style == sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_CURRENCY) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   970
            got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   971
                LOCALE_INEGCURR | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   972
                (LPWSTR)&pattern, sizeof(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   973
        } else if (style == sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_PERCENT) {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   974
            got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   975
                LOCALE_INEGATIVEPERCENT | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   976
                (LPWSTR)&pattern, sizeof(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   977
        } else {
17169
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   978
            got = getLocaleInfoWrapper(langtag,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   979
                LOCALE_INEGNUMBER | LOCALE_RETURN_NUMBER,
5e5039c3181d 8010666: Implement Currency/LocaleNameProvider in Windows Host LocaleProviderAdapter
naoto
parents: 16481
diff changeset
   980
                (LPWSTR)&pattern, sizeof(pattern));
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   981
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   982
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   983
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   984
    if (numberStyle == sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_INTEGER) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   985
        style = sun_util_locale_provider_HostLocaleProviderAdapterImpl_NF_NUMBER;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   986
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   987
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   988
    wcscpy(ret, fixes[!prefix][!positive][style][pattern]);
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   989
}
34878
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   990
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   991
int enumCalendarInfoWrapper(const jchar *langtag, CALID calid, CALTYPE type, LPWSTR buf, int buflen) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   992
    if (pEnumCalendarInfoExEx) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   993
        if (wcscmp(L"und", (LPWSTR)langtag) == 0) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   994
            // defaults to "en"
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   995
            return pEnumCalendarInfoExEx(&EnumCalendarInfoProc, L"en",
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   996
                calid, NULL, type, (LPARAM)buf);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   997
        } else {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   998
            return pEnumCalendarInfoExEx(&EnumCalendarInfoProc, langtag,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
   999
                calid, NULL, type, (LPARAM)buf);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1000
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1001
    } else {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1002
        return 0;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1003
    }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1004
}
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1005
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1006
BOOL CALLBACK EnumCalendarInfoProc(LPWSTR lpCalInfoStr, CALID calid, LPWSTR lpReserved, LPARAM lParam) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1007
    wcscat_s((LPWSTR)lParam, BUFLEN, lpCalInfoStr);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1008
    wcscat_s((LPWSTR)lParam, BUFLEN, L",");
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1009
    return TRUE;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1010
}
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1011
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1012
jobjectArray getErasImpl(JNIEnv *env, jstring jlangtag, jint calid, jint style, jobjectArray eras) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1013
    const jchar * langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1014
    WCHAR buf[BUFLEN];
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1015
    jobjectArray ret = eras;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1016
    CALTYPE type;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1017
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1018
    CHECK_NULL_RETURN(langtag, ret);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1019
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1020
    buf[0] = '\0';
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1021
    if (style & CALENDAR_STYLE_SHORT_MASK) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1022
        type = CAL_SABBREVERASTRING;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1023
    } else {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1024
        type = CAL_SERASTRING;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1025
    }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1026
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1027
    if (calid < 0) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1028
        calid = getCalendarID(langtag);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1029
    }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1030
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1031
    if (calid != -1 && enumCalendarInfoWrapper(langtag, calid, type, buf, BUFLEN)) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1032
        // format in buf: "era0,era1,era2," where era0 is the current one
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1033
        int eraCount;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1034
        LPWSTR current;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1035
        jsize array_length;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1036
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1037
        for(eraCount = 0, current = buf; *current != '\0'; current++) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1038
            if (*current == L',') {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1039
                eraCount ++;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1040
            }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1041
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1042
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1043
        if (eras != NULL) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1044
            array_length = (*env)->GetArrayLength(env, eras);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1045
        } else {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1046
            // +1 for the "before" era, e.g., BC, which Windows does not return.
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1047
            array_length = (jsize)eraCount + 1;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1048
            ret = (*env)->NewObjectArray(env, array_length,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1049
                (*env)->FindClass(env, "java/lang/String"), NULL);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1050
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1051
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1052
        if (ret != NULL) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1053
            int eraIndex;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1054
            LPWSTR era;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1055
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1056
            for(eraIndex = 0, era = current = buf; eraIndex < eraCount; era = current, eraIndex++) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1057
                while (*current != L',') {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1058
                    current++;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1059
                }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1060
                *current++ = '\0';
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1061
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1062
                if (eraCount - eraIndex < array_length &&
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1063
                    *era != '\0') {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1064
                    (*env)->SetObjectArrayElement(env, ret,
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1065
                        (jsize)(eraCount - eraIndex),
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1066
                        (*env)->NewString(env, era, (jsize)wcslen(era)));
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1067
                }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1068
            }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1069
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1070
            // Hack for the Japanese Imperial Calendar to insert Gregorian era for
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1071
            // "Before Meiji"
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1072
            if (calid == CAL_JAPAN) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1073
                buf[0] = '\0';
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1074
                if (enumCalendarInfoWrapper(langtag, CAL_GREGORIAN, type, buf, BUFLEN)) {
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1075
                    jsize len = (jsize)wcslen(buf);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1076
                    buf[--len] = '\0'; // remove the last ','
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1077
                    (*env)->SetObjectArrayElement(env, ret, 0, (*env)->NewString(env, buf, len));
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1078
                }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1079
            }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1080
        }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1081
    }
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1082
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1083
    (*env)->ReleaseStringChars(env, jlangtag, langtag);
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1084
    return ret;
7d7e55ff253a 8039301: [ja] Host Locale Provider uses non-translated Calendar field names
naoto
parents: 25859
diff changeset
  1085
}