Author: cfinck Date: Thu Nov 29 00:40:39 2007 New Revision: 30842
URL: http://svn.reactos.org/svn/reactos?rev=30842&view=rev Log: Change widl to use only host headers. Part of my ongoing attempt to separate host and target headers properly (see also bug 2779) - Add a new header "nls.h" in the host directory, which contains a bunch of definitions needed for both widl and wrc. - Add some more important defines to "typedefs.h".
Added: trunk/reactos/include/host/nls.h (with props) Modified: trunk/reactos/include/host/typedefs.h trunk/reactos/tools/widl/client.c trunk/reactos/tools/widl/hash.c trunk/reactos/tools/widl/header.c trunk/reactos/tools/widl/parser.tab.c trunk/reactos/tools/widl/parser.y trunk/reactos/tools/widl/server.c trunk/reactos/tools/widl/typegen.c trunk/reactos/tools/widl/typelib.c trunk/reactos/tools/widl/typelib_struct.h trunk/reactos/tools/widl/widl.mak trunk/reactos/tools/widl/widltypes.h trunk/reactos/tools/widl/write_msft.c trunk/reactos/tools/wrc/wrcrostypes.h
Added: trunk/reactos/include/host/nls.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/host/nls.h?rev=3084... ============================================================================== --- trunk/reactos/include/host/nls.h (added) +++ trunk/reactos/include/host/nls.h Thu Nov 29 00:40:39 2007 @@ -1,0 +1,134 @@ +/* + PROJECT: ReactOS + LICENSE: GPL v2 or any later version + FILE: include/host/nls.h + PURPOSE: NLS definitions for host tools + COPYRIGHT: Copyright 2007 Colin Finck mail@colinfinck.de +*/ + +#ifndef _HOST_NLS_H +#define _HOST_NLS_H + +#include <host/typedefs.h> + +typedef DWORD LCID; + +#define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p)) +#define PRIMARYLANGID(l) ((WORD)(l)&0x3ff) +#define SUBLANGID(l) ((WORD)(l)>>10) +#define LANGIDFROMLCID(l) ((WORD)(l)) + +#define LANG_AFRIKAANS 0x36 +#define LANG_ALBANIAN 0x1c +#define LANG_ARABIC 0x01 +#define LANG_ARMENIAN 0x2b +#define LANG_ASSAMESE 0x4d +#define LANG_AZERI 0x2c +#define LANG_BASQUE 0x2d +#define LANG_BELARUSIAN 0x23 +#define LANG_BENGALI 0x45 +#define LANG_BULGARIAN 0x02 +#define LANG_CATALAN 0x03 +#define LANG_CHINESE 0x04 +#define LANG_CROATIAN 0x1a +#define LANG_CZECH 0x05 +#define LANG_DANISH 0x06 +#define LANG_DIVEHI 0x65 +#define LANG_DUTCH 0x13 +#define LANG_ENGLISH 0x09 +#define LANG_ESTONIAN 0x25 +#define LANG_FAEROESE 0x38 +#define LANG_FARSI 0x29 +#define LANG_FINNISH 0x0b +#define LANG_FRENCH 0x0c +#define LANG_GALICIAN 0x56 +#define LANG_GEORGIAN 0x37 +#define LANG_GERMAN 0x07 +#define LANG_GREEK 0x08 +#define LANG_GUJARATI 0x47 +#define LANG_HEBREW 0x0d +#define LANG_HINDI 0x39 +#define LANG_HUNGARIAN 0x0e +#define LANG_ICELANDIC 0x0f +#define LANG_INDONESIAN 0x21 +#define LANG_IRISH 0x3c +#define LANG_ITALIAN 0x10 +#define LANG_JAPANESE 0x11 +#define LANG_KANNADA 0x4b +#define LANG_KASHMIRI 0x60 +#define LANG_KAZAK 0x3f +#define LANG_KONKANI 0x57 +#define LANG_KOREAN 0x12 +#define LANG_KYRGYZ 0x40 +#define LANG_LATVIAN 0x26 +#define LANG_LITHUANIAN 0x27 +#define LANG_MACEDONIAN 0x2f +#define LANG_MANIPURI 0x58 +#define LANG_MALAY 0x3e +#define LANG_MALAYALAM 0x4c +#define LANG_MARATHI 0x4e +#define LANG_MONGOLIAN 0x50 +#define LANG_NEPALI 0x61 +#define LANG_NEUTRAL 0x00 +#define LANG_NORWEGIAN 0x14 +#define LANG_ORIYA 0x48 +#define LANG_POLISH 0x15 +#define LANG_PORTUGUESE 0x16 +#define LANG_PUNJABI 0x46 +#define LANG_ROMANIAN 0x18 +#define LANG_ROMANSH 0x17 +#define LANG_RUSSIAN 0x19 +#define LANG_SAMI 0x3b +#define LANG_SANSKRIT 0x4f +#define LANG_SERBIAN 0x1a +#define LANG_SINDHI 0x59 +#define LANG_SLOVAK 0x1b +#define LANG_SLOVENIAN 0x24 +#define LANG_SPANISH 0x0a +#define LANG_SWAHILI 0x41 +#define LANG_SWEDISH 0x1d +#define LANG_SYRIAC 0x5a +#define LANG_TAJIK 0x28 +#define LANG_TAMIL 0x49 +#define LANG_TATAR 0x44 +#define LANG_TELUGU 0x4a +#define LANG_THAI 0x1e +#define LANG_TURKISH 0x1f +#define LANG_UKRAINIAN 0x22 +#define LANG_URDU 0x20 +#define LANG_UZBEK 0x43 +#define LANG_VIETNAMESE 0x2a + +/* non standard; keep the number high enough (but < 0xff) */ +#define LANG_ESPERANTO 0x8f +#define LANG_WALON 0x90 +#define LANG_CORNISH 0x91 +#define LANG_WELSH 0x92 +#define LANG_BRETON 0x93 + +/* FIXME: these are not in the Windows header */ +#define LANG_GAELIC 0x94 +#define LANG_MALTESE 0x3a +#define LANG_RHAETO_ROMANCE 0x17 +#define LANG_SAAMI 0x3b +#define LANG_SORBIAN 0x2e +#define LANG_LOWER_SORBIAN 0x2e +#define LANG_UPPER_SORBIAN 0x2e +#define LANG_SUTU 0x30 +#define LANG_TSONGA 0x31 +#define LANG_TSWANA 0x32 +#define LANG_VENDA 0x33 +#define LANG_XHOSA 0x34 +#define LANG_ZULU 0x35 + +/* Sublanguages */ +#define SUBLANG_AZERI_CYRILLIC 0x02 +#define SUBLANG_CHINESE_SINGAPORE 0x04 +#define SUBLANG_CHINESE_SIMPLIFIED 0x02 +#define SUBLANG_DEFAULT 0x01 +#define SUBLANG_NEUTRAL 0x00 +#define SUBLANG_NORWEGIAN_NYNORSK 0x02 +#define SUBLANG_SERBIAN_CYRILLIC 0x03 +#define SUBLANG_UZBEK_CYRILLIC 0x02 + +#endif
Propchange: trunk/reactos/include/host/nls.h ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/include/host/typedefs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/host/typedefs.h?rev... ============================================================================== --- trunk/reactos/include/host/typedefs.h (original) +++ trunk/reactos/include/host/typedefs.h Thu Nov 29 00:40:39 2007 @@ -4,6 +4,7 @@ FILE: include/host/typedefs.h PURPOSE: Type definitions and useful macros for host tools COPYRIGHT: Copyright 2007 Hervé Poussineau + Copyright 2007 Colin Finck mail@colinfinck.de */
#ifndef _TYPEDEFS_HOST_H @@ -21,6 +22,7 @@ #error Unknown compiler #endif
+/* Function attributes for GCC */ #if !defined(_MSC_VER) && !defined(__fastcall) #define __fastcall __attribute__((fastcall)) #endif @@ -31,6 +33,7 @@ #define __stdcall __attribute__((stdcall)) #endif
+/* Basic definitions */ #define UNIMPLEMENTED { printf("%s unimplemented\n", __FUNCTION__); exit(1); } #define ASSERT(x) assert(x) #define ASSERTMSG(x, m) assert(x) @@ -53,6 +56,7 @@
#define ANYSIZE_ARRAY 1
+/* Type definitions */ typedef void VOID, *PVOID, *HANDLE; typedef HANDLE HKEY, *PHKEY; typedef unsigned char UCHAR, *PUCHAR, BYTE, *LPBYTE; @@ -66,6 +70,8 @@ typedef unsigned int ULONG, *PULONG, DWORD, *LPDWORD; typedef long long LONGLONG; typedef unsigned long long ULONGLONG; +typedef int INT; +typedef unsigned int UINT, *PUINT, *LPUINT; typedef UCHAR BOOLEAN, *PBOOLEAN; typedef int BOOL; typedef long int W64 LONG_PTR, *PLONG_PTR; @@ -75,9 +81,11 @@ typedef const unsigned short *PCWSTR, *LPCWSTR; typedef int NTSTATUS; typedef int POOL_TYPE; +typedef LONG HRESULT;
#define MAXUSHORT USHRT_MAX
+/* Widely used structures */ #include <host/pshpack4.h> typedef struct _RTL_BITMAP { @@ -122,9 +130,7 @@ } UNICODE_STRING, *PUNICODE_STRING; #include <host/poppack.h>
-// -// List Functions -// +/* List Functions */ static __inline VOID InitializeListHead( @@ -220,13 +226,25 @@
typedef const UNICODE_STRING *PCUNICODE_STRING;
-#define NT_SUCCESS(x) ((x)>=0) -#define FIELD_OFFSET(t,f) ((LONG_PTR)&(((t*)0)->f)) -#define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } -#define CONTAINING_RECORD(address, type, field) ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) -#define RtlZeroMemory(Destination, Length) memset(Destination, 0, Length) -#define RtlCopyMemory(Destination, Source, Length) memcpy(Destination, Source, Length) -#define RtlMoveMemory(Destination, Source, Length) memmove(Destination, Source, Length) +/* Widely used macros */ +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a,b) ((a) < (b) ? (b) : (a)) + +#define LOBYTE(w) ((BYTE)(w)) +#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) +#define LOWORD(l) ((WORD)((DWORD_PTR)(l))) +#define HIWORD(l) ((WORD)(((DWORD_PTR)(l)>>16)&0xFFFF)) +#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8))) +#define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16))) + +#define NT_SUCCESS(x) ((x)>=0) +#define FIELD_OFFSET(t,f) ((LONG_PTR)&(((t*)0)->f)) +#define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } +#define CONTAINING_RECORD(address, type, field) ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) + +#define RtlZeroMemory(Destination, Length) memset(Destination, 0, Length) +#define RtlCopyMemory(Destination, Source, Length) memcpy(Destination, Source, Length) +#define RtlMoveMemory(Destination, Source, Length) memmove(Destination, Source, Length)
/* Prevent inclusion of some other headers */ #define __INTERNAL_DEBUG
Modified: trunk/reactos/tools/widl/client.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/client.c?rev=308... ============================================================================== --- trunk/reactos/tools/widl/client.c (original) +++ trunk/reactos/tools/widl/client.c Thu Nov 29 00:40:39 2007 @@ -29,12 +29,12 @@ #include <ctype.h> #include <signal.h>
-#include "windef.h" - #include "widl.h" #include "utils.h" #include "parser.h" #include "header.h" + +#include <host/typedefs.h>
#include "widltypes.h" #include "typelib.h"
Modified: trunk/reactos/tools/widl/hash.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/hash.c?rev=30842... ============================================================================== --- trunk/reactos/tools/widl/hash.c (original) +++ trunk/reactos/tools/widl/hash.c Thu Nov 29 00:40:39 2007 @@ -21,10 +21,7 @@ #include <stdio.h> #include <stdarg.h>
-#include "windef.h" -#include "winbase.h" -#include "winnls.h" - +#include <host/nls.h> #include "hash.h"
static const unsigned char Lookup_16[128 * 3] = {
Modified: trunk/reactos/tools/widl/header.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/header.c?rev=308... ============================================================================== --- trunk/reactos/tools/widl/header.c (original) +++ trunk/reactos/tools/widl/header.c Thu Nov 29 00:40:39 2007 @@ -30,7 +30,6 @@ #include <ctype.h> #include <signal.h>
-#include "windef.h" #include "widl.h" #include "utils.h" #include "parser.h"
Modified: trunk/reactos/tools/widl/parser.tab.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/parser.tab.c?rev... ============================================================================== --- trunk/reactos/tools/widl/parser.tab.c (original) +++ trunk/reactos/tools/widl/parser.tab.c Thu Nov 29 00:40:39 2007 @@ -356,8 +356,6 @@ #include <alloca.h> #endif
-#include "windef.h" - #include "widl.h" #include "utils.h" #include "parser.h"
Modified: trunk/reactos/tools/widl/parser.y URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/parser.y?rev=308... ============================================================================== --- trunk/reactos/tools/widl/parser.y (original) +++ trunk/reactos/tools/widl/parser.y Thu Nov 29 00:40:39 2007 @@ -30,8 +30,6 @@ #ifdef HAVE_ALLOCA_H #include <alloca.h> #endif - -#include "windef.h"
#include "widl.h" #include "utils.h"
Modified: trunk/reactos/tools/widl/server.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/server.c?rev=308... ============================================================================== --- trunk/reactos/tools/widl/server.c (original) +++ trunk/reactos/tools/widl/server.c Thu Nov 29 00:40:39 2007 @@ -35,7 +35,6 @@ #include "utils.h" #include "parser.h" #include "header.h" -#include "windef.h"
#include "widl.h" #include "typelib.h"
Modified: trunk/reactos/tools/widl/typegen.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/typegen.c?rev=30... ============================================================================== --- trunk/reactos/tools/widl/typegen.c (original) +++ trunk/reactos/tools/widl/typegen.c Thu Nov 29 00:40:39 2007 @@ -37,7 +37,6 @@ #include "utils.h" #include "parser.h" #include "header.h" -#include "windef.h" #include "wine/list.h"
#include "widl.h"
Modified: trunk/reactos/tools/widl/typelib.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/typelib.c?rev=30... ============================================================================== --- trunk/reactos/tools/widl/typelib.c (original) +++ trunk/reactos/tools/widl/typelib.c Thu Nov 29 00:40:39 2007 @@ -34,9 +34,6 @@
#define NONAMELESSUNION #define NONAMELESSSTRUCT - -#include "windef.h" -#include "winbase.h"
#include "widl.h" #include "utils.h"
Modified: trunk/reactos/tools/widl/typelib_struct.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/typelib_struct.h... ============================================================================== --- trunk/reactos/tools/widl/typelib_struct.h (original) +++ trunk/reactos/tools/widl/typelib_struct.h Thu Nov 29 00:40:39 2007 @@ -302,7 +302,7 @@ * */
-#include "pshpack1.h" +#include <host/pshpack1.h>
typedef struct { /*00*/ DWORD SLTG_magic; /* 0x47544c53 == "SLTG" */ @@ -599,7 +599,7 @@ WORD typeofarray */
-#include "poppack.h" +#include <host/poppack.h>
/*---------------------------END--------------------------------------------*/ #endif
Modified: trunk/reactos/tools/widl/widl.mak URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/widl.mak?rev=308... ============================================================================== --- trunk/reactos/tools/widl/widl.mak (original) +++ trunk/reactos/tools/widl/widl.mak Thu Nov 29 00:40:39 2007 @@ -59,7 +59,7 @@ WIDL_HOST_CFLAGS = \ -DINT16=SHORT -DYYDEBUG=1 \ -I$(WIDL_BASE) -I$(WPP_BASE) \ - -Iinclude/reactos/wine -Iinclude/reactos -Iinclude/psdk \ + -Iinclude/reactos/wine -Iinclude/reactos -Iinclude \ -I$(INTERMEDIATE_)include $(TOOLS_CFLAGS)
WIDL_HOST_LFLAGS = $(TOOLS_LFLAGS)
Modified: trunk/reactos/tools/widl/widltypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/widltypes.h?rev=... ============================================================================== --- trunk/reactos/tools/widl/widltypes.h (original) +++ trunk/reactos/tools/widl/widltypes.h Thu Nov 29 00:40:39 2007 @@ -21,6 +21,12 @@ #ifndef __WIDL_WIDLTYPES_H #define __WIDL_WIDLTYPES_H
+#include <host/typedefs.h> +#define S_OK ((HRESULT)0x00000000L) +#define S_FALSE ((HRESULT)0x00000001L) +#define E_OUTOFMEMORY ((HRESULT)0x8007000EL) +#define TYPE_E_IOERROR ((HRESULT)0x80028CA2L) + #include <stdarg.h> #include "guiddef.h" #include "wine/rpcfc.h" @@ -29,9 +35,6 @@ #define UUID_DEFINED typedef GUID UUID; #endif - -#define TRUE 1 -#define FALSE 0
typedef struct _attr_t attr_t; typedef struct _expr_t expr_t;
Modified: trunk/reactos/tools/widl/write_msft.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/write_msft.c?rev... ============================================================================== --- trunk/reactos/tools/widl/write_msft.c (original) +++ trunk/reactos/tools/widl/write_msft.c Thu Nov 29 00:40:39 2007 @@ -40,10 +40,7 @@ #define NONAMELESSUNION #define NONAMELESSSTRUCT
-#include "winerror.h" -#include "windef.h" -#include "winbase.h" -#include "winnls.h" +#include <host/nls.h>
#include "widltypes.h" #include "typelib.h"
Modified: trunk/reactos/tools/wrc/wrcrostypes.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/wrc/wrcrostypes.h?rev... ============================================================================== --- trunk/reactos/tools/wrc/wrcrostypes.h (original) +++ trunk/reactos/tools/wrc/wrcrostypes.h Thu Nov 29 00:40:39 2007 @@ -10,19 +10,13 @@ #define _WRC_ROSTYPES_H
#include <host/typedefs.h> +#include <host/nls.h> #include <string.h>
// Definitions copied from various <win....h> files // We only want to include host headers, so we define them manually -#define LOBYTE(w) ((BYTE)(w)) -#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) -#define LOWORD(l) ((WORD)((DWORD_PTR)(l))) -#define HIWORD(l) ((WORD)(((DWORD_PTR)(l)>>16)&0xFFFF)) -#define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p)) #define VS_FFI_SIGNATURE 0xFEEF04BD #define VS_FFI_STRUCVERSION 0x10000 -#define PRIMARYLANGID(l) ((WORD)(l)&0x3ff) -#define SUBLANGID(l) ((WORD)(l)>>10)
#define BS_3STATE 5 #define BS_AUTO3STATE 6 @@ -60,104 +54,6 @@ #define WS_POPUPWINDOW 0x80880000 #define WS_TABSTOP 0x10000 #define WS_VISIBLE 0x10000000 - -#define LANG_AFRIKAANS 0x36 -#define LANG_ALBANIAN 0x1c -#define LANG_ARABIC 0x01 -#define LANG_ARMENIAN 0x2b -#define LANG_AZERI 0x2c -#define LANG_BASQUE 0x2d -#define LANG_BELARUSIAN 0x23 -#define LANG_BULGARIAN 0x02 -#define LANG_CATALAN 0x03 -#define LANG_CHINESE 0x04 -#define LANG_CROATIAN 0x1a -#define LANG_CZECH 0x05 -#define LANG_DANISH 0x06 -#define LANG_DIVEHI 0x65 -#define LANG_DUTCH 0x13 -#define LANG_ENGLISH 0x09 -#define LANG_ESTONIAN 0x25 -#define LANG_FAEROESE 0x38 -#define LANG_FARSI 0x29 -#define LANG_FINNISH 0x0b -#define LANG_FRENCH 0x0c -#define LANG_GALICIAN 0x56 -#define LANG_GEORGIAN 0x37 -#define LANG_GERMAN 0x07 -#define LANG_GREEK 0x08 -#define LANG_GUJARATI 0x47 -#define LANG_HEBREW 0x0d -#define LANG_HINDI 0x39 -#define LANG_HUNGARIAN 0x0e -#define LANG_ICELANDIC 0x0f -#define LANG_INDONESIAN 0x21 -#define LANG_ITALIAN 0x10 -#define LANG_JAPANESE 0x11 -#define LANG_KANNADA 0x4b -#define LANG_KAZAK 0x3f -#define LANG_KONKANI 0x57 -#define LANG_KOREAN 0x12 -#define LANG_KYRGYZ 0x40 -#define LANG_LATVIAN 0x26 -#define LANG_LITHUANIAN 0x27 -#define LANG_MACEDONIAN 0x2f -#define LANG_MALAY 0x3e -#define LANG_MARATHI 0x4e -#define LANG_MONGOLIAN 0x50 -#define LANG_NEUTRAL 0x00 -#define LANG_NORWEGIAN 0x14 -#define LANG_POLISH 0x15 -#define LANG_PORTUGUESE 0x16 -#define LANG_PUNJABI 0x46 -#define LANG_ROMANIAN 0x18 -#define LANG_RUSSIAN 0x19 -#define LANG_SANSKRIT 0x4f -#define LANG_SERBIAN 0x1a -#define LANG_SLOVAK 0x1b -#define LANG_SLOVENIAN 0x24 -#define LANG_SPANISH 0x0a -#define LANG_SWAHILI 0x41 -#define LANG_SWEDISH 0x1d -#define LANG_SYRIAC 0x5a -#define LANG_TAMIL 0x49 -#define LANG_TATAR 0x44 -#define LANG_TELUGU 0x4a -#define LANG_THAI 0x1e -#define LANG_TURKISH 0x1f -#define LANG_UKRAINIAN 0x22 -#define LANG_URDU 0x20 -#define LANG_UZBEK 0x43 -#define LANG_VIETNAMESE 0x2a - -/* non standard; keep the number high enough (but < 0xff) */ -#define LANG_ESPERANTO 0x8f -#define LANG_WALON 0x90 -#define LANG_CORNISH 0x91 -#define LANG_WELSH 0x92 -#define LANG_BRETON 0x93 - -/* FIXME: these are not in the Windows header */ -#define LANG_GAELIC 0x94 -#define LANG_MALTESE 0x3a -#define LANG_RHAETO_ROMANCE 0x17 -#define LANG_SAAMI 0x3b -#define LANG_SORBIAN 0x2e -#define LANG_LOWER_SORBIAN 0x2e -#define LANG_UPPER_SORBIAN 0x2e -#define LANG_SUTU 0x30 -#define LANG_TSONGA 0x31 -#define LANG_TSWANA 0x32 -#define LANG_VENDA 0x33 -#define LANG_XHOSA 0x34 -#define LANG_ZULU 0x35 - -#define SUBLANG_AZERI_CYRILLIC 0x02 -#define SUBLANG_CHINESE_SINGAPORE 0x04 -#define SUBLANG_CHINESE_SIMPLIFIED 0x02 -#define SUBLANG_NEUTRAL 0x00 -#define SUBLANG_SERBIAN_CYRILLIC 0x03 -#define SUBLANG_UZBEK_CYRILLIC 0x02
#include <host/pshpack2.h> typedef struct tagBITMAPFILEHEADER {