oleaut32: Implement GetAltMonthNames().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2017-03-26 10:06:00 +03:00 committed by Alexandre Julliard
parent a3ab54707f
commit 7fb4809347
3 changed files with 147 additions and 1 deletions

View file

@ -935,3 +935,112 @@ HCURSOR WINAPI OleIconToCursor( HINSTANCE hinstExe, HICON hIcon)
/* FIXME: make an extended conversation from HICON to HCURSOR */
return CopyCursor(hIcon);
}
/***********************************************************************
* GetAltMonthNames (OLEAUT32.@)
*/
HRESULT WINAPI GetAltMonthNames(LCID lcid, LPOLESTR **str)
{
static const WCHAR ar_month1W[] = {0x645,0x62d,0x631,0x645,0};
static const WCHAR ar_month2W[] = {0x635,0x641,0x631,0};
static const WCHAR ar_month3W[] = {0x631,0x628,0x64a,0x639,' ',0x627,0x644,0x627,0x648,0x644,0};
static const WCHAR ar_month4W[] = {0x631,0x628,0x64a,0x639,' ',0x627,0x644,0x62b,0x627,0x646,0x64a,0};
static const WCHAR ar_month5W[] = {0x62c,0x645,0x627,0x62f,0x649,' ',0x627,0x644,0x627,0x648,0x644,0x649,0};
static const WCHAR ar_month6W[] = {0x62c,0x645,0x627,0x62f,0x649,' ',0x627,0x644,0x62b,0x627,0x646,0x64a,0x629,0};
static const WCHAR ar_month7W[] = {0x631,0x62c,0x628,0};
static const WCHAR ar_month8W[] = {0x634,0x639,0x628,0x627,0x646,0};
static const WCHAR ar_month9W[] = {0x631,0x645,0x636,0x627,0x646,0};
static const WCHAR ar_month10W[] = {0x634,0x648,0x627,0x643,0};
static const WCHAR ar_month11W[] = {0x630,0x648,' ',0x627,0x644,0x642,0x639,0x62f,0x629,0};
static const WCHAR ar_month12W[] = {0x630,0x648,' ',0x627,0x644,0x62d,0x62c,0x629,0};
static const WCHAR *arabic_hijri[] =
{
ar_month1W,
ar_month2W,
ar_month3W,
ar_month4W,
ar_month5W,
ar_month6W,
ar_month7W,
ar_month8W,
ar_month9W,
ar_month10W,
ar_month11W,
ar_month12W,
NULL
};
static const WCHAR pl_month1W[] = {'s','t','y','c','z','n','i','a',0};
static const WCHAR pl_month2W[] = {'l','u','t','e','g','o',0};
static const WCHAR pl_month3W[] = {'m','a','r','c','a',0};
static const WCHAR pl_month4W[] = {'k','w','i','e','t','n','i','a',0};
static const WCHAR pl_month5W[] = {'m','a','j','a',0};
static const WCHAR pl_month6W[] = {'c','z','e','r','w','c','a',0};
static const WCHAR pl_month7W[] = {'l','i','p','c','a',0};
static const WCHAR pl_month8W[] = {'s','i','e','r','p','n','i','a',0};
static const WCHAR pl_month9W[] = {'w','r','z','e',0x15b,'n','i','a',0};
static const WCHAR pl_month10W[] = {'p','a',0x17a,'d','z','i','e','r','n','i','k','a',0};
static const WCHAR pl_month11W[] = {'l','i','s','t','o','p','a','d','a',0};
static const WCHAR pl_month12W[] = {'g','r','u','d','n','i','a',0};
static const WCHAR *polish_genitive_names[] =
{
pl_month1W,
pl_month2W,
pl_month3W,
pl_month4W,
pl_month5W,
pl_month6W,
pl_month7W,
pl_month8W,
pl_month9W,
pl_month10W,
pl_month11W,
pl_month12W,
NULL
};
static const WCHAR ru_month1W[] = {0x44f,0x43d,0x432,0x430,0x440,0x44f,0};
static const WCHAR ru_month2W[] = {0x444,0x435,0x432,0x440,0x430,0x43b,0x44f,0};
static const WCHAR ru_month3W[] = {0x43c,0x430,0x440,0x442,0x430,0};
static const WCHAR ru_month4W[] = {0x430,0x43f,0x440,0x435,0x43b,0x44f,0};
static const WCHAR ru_month5W[] = {0x43c,0x430,0x44f,0};
static const WCHAR ru_month6W[] = {0x438,0x44e,0x43d,0x44f,0};
static const WCHAR ru_month7W[] = {0x438,0x44e,0x43b,0x44f,0};
static const WCHAR ru_month8W[] = {0x430,0x432,0x433,0x443,0x441,0x442,0x430,0};
static const WCHAR ru_month9W[] = {0x441,0x435,0x43d,0x442,0x44f,0x431,0x440,0x44f,0};
static const WCHAR ru_month10W[] = {0x43e,0x43a,0x442,0x44f,0x431,0x440,0x44f,0};
static const WCHAR ru_month11W[] = {0x43d,0x43e,0x44f,0x431,0x440,0x44f,0};
static const WCHAR ru_month12W[] = {0x434,0x435,0x43a,0x430,0x431,0x440,0x44f,0};
static const WCHAR *russian_genitive_names[] =
{
ru_month1W,
ru_month2W,
ru_month3W,
ru_month4W,
ru_month5W,
ru_month6W,
ru_month7W,
ru_month8W,
ru_month9W,
ru_month10W,
ru_month11W,
ru_month12W,
NULL
};
TRACE("%#x, %p\n", lcid, str);
if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_ARABIC)
*str = (LPOLESTR *)arabic_hijri;
else if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_POLISH)
*str = (LPOLESTR *)polish_genitive_names;
else if (PRIMARYLANGID(LANGIDFROMLCID(lcid)) == LANG_RUSSIAN)
*str = (LPOLESTR *)russian_genitive_names;
else
*str = NULL;
return S_OK;
}

