1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
// Copyright © 2015, Peter Atashian
// Licensed under the MIT License <LICENSE.md>
//! Procedure declarations, constant definitions, and macros for the NLS component.
pub const CP_ACP: ::DWORD = 0;
pub const CP_OEMCP: ::DWORD = 1;
pub const CP_MACCP: ::DWORD = 2;
pub const CP_THREAD_ACP: ::DWORD = 3;
pub const CP_SYMBOL: ::DWORD = 42;
pub const CP_UTF7: ::DWORD = 65000;
pub const CP_UTF8: ::DWORD = 65001;
pub const MAX_LEADBYTES: usize = 12;
pub const MAX_DEFAULTCHAR: usize = 2;
pub type LGRPID = ::DWORD;
pub type LCTYPE = ::DWORD;
pub type CALTYPE = ::DWORD;
pub type CALID = ::DWORD;
pub type GEOID = ::LONG;
pub type GEOTYPE = ::DWORD;
pub type GEOCLASS = ::DWORD;
STRUCT!{struct NLSVERSIONINFO {
    dwNLSVersionInfoSize: ::DWORD,
    dwNLSVersion: ::DWORD,
    dwDefinedVersion: ::DWORD,
    dwEffectiveId: ::DWORD,
    guidCustomVersion: ::GUID,
}}
pub type LPNLSVERSIONINFO = *mut NLSVERSIONINFO;
STRUCT!{struct NLSVERSIONINFOEX {
    dwNLSVersionInfoSize: ::DWORD,
    dwNLSVersion: ::DWORD,
    dwDefinedVersion: ::DWORD,
    dwEffectiveId: ::DWORD,
    guidCustomVersion: ::GUID,
}}
pub type LPNLSVERSIONINFOEX = *mut NLSVERSIONINFOEX;
ENUM!{enum NORM_FORM {
    NormalizationOther = 0,
    NormalizationC = 0x1,
    NormalizationD = 0x2,
    NormalizationKC = 0x5,
    NormalizationKD = 0x6,
}}
pub type LANGUAGEGROUP_ENUMPROCA = Option<unsafe extern "system" fn(
    ::LGRPID, ::LPSTR, ::LPSTR, ::DWORD, ::LONG_PTR,
) -> ::BOOL>;
pub type LANGGROUPLOCALE_ENUMPROCA = Option<unsafe extern "system" fn(
    ::LGRPID, ::LCID, ::LPSTR, ::LONG_PTR,
) -> ::BOOL>;
pub type UILANGUAGE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR, ::LONG_PTR) -> ::BOOL>;
pub type CODEPAGE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
pub type DATEFMT_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
pub type DATEFMT_ENUMPROCEXA = Option<unsafe extern "system" fn(::LPSTR, ::CALID) -> ::BOOL>;
pub type TIMEFMT_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
pub type CALINFO_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
pub type CALINFO_ENUMPROCEXA = Option<unsafe extern "system" fn(::LPSTR, ::CALID) -> ::BOOL>;
pub type LOCALE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
pub type LOCALE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
pub type LANGUAGEGROUP_ENUMPROCW = Option<unsafe extern "system" fn(
    ::LGRPID, ::LPWSTR, ::LPWSTR, ::DWORD, ::LONG_PTR,
) -> ::BOOL>;
pub type LANGGROUPLOCALE_ENUMPROCW = Option<unsafe extern "system" fn(
    ::LGRPID, ::LCID, ::LPWSTR, ::LONG_PTR,
) -> ::BOOL>;
pub type UILANGUAGE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR, ::LONG_PTR) -> ::BOOL>;
pub type CODEPAGE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
pub type DATEFMT_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
pub type DATEFMT_ENUMPROCEXW = Option<unsafe extern "system" fn(::LPWSTR, ::CALID) -> ::BOOL>;
pub type TIMEFMT_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
pub type CALINFO_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
pub type CALINFO_ENUMPROCEXW = Option<unsafe extern "system" fn(::LPWSTR, ::CALID) -> ::BOOL>;
pub type GEO_ENUMPROC = Option<unsafe extern "system" fn(GEOID) -> ::BOOL>;
STRUCT!{struct CPINFO {
    MaxCharSize: ::UINT,
    DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
    LeadByte: [::BYTE; MAX_LEADBYTES],
}}
pub type LPCPINFO = *mut CPINFO;
STRUCT!{nodebug struct CPINFOEXA {
    MaxCharSize: ::UINT,
    DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
    LeadByte: [::BYTE; MAX_LEADBYTES],
    UnicodeDefaultChar: ::WCHAR,
    CodePage: ::UINT,
    CodePageName: [::CHAR; ::MAX_PATH],
}}
pub type LPCPINFOEXA = *mut CPINFOEXA;
STRUCT!{nodebug struct CPINFOEXW {
    MaxCharSize: ::UINT,
    DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
    LeadByte: [::BYTE; MAX_LEADBYTES],
    UnicodeDefaultChar: ::WCHAR,
    CodePage: ::UINT,
    CodePageName: [::WCHAR; ::MAX_PATH],
}}
pub type LPCPINFOEXW = *mut CPINFOEXW;
STRUCT!{struct NUMBERFMTA {
    NumDigits: ::UINT,
    LeadingZero: ::UINT,
    Grouping: ::UINT,
    lpDecimalSep: ::LPSTR,
    lpThousandSep: ::LPSTR,
    NegativeOrder: ::UINT,
}}
pub type LPNUMBERFMTA = *mut NUMBERFMTA;
STRUCT!{struct NUMBERFMTW {
    NumDigits: ::UINT,
    LeadingZero: ::UINT,
    Grouping: ::UINT,
    lpDecimalSep: ::LPWSTR,
    lpThousandSep: ::LPWSTR,
    NegativeOrder: ::UINT,
}}
pub type LPNUMBERFMTW = *mut NUMBERFMTW;
STRUCT!{struct CURRENCYFMTA {
    NumDigits: ::UINT,
    LeadingZero: ::UINT,
    Grouping: ::UINT,
    lpDecimalSep: ::LPSTR,
    lpThousandSep: ::LPSTR,
    NegativeOrder: ::UINT,
    PositiveOrder: ::UINT,
    lpCurrencySymbol: ::LPSTR,
}}
pub type LPCURRENCYFMTA = *mut CURRENCYFMTA;
STRUCT!{struct CURRENCYFMTW {
    NumDigits: ::UINT,
    LeadingZero: ::UINT,
    Grouping: ::UINT,
    lpDecimalSep: ::LPWSTR,
    lpThousandSep: ::LPWSTR,
    NegativeOrder: ::UINT,
    PositiveOrder: ::UINT,
    lpCurrencySymbol: ::LPWSTR,
}}
pub type LPCURRENCYFMTW = *mut CURRENCYFMTW;
pub type NLS_FUNCTION = ::DWORD;
STRUCT!{struct FILEMUIINFO {
    dwSize: ::DWORD,
    dwVersion: ::DWORD,
    dwFileType: ::DWORD,
    pChecksum: [::BYTE; 16],
    pServiceChecksum: [::BYTE; 16],
    dwLanguageNameOffset: ::DWORD,
    dwTypeIDMainSize: ::DWORD,
    dwTypeIDMainOffset: ::DWORD,
    dwTypeNameMainOffset: ::DWORD,
    dwTypeIDMUISize: ::DWORD,
    dwTypeIDMUIOffset: ::DWORD,
    dwTypeNameMUIOffset: ::DWORD,
    abBuffer: [::BYTE; 8],
}}
pub type PFILEMUIINFO = *mut FILEMUIINFO;
pub type CALINFO_ENUMPROCEXEX = Option<unsafe extern "system" fn(
    ::LPWSTR, ::CALID, ::LPWSTR, ::LPARAM,
) -> ::BOOL>;
pub type DATEFMT_ENUMPROCEXEX = Option<unsafe extern "system" fn(
    ::LPWSTR, ::CALID, ::LPARAM,
) -> ::BOOL>;
pub type TIMEFMT_ENUMPROCEX = Option<unsafe extern "system" fn(
    ::LPWSTR, ::LPARAM,
) -> ::BOOL>;
pub type LOCALE_ENUMPROCEX = Option<unsafe extern "system" fn(
    ::LPWSTR, ::DWORD, ::LPARAM,
) -> ::BOOL>;