2 * COPYRIGHT: See COPYING in the top level directory
3 Addition copyrights might be specified in LGPL.c
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/nls/mbtowc.c
6 * PURPOSE: National language support functions
7 * PROGRAMMER: Boudewijn ( ariadne@xs4all.nl)
8 * UPDATE HISTORY: Modified from Onno Hovers wfc. ( 08/02/99 )
13 * Copyright (c) 1996, Onno Hovers, All rights reserved
17 #include <kernel32/nls.h>
18 #include <kernel32/thread.h>
23 #include <kernel32/kernel32.h>
25 extern PLOCALE __TebLocale
;
27 #define GetTebLocale() __TebLocale
31 MultiByteToWideChar(UINT cpid
, DWORD flags
, LPCSTR src
, int srclen
,
32 LPWSTR dest
, int destlen
)
34 PCODEPAGE pcodepage
=__CPFirst
;
40 DPRINT("MultiByteToWideChar( %u, 0x%lX, %s, %d, 0x%lX, %d )\n",
41 cpid
, flags
, src
, srclen
, (ULONG
) dest
, destlen
);
46 case CP_ACP
: pcodepage
= GetTebLocale()->OemCodePage
; break;
47 case CP_OEMCP
: pcodepage
= GetTebLocale()->AnsiCodePage
; break;
48 case CP_MACCP
: pcodepage
=&__CP10000
; break;
51 while((pcodepage
)&&(pcodepage
->Id
!=cpid
))
52 pcodepage
=pcodepage
->Next
;
55 { SetLastError(ERROR_INVALID_PARAMETER
); return 0; }
57 /* get conversion table */
58 atou
=pcodepage
->ToUnicode
;
62 /* how long are we ?? */
66 copylen
=min(srclen
,destlen
);
69 /* XXX: maybe some inline assembly to speed things up, here ??? */
73 *dest
=atou
[c
>>5] [(c
)&0x1F];
81 /* XXXX: composites etc. */