View file

@ -319,7 +319,7 @@
329 stdcall VarCyMulI8(int64 int64 ptr)
330 stdcall VarDateFromUdate(ptr long ptr)
331 stdcall VarUdateFromDate(double long ptr)
332 stub GetAltMonthNames
332 stdcall GetAltMonthNames(long ptr)
333 stdcall VarI8FromUI1(long long)
334 stdcall VarI8FromI2(long long)
335 stdcall VarI8FromR4(float long)

View file

@ -640,6 +640,42 @@ static void test_VarFormatFromTokens(void)
SysFreeString(bstr);
}
static void test_GetAltMonthNames(void)
{
LPOLESTR *str, *str2;
HRESULT hr;
str = (void *)0xdeadbeef;
hr = GetAltMonthNames(0, &str);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str == NULL, "Got %p\n", str);
str = (void *)0xdeadbeef;
hr = GetAltMonthNames(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT), &str);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str == NULL, "Got %p\n", str);
str = NULL;
hr = GetAltMonthNames(MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_EGYPT), SORT_DEFAULT), &str);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str != NULL, "Got %p\n", str);
str2 = NULL;
hr = GetAltMonthNames(MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_EGYPT), SORT_DEFAULT), &str2);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str2 == str, "Got %p\n", str2);
str = NULL;
hr = GetAltMonthNames(MAKELCID(MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT), SORT_DEFAULT), &str);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str != NULL, "Got %p\n", str);
str = NULL;
hr = GetAltMonthNames(MAKELCID(MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT), SORT_DEFAULT), &str);
ok(hr == S_OK, "Unexpected return value %08x\n", hr);
ok(str != NULL, "Got %p\n", str);
}
START_TEST(varformat)
{
hOleaut32 = GetModuleHandleA("oleaut32.dll");
@ -650,4 +686,5 @@ START_TEST(varformat)
test_VarFormat();
test_VarWeekdayName();
test_VarFormatFromTokens();
test_GetAltMonthNames();
}