diff --git a/Documentation/Building the Extension.md b/Documentation/Building the Extension.md index b53db9e7f..6c97582be 100644 --- a/Documentation/Building the Extension.md +++ b/Documentation/Building the Extension.md @@ -1,14 +1,13 @@ -## How to build and debug the Microsoft CppTools Extension - -These steps will allow you to debug the TypeScript code that is part of the Microsoft CppTools extension for Visual Studio Code. - -Prerequisite steps: - * Clone [this](https://github.com/Microsoft/vscode-cpptools) repository. - * Install [npm](https://nodejs.org). - * From a command line, run the following commands from the **Extension** folder in the root of the repository: - * `npm install -g vsce` will install `vsce` globally to create the vsix package. - * `npm install` will install the dependencies needed to build the extension. - * Set an environment variable `CPPTOOLS_DEV=1`. - * This enables the local developer workflow, copying dependencies from the **node_modules** folder. - * Open the **Extension** folder in Visual Studio Code and F5. - * Read the [contributing guidelines](https://github.com/Microsoft/vscode-cpptools/blob/master/CONTRIBUTING.md). +## How to build and debug the Microsoft CppTools Extension + +These steps will allow you to debug the TypeScript code that is part of the Microsoft CppTools extension for Visual Studio Code. + +Prerequisite steps: + * Clone [this](https://github.com/Microsoft/vscode-cpptools) repository. + * Install [npm](https://nodejs.org). + * From a command line, run the following commands from the **Extension** folder in the root of the repository: + * `npm install` will install the dependencies needed to build the extension. + * **(optional)** `npm install -g vsce` will install `vsce` globally to create a VSIX package that you can install. + * **(optional)** Set an environment variable `CPPTOOLS_DEV=1`. + * This enables the local developer workflow when testing the debugger, copying dependencies from the **node_modules** folder. Testing the language server does not require this step. + * Open the **Extension** folder in Visual Studio Code and press F5. This will launch a VS Code Extension Host window and activate the TypeScript debugger. You can set breakpoints on the extension source code and debug your scenario. diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 8b258f2ea..478055e6c 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,30 @@ # C/C++ for Visual Studio Code Change Log +## Version 0.17.7: July 19, 2018 +* Fix `Go to Definition` for code scoped with an aliased namespace. [#387](https://github.com/Microsoft/vscode-cpptools/issues/387) +* Fix incorrect IntelliSense errors with template template-arguments. [#1014](https://github.com/Microsoft/vscode-cpptools/issues/1014) +* Fix crash when using designated initializer lists. [#1440](https://github.com/Microsoft/vscode-cpptools/issues/1440) +* Add `windowsSdkVersion` to `c_cpp_properties.json`. [#1585](https://github.com/Microsoft/vscode-cpptools/issues/1585) +* Add `${vcpkgRoot}` variable. [#1817](https://github.com/Microsoft/vscode-cpptools/issues/1817) +* Fix dangling IntelliSense processes. [#2075](https://github.com/Microsoft/vscode-cpptools/issues/2075), [#2169](https://github.com/Microsoft/vscode-cpptools/issues/2169) +* Fix incorrect IntelliSense errors when class template argument deduction is used. [#2101](https://github.com/Microsoft/vscode-cpptools/issues/2101) +* Skip automatic parsing of source files in Mac system framework paths. [#2156](https://github.com/Microsoft/vscode-cpptools/issues/2156) +* Fix `Edit Configurations...` not working after `c_cpp_properties.json` is deleted. [#2214](https://github.com/Microsoft/vscode-cpptools/issues/2214) +* Fix indexing of the entire root drive on Windows when no is folder open. [#2216](https://github.com/Microsoft/vscode-cpptools/issues/2216) +* Disable the config provider message for headers outside the workspace and when debugging. [#2221](https://github.com/Microsoft/vscode-cpptools/issues/2221) +* Add `Change Configuration Provider...` command. [#2224](https://github.com/Microsoft/vscode-cpptools/issues/2224) +* Fix out-of-memory crash with `#include` code actions when no folder is open. [#2225](https://github.com/Microsoft/vscode-cpptools/issues/2225) +* Fix `intelliSenseMode` with custom config providers on Windows. [#2228](https://github.com/Microsoft/vscode-cpptools/issues/2228) +* Fix formatting not working on Windows if the VC++ 2015 redist isn't installed. [#2232](https://github.com/Microsoft/vscode-cpptools/issues/2232) +* Fix variables not resolving in `macFrameworkPath`. [#2234](https://github.com/Microsoft/vscode-cpptools/issues/2234) +* Fix `Go to Definition` not working for macros followed by `.` or `->`. [#2245](https://github.com/Microsoft/vscode-cpptools/issues/2245) +* Fix `#include` autocomplete with Mac framework headers. [#2251](https://github.com/Microsoft/vscode-cpptools/issues/2251) +* Fix for debugging to support empty arguments for debuggee. [#2258](https://github.com/Microsoft/vscode-cpptools/issues/2258) +* Fix `Go to Definition` bug (missing symbols outside the workspace). [#2281](https://github.com/Microsoft/vscode-cpptools/issues/2281) +* Add a setting to silence configuration provider warnings. [#2292](https://github.com/Microsoft/vscode-cpptools/issues/2292) +* Fix for debugging async Visual C++ causing debugger to hang. +* Fix `main` snippet. + ## Version 0.17.6: July 2, 2018 * Fix the database icon getting stuck with recursive includes. [#2104](https://github.com/Microsoft/vscode-cpptools/issues/2104) * Fix the red flame appearing late with recursive includes. [#2105](https://github.com/Microsoft/vscode-cpptools/issues/2105) @@ -216,7 +241,7 @@ ## Version 0.13.0: September 25, 2017 * Reference highlighting is now provided by the extension for both IntelliSense engines. * Parameter help is now provided by both IntelliSense engines. -* Light bulbs (code actions) for #include errors now suggest potential paths to add to the `includePath` based on a recursive search of the `browse.path`. [#846](https://github.com/Microsoft/vscode-cpptools/issues/846) +* Light bulbs (code actions) for `#include` errors now suggest potential paths to add to the `includePath` based on a recursive search of the `browse.path`. [#846](https://github.com/Microsoft/vscode-cpptools/issues/846) * Browse database now removes old symbols when `browse.path` changes. [#262](https://github.com/Microsoft/vscode-cpptools/issues/262) * Add `*` on new lines after a multiline comment with `/**` is started. [#579](https://github.com/Microsoft/vscode-cpptools/issues/579) * Fix `Go to Definition`, completion, and parameter hints for partially scoped members. [#635](https://github.com/Microsoft/vscode-cpptools/issues/635) diff --git a/Extension/c_cpp_properties.schema.json b/Extension/c_cpp_properties.schema.json index 89a50065a..0c399ffab 100644 --- a/Extension/c_cpp_properties.schema.json +++ b/Extension/c_cpp_properties.schema.json @@ -58,6 +58,11 @@ "type": "string" } }, + "windowsSdkVersion": { + "description": "Version of the Windows SDK include path to use on Windows, e.g. '10.0.17134.0'.", + "type": "string", + "pattern": "^\\d{2}\\.\\d{1}\\.\\d{5}\\.\\d{1}$|^8\\.1$" + }, "defines": { "description": "A list of preprocessor definitions for the IntelliSense engine to use while parsing files. Optionally, use = to set a value, e.g. VERSION=1.", "type": "array", diff --git a/Extension/cpp.hint b/Extension/cpp.hint index 33961d3e9..dfd474d95 100644 --- a/Extension/cpp.hint +++ b/Extension/cpp.hint @@ -1,2574 +1,2 @@ -// ATL / COM Property Map -#define BEGIN_PROPERTY_MAP(theClass) @< -#define BEGIN_PROP_MAP(theClass) @< -#define PROP_ENTRY(szDesc, dispid, clsid) @= -#define PROP_ENTRY_EX(szDesc, dispid, clsid, iidDispatch) @= -#define PROP_PAGE(clsid) @= -#define PROP_DATA_ENTRY(szDesc, member, vt) @= -#define END_PROPERTY_MAP() @> -#define END_PROP_MAP() @> - -// COM Map -#define BEGIN_COM_MAP(x) @< -#define DECLARE_GET_CONTROLLING_UNKNOWN() -#define _ATL_IIDOF(x) -#define COM_INTERFACE_ENTRY_BREAK(x) @= -#define COM_INTERFACE_ENTRY_NOINTERFACE(x) @= -#define COM_INTERFACE_ENTRY(x) @= -#define COM_INTERFACE_ENTRY_IID(iid, x) @= -#define COM_INTERFACE_ENTRY_IMPL(x) @= -#define COM_INTERFACE_ENTRY_IMPL_IID(iid, x) @= -#define COM_INTERFACE_ENTRY2(x, x2) @= -#define COM_INTERFACE_ENTRY2_IID(iid, x, x2) @= -#define COM_INTERFACE_ENTRY_FUNC(iid, dw, func) @= -#define COM_INTERFACE_ENTRY_FUNC_BLIND(dw, func) @= -#define COM_INTERFACE_ENTRY_TEAR_OFF(iid, x) @= -#define COM_INTERFACE_ENTRY_CACHED_TEAR_OFF(iid, x, punk) @= -#define COM_INTERFACE_ENTRY_AGGREGATE(iid, punk) @= -#define COM_INTERFACE_ENTRY_AGGREGATE_BLIND(punk) @= -#define COM_INTERFACE_ENTRY_AUTOAGGREGATE(iid, punk, clsid) @= -#define COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(punk, clsid) @= -#define COM_INTERFACE_ENTRY_CHAIN(classname) @= -#define END_COM_MAP() @> - -#define BEGIN_CATEGORY_MAP(x) @< -#define IMPLEMENTED_CATEGORY( catid ) @= -#define REQUIRED_CATEGORY( catid ) @= -#define END_CATEGORY_MAP() @> -#define BEGIN_OBJECT_MAP(x) -#define END_OBJECT_MAP() - -#define OBJECT_ENTRY(clsid, class) -#define OBJECT_ENTRY_AUTO(clsid, class) -#define OBJECT_ENTRY_NON_CREATEABLE(class) -#define OBJECT_ENTRY_NON_CREATEABLE_EX(clsid, class) -#define OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO(clsid, class) -#define OBJECT_ENTRY_PRAGMA(class) - -#define BEGIN_CONNECTION_POINT_MAP(x) @< -#define CONNECTION_POINT_ENTRY(x) @= -#define END_CONNECTION_POINT_MAP(x) @> - -#define DECLARE_CLASSFACTORY_SINGLETON(obj) -#define DECLARE_OBJECT_DESCRIPTION(x) -#define DECLARE_NO_REGISTRY() -#define DECLARE_REGISTRY(class, pid, vpid, nid, flags) -#define DECLARE_REGISTRY_RESOURCE(x) -#define DECLARE_REGISTRY_RESOURCEID(x) -#define DECLARE_STATIC_REGISTRY_RESOURCE(x) -#define DECLARE_STATIC_REGISTRY_RESOURCEID(x) - -#define BEGIN_SERVICE_MAP(x) @< -#define SERVICE_ENTRY(x) @= -#define SERVICE_ENTRY_CHAIN(x) @= -#define END_SERVICE_MAP() @> - -#define BEGIN_SINK_MAP(_class) @< -#define SINK_ENTRY_INFO(id, iid, dispid, fn, info) @= -#define SINK_ENTRY_EX(id, iid, dispid, fn) @= -#define SINK_ENTRY(id, dispid, fn) @= -#define END_SINK_MAP() @> - -// ATL OLEDB Map -#define BEGIN_ACCESSOR_MAP(x, num) -#define BEGIN_ACCESSOR(num, bAuto) -#define END_ACCESSOR() -#define END_ACCESSOR_MAP() -#define BEGIN_COLUMN_MAP(x) -#define END_COLUMN_MAP() -#define COLUMN_ENTRY_EX(nOrdinal, wType, nLength, nPrecision, nScale, data, length, status) -#define COLUMN_ENTRY_TYPE(nOrdinal, wType, data) -#define COLUMN_ENTRY_TYPE_SIZE(nOrdinal, wType, nLength, data) -#define COLUMN_ENTRY_TYPE_STATUS(nOrdinal, wType, status, data) -#define COLUMN_ENTRY_TYPE_PS(nOrdinal, wType, nPrecision, nScale, data) -#define COLUMN_ENTRY(nOrdinal, data) -#define COLUMN_ENTRY_LENGTH(nOrdinal, data, length) -#define COLUMN_ENTRY_STATUS(nOrdinal, data, status) -#define COLUMN_ENTRY_LENGTH_STATUS(nOrdinal, data, length, status) -#define COLUMN_ENTRY_PS(nOrdinal, nPrecision, nScale, data) -#define COLUMN_ENTRY_PS_LENGTH(nOrdinal, nPrecision, nScale, data, length) -#define COLUMN_ENTRY_PS_STATUS(nOrdinal, nPrecision, nScale, data, status) -#define COLUMN_ENTRY_PS_LENGTH_STATUS(nOrdinal, nPrecision, nScale, data, length, status) -#define COLUMN_NAME_EX(pszName, wType, nLength, nPrecision, nScale, data, length, status) -#define COLUMN_NAME_TYPE(pszName, wType, data) -#define COLUMN_NAME_TYPE_SIZE(pszName, wType, nLength, data) -#define COLUMN_NAME_TYPE_STATUS(pszName, wType, status, data) -#define COLUMN_NAME_TYPE_PS(pszName, wType, nPrecision, nScale, data) -#define COLUMN_NAME(pszName, data) -#define COLUMN_NAME_LENGTH(pszName, data, length) -#define COLUMN_NAME_STATUS(pszName, data, status) -#define COLUMN_NAME_LENGTH_STATUS(pszName, data, length, status) -#define COLUMN_NAME_PS(pszName, nPrecision, nScale, data) -#define COLUMN_NAME_PS_LENGTH(pszName, nPrecision, nScale, data, length) -#define COLUMN_NAME_PS_STATUS(pszName, nPrecision, nScale, data, status) -#define COLUMN_NAME_PS_LENGTH_STATUS(pszName, nPrecision, nScale, data, length, status) -#define BOOKMARK_ENTRY(variable) -#define BLOB_ENTRY(nOrdinal, IID, flags, data) -#define BLOB_ENTRY_STATUS(nOrdinal, IID, flags, data, status) -#define BLOB_ENTRY_LENGTH(nOrdinal, IID, flags, data, length) -#define BLOB_ENTRY_LENGTH_STATUS(nOrdinal, IID, flags, data, length, status) -#define BLOB_NAME(pszName, IID, flags, data) -#define BLOB_NAME_STATUS(pszName, IID, flags, data, status) -#define BLOB_NAME_LENGTH(pszName, IID, flags, data, length) -#define BLOB_NAME_LENGTH_STATUS(pszName, IID, flags, data, length, status) -#define BEGIN_PARAM_MAP(x) -#define END_PARAM_MAP() -#define SET_PARAM_TYPE(type) -#define DEFINE_COMMAND(x, szCommand) -#define DEFINE_COMMAND_EX(x, wszCommand) - -// ATL Message Map -#define BEGIN_MSG_MAP(x) @< -#define MESSAGE_HANDLER(msg, x) @= -#define CHAIN_MSG_MAP(x) @= -#define ALT_MSG_MAP(x) @= -#define CHAIN_MSG_MAP_ALT(x, n) @= -#define CHAIN_MSG_MAP_ALT_MEMBER(x, n) @= -#define CHAIN_MSG_MAP_DYNAMIC(x) @= -#define CHAIN_MSG_MAP_MEMBER(x) @= -#define COMMAND_CODE_HANDLER(msg, x) @= -#define COMMAND_HANDLER(id, msg, x) @= -#define COMMAND_ID_HANDLER(id, x) @= -#define COMMAND_RANGE_CODE_HANDLER(a, b, c, d) @= -#define COMMAND_RANGE_HANDLER(ma, mb, x) @= -#define DEFAULT_REFLECTION_HANDLER() @= -#define FORWARD_NOTIFICATIONS() @= -#define MESSAGE_RANGE_HANDLER(ma, mb, x) @= -#define NOTIFY_CODE_HANDLER(msg, x) @= -#define NOTIFY_HANDLER(id, msg, x) @= -#define NOTIFY_ID_HANDLER(id, x) @= -#define NOTIFY_RANGE_CODE_HANDLER(ida, idb, msg, x) @= -#define NOTIFY_RANGE_HANDLER(ida, idb, x) @= -#define REFLECT_NOTIFICATIONS() @= -#define REFLECTED_COMMAND_CODE_HANDLER(msg, x) @= -#define REFLECTED_COMMAND_HANDLER(id, msg, x) @= -#define REFLECTED_COMMAND_ID_HANDLER(id, x) @= -#define REFLECTED_COMMAND_RANGE_CODE_HANDLER(ida, idb, msg, x) @= -#define REFLECTED_COMMAND_RANGE_HANDLER(ida, idb, x) @= -#define REFLECTED_NOTIFY_CODE_HANDLER(msg, x) @= -#define REFLECTED_NOTIFY_HANDLER(id, msg, x) @= -#define REFLECTED_NOTIFY_ID_HANDLER(msg, x) @= -#define REFLECTED_NOTIFY_RANGE_CODE_HANDLER(ida, idb, msg, x) @= -#define REFLECTED_NOTIFY_RANGE_HANDLER(ida, idb, x) @= -#define END_MSG_MAP() @> - -// ATL Registry Data Exchange Macros -#define BEGIN_RDX_MAP() @< -#define RDX_BINARY(a, b, c, d, e) @= -#define RDX_CSTRING_TEXT(a, b, c, d, e) @= -#define RDX_DWORD(a, b, c, d, e) @= -#define RDX_TEXT(a, b, c, d, e) @= -#define END_RDX_MAP() @> - -// ATL Snap-in Macros -#define EXTENSION_SNAPIN_DATACLASS(x) -#define BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP(x) @< -#define SNAPINMENUID(id) @= -#define EXTENSION_SNAPIN_NODEINFO_ENTRY(x) @= -#define END_EXTENSION_SNAPIN_NODEINFO_MAP() @> -#define BEGIN_SNAPINTOOLBARID_MAP(x) @< -#define SNAPINTOOLBARID_ENTRY(id) @= -#define END_SNAPINTOOLBARID_MAP() @> - -// ATL Exceptions -#define _ATLTRY try -#define _ATLCATCH( e ) catch( CException* e ) -#define _ATLCATCHALL() catch( ... ) -#define _ATLDELETEEXCEPTION(e) -#define _ATLRETHROW throw - -// MFC Connection Maps -#define BEGIN_CONNECTION_PART(ctl, c) @< -#define CONNECTION_IID(id) @= -#define END_CONNECTION_PART(c) @> -#define BEGIN_CONNECTION_MAP(ctl, c) @< -#define CONNECTION_PART(ctl, iid, c) @= -#define END_CONNECTION_MAP() @> - -// MFC DHTML Editing Command Maps -#define BEGIN_DHTMLEDITING_CMDMAP(c) @< -#define DHTMLEDITING_CMD_ENTRY(id, m) @= -#define DHTMLEDITING_CMD_ENTRY_FUNC(id, m, f) @= -#define DHTMLEDITING_CMD_ENTRY_TYPE(id, m, e) @= -#define DHTMLEDITING_CMD_ENTRY_FUNC_TYPE(id, m, f, e) @= -#define END_DHTMLEDITING_CMDMAP() @> - -// MFC DHTML Event Maps -#define BEGIN_DHTML_EVENT_MAP(c) @< -#define DHTML_EVENT(id,e,f) @= -#define DHTML_EVENT_AXCONTROL(id,e,f) @= -#define DHTML_EVENT_CLASS(id,e,f) @= -#define DHTML_EVENT_ELEMENT(id,e,f) @= -#define DHTML_EVENT_ONAFTERUPDATE(e,f) @= -#define DHTML_EVENT_ONBEFOREUPDATE(e,f) @= -#define DHTML_EVENT_ONBLUR(e,f) @= -#define DHTML_EVENT_ONCHANGE(e,f) @= -#define DHTML_EVENT_ONCLICK(e,f) @= -#define DHTML_EVENT_ONDATAAVAILABLE(e,f) @= -#define DHTML_EVENT_ONDATASETCHANGED(e,f) @= -#define DHTML_EVENT_ONDATASETCOMPLETE(e,f) @= -#define DHTML_EVENT_ONDBLCLICK(e,f) @= -#define DHTML_EVENT_ONDRAGSTART(e,f) @= -#define DHTML_EVENT_ONERRORUPDATE(e,f) @= -#define DHTML_EVENT_ONFILTERCHANGE(e,f) @= -#define DHTML_EVENT_ONFOCUS(e,f) @= -#define DHTML_EVENT_ONHELP(e,f) @= -#define END_DHTML_EVENT_MAP() @> - -#define BEGIN_DHTML_EVENT_MAP_INLINE(c) @< -#define DHTML_EVENT_ONKEYDOWN(e,f) @= -#define DHTML_EVENT_ONKEYPRESS(e,f) @= -#define DHTML_EVENT_ONKEYUP(e,f) @= -#define DHTML_EVENT_ONMOUSEDOWN(e,f) @= -#define DHTML_EVENT_ONMOUSEMOVE(e,f) @= -#define DHTML_EVENT_ONMOUSEOUT(e,f) @= -#define DHTML_EVENT_ONMOUSEOVER(e,f) @= -#define DHTML_EVENT_ONMOUSEUP(e,f) @= -#define DHTML_EVENT_ONRESIZE(e,f) @= -#define DHTML_EVENT_ONROWENTER(e,f) @= -#define DHTML_EVENT_ONROWEXIT(e,f) @= -#define DHTML_EVENT_ONSELECTSTART(e,f) @= -#define DHTML_EVENT_TAG(id,e,f) @= -#define END_DHTML_EVENT_MAP() @> - -// MFC Multipage DHTML/URL Event Maps -#define BEGIN_DHTML_URL_EVENT_MAP(c) @< -#define BEGIN_EMBED_DHTML_EVENT_MAP(c,p) @< -#define END_EMBED_DHTML_EVENT_MAP() @> -#define BEGIN_URL_ENTRIES(c) @< -#define URL_EVENT_ENTRY(c,s,p) @= -#define URL_EVENT_ENTRY(c,s,p) @= -#define END_URL_ENTRIES() @> -#define END_DHTML_URL_EVENT_MAP(c) @> - -// MFC Dispatch Maps -#define BEGIN_DISPATCH_MAP(c,b) @< -#define DISP_FUNCTION(c,s,x,va,vb) @= -#define DISP_FUNCTION_ID(c,s,d,x,va,vb) @= -#define DISP_PROPERTY(c,s,m,va) @= -#define DISP_PROPERTY_ID(c,s,id,m,v) @= -#define DISP_PROPERTY_EX(c,s,g,x,v) @= -#define DISP_PROPERTY_EX_ID(c,s,id,gp,sp,v) @= -#define DISP_PROPERTY_NOTIFY(c,s,p,x,v) @= -#define DISP_PROPERTY_NOTIFY_ID(c,s,id,p,f,v) @= -#define DISP_PROPERTY_PARAM(c,s,gp,sp,va,vb) @= -#define DISP_PROPERTY_PARAM_ID(c,s,id,gp,sp,m,v) @= -#define DISP_DEFVALUE(c,s) @= -#define DISP_STOCKFUNC_DOCLICK() @= -#define DISP_STOCKFUNC_REFRESH() @= -#define DISP_STOCKPROP_APPEARANCE() @= -#define DISP_STOCKPROP_BACKCOLOR() @= -#define DISP_STOCKPROP_BORDERSTYLE() @= -#define DISP_STOCKPROP_CAPTION() @= -#define DISP_STOCKPROP_ENABLED() @= -#define DISP_STOCKPROP_FONT() @= -#define DISP_STOCKPROP_FORECOLOR() @= -#define DISP_STOCKPROP_HWND() @= -#define DISP_STOCKPROP_READYSTATE() @= -#define DISP_STOCKPROP_TEXT() @= -#define END_DISPATCH_MAP() @> - -// MFC Event Maps -#define BEGIN_EVENT_MAP(c,b) @< -#define EVENT_STOCK_CLICK() @= -#define EVENT_STOCK_DBLCLICK() @= -#define EVENT_STOCK_ERROREVENT() @= -#define EVENT_STOCK_KEYDOWN() @= -#define EVENT_STOCK_KEYPRESS() @= -#define EVENT_STOCK_KEYUP() @= -#define EVENT_STOCK_MOUSEDOWN() @= -#define EVENT_STOCK_MOUSEMOVE() @= -#define EVENT_STOCK_MOUSEUP() @= -#define EVENT_STOCK_READYSTATECHANGE() @= -#define EVENT_CUSTOM(s,f,v) @= -#define EVENT_CUSTOM_ID(s,id,f,v) @= -#define END_EVENT_MAP() @> - -// MFC Event Sink Maps -#define BEGIN_EVENTSINK_MAP(c,b) @< -#define ON_EVENT(c,id,i,f,v) @= -#define ON_EVENT_RANGE(c,ida,idb,i,f,v) @= -#define ON_EVENT_REFLECT(c,id,f,v) @= -#define ON_PROPNOTIFY(c,id,disp,x,f) @= -#define ON_PROPNOTIFY_RANGE(c,ida,idb,disp,x,f) @= -#define ON_PROPNOTIFY_REFLECT(c,disp,x,f) @= -#define END_EVENTSINK_MAP() @> - -// MFC Message Maps -#define BEGIN_MESSAGE_MAP(c,b) @< -#define ON_ACN_START(id,f) @= -#define ON_ACN_STOP(id,f) @= -#define ON_COMMAND(id,f) @= -#define ON_COMMAND_EX(id,f) @= -#define ON_COMMAND_RANGE(ida,idb,f) @= -#define ON_COMMAND_EX_RANGE(ida,idb,f) @= -#define ON_CONTROL_REFLECT(notifyCode,f) @= -#define ON_CONTROL_REFLECT_EX(notifyCode,f) @= -#define ON_CONTROL_RANGE(m,ida,idb,f) @= -#define ON_WM_ACTIVATE() @= -#define ON_WM_ACTIVATEAPP() @= -#define ON_WM_APPCOMMAND() @= -#define ON_WM_ASKCBFORMATNAME() @= -#define ON_WM_CANCELMODE() @= -#define ON_WM_CAPTURECHANGED() @= -#define ON_WM_CHANGECBCHAIN() @= -#define ON_WM_CHANGEUISTATE() @= -#define ON_WM_CHAR() @= -#define ON_WM_CHARTOITEM() @= -#define ON_WM_CHARTOITEM_REFLECT() @= -#define ON_WM_CHILDACTIVATE() @= -#define ON_WM_CLIPBOARDUPDATE() @= -#define ON_WM_CLOSE() @= -#define ON_WM_COMPACTING() @= -#define ON_WM_COMPAREITEM() @= -#define ON_WM_COMPAREITEM_REFLECT() @= -#define ON_WM_CONTEXTMENU() @= -#define ON_WM_COPYDATA() @= -#define ON_WM_CREATE() @= -#define ON_WM_CTLCOLOR() @= -#define ON_WM_CTLCOLOR_REFLECT() @= -#define ON_WM_DEADCHAR() @= -#define ON_WM_DELETEITEM() @= -#define ON_WM_DELETEITEM_REFLECT() @= -#define ON_WM_DESTROY() @= -#define ON_WM_DESTROYCLIPBOARD() @= -#define ON_WM_DEVICECHANGE() @= -#define ON_WM_DEVMODECHANGE() @= -#define ON_WM_DRAWCLIPBOARD() @= -#define ON_WM_DRAWITEM() @= -#define ON_WM_DRAWITEM_REFLECT() @= -#define ON_WM_DROPFILES() @= -#define ON_WM_DWMCOLORIZATIONCOLORCHANGED() @= -#define ON_WM_DWMCOMPOSITIONCHANGED() @= -#define ON_WM_DWMNCRENDERINGCHANGED() @= -#define ON_WM_DWMWINDOWMAXIMIZEDCHANGE() @= -#define ON_WM_ENABLE() @= -#define ON_WM_ENDSESSION() @= -#define ON_WM_ENTERIDLE() @= -#define ON_WM_ENTERMENULOOP() @= -#define ON_WM_ENTERSIZEMOVE() @= -#define ON_WM_ERASEBKGND() @= -#define ON_WM_EXITMENULOOP() @= -#define ON_WM_EXITSIZEMOVE() @= -#define ON_WM_FONTCHANGE() @= -#define ON_WM_GETDLGCODE() @= -#define ON_WM_GETMINMAXINFO() @= -#define ON_WM_HELPINFO() @= -#define ON_WM_HOTKEY() @= -#define ON_WM_HSCROLL() @= -#define ON_WM_HSCROLL_REFLECT() @= -#define ON_WM_HSCROLLCLIPBOARD() @= -#define ON_WM_ICONERASEBKGND() @= -#define ON_WM_INITMENU() @= -#define ON_WM_INITMENUPOPUP() @= -#define ON_WM_INPUT() @= -#define ON_WM_INPUT_DEVICE_CHANGE() @= -#define ON_WM_INPUTLANGCHANGE() @= -#define ON_WM_INPUTLANGCHANGEREQUEST() @= -#define ON_WM_KEYDOWN() @= -#define ON_WM_KEYUP() @= -#define ON_WM_KILLFOCUS() @= -#define ON_WM_LBUTTONDBLCLK() @= -#define ON_WM_LBUTTONDOWN() @= -#define ON_WM_LBUTTONUP() @= -#define ON_WM_MBUTTONDBLCLK() @= -#define ON_WM_MBUTTONDOWN() @= -#define ON_WM_MBUTTONUP() @= -#define ON_WM_MDIACTIVATE() @= -#define ON_WM_MEASUREITEM() @= -#define ON_WM_MEASUREITEM_REFLECT() @= -#define ON_WM_MENUCHAR() @= -#define ON_WM_MENUDRAG() @= -#define ON_WM_MENUGETOBJECT() @= -#define ON_WM_MENURBUTTONUP() @= -#define ON_WM_MENUSELECT() @= -#define ON_WM_MOUSEACTIVATE() @= -#define ON_WM_MOUSEHOVER() @= -#define ON_WM_MOUSEMOVE() @= -#define ON_WM_MOUSELEAVE() @= -#define ON_WM_MOUSEHWHEEL() @= -#define ON_WM_MOUSEWHEEL() @= -#define ON_WM_MOVE() @= -#define ON_WM_MOVING() @= -#define ON_WM_NCACTIVATE() @= -#define ON_WM_NCCALCSIZE() @= -#define ON_WM_NCCREATE() @= -#define ON_WM_NCDESTROY() @= -#define ON_WM_NCHITTEST() @= -#define ON_WM_NCLBUTTONDBLCLK() @= -#define ON_WM_NCLBUTTONDOWN() @= -#define ON_WM_NCLBUTTONUP() @= -#define ON_WM_NCMBUTTONDBLCLK() @= -#define ON_WM_NCMBUTTONDOWN() @= -#define ON_WM_NCMBUTTONUP() @= -#define ON_WM_NCMOUSEHOVER() @= -#define ON_WM_NCMOUSEMOVE() @= -#define ON_WM_NCMOUSELEAVE() @= -#define ON_WM_NCPAINT() @= -#define ON_WM_NCRBUTTONDBLCLK() @= -#define ON_WM_NCRBUTTONDOWN() @= -#define ON_WM_NCRBUTTONUP() @= -#define ON_WM_NCXBUTTONDBLCLK() @= -#define ON_WM_NCXBUTTONDOWN() @= -#define ON_WM_NCXBUTTONUP() @= -#define ON_WM_NEXTMENU() @= -#define ON_WM_NOTIFYFORMAT() @= -#define ON_WM_PAINT() @= -#define ON_WM_PAINTCLIPBOARD() @= -#define ON_WM_PALETTECHANGED() @= -#define ON_WM_PALETTEISCHANGING() @= -#define ON_WM_PARENTNOTIFY() @= -#define ON_WM_PARENTNOTIFY_REFLECT() @= -#define ON_WM_POWERBROADCAST() @= -#define ON_WM_QUERYDRAGICON() @= -#define ON_WM_QUERYENDSESSION() @= -#define ON_WM_QUERYNEWPALETTE() @= -#define ON_WM_QUERYOPEN() @= -#define ON_WM_QUERYUISTATE() @= -#define ON_WM_RBUTTONDBLCLK() @= -#define ON_WM_RBUTTONDOWN() @= -#define ON_WM_RBUTTONUP() @= -#define ON_WM_RENDERALLFORMATS() @= -#define ON_WM_RENDERFORMAT() @= -#define ON_WM_SETCURSOR() @= -#define ON_WM_SETFOCUS() @= -#define ON_WM_SETTINGCHANGE() @= -#define ON_WM_SHOWWINDOW() @= -#define ON_WM_SIZE() @= -#define ON_WM_SIZECLIPBOARD() @= -#define ON_WM_SIZING() @= -#define ON_WM_SPOOLERSTATUS() @= -#define ON_WM_STYLECHANGED() @= -#define ON_WM_STYLECHANGING() @= -#define ON_WM_SYNCPAINT() @= -#define ON_WM_SYSCHAR() @= -#define ON_WM_SYSCOLORCHANGE() @= -#define ON_WM_SYSCOMMAND() @= -#define ON_WM_SYSDEADCHAR() @= -#define ON_WM_SYSKEYDOWN() @= -#define ON_WM_SYSKEYUP() @= -#define ON_WM_TCARD() @= -#define ON_WM_THEMECHANGED() @= -#define ON_WM_TIMECHANGE() @= -#define ON_WM_TIMER() @= -#define ON_WM_VKEYTOITEM() @= -#define ON_WM_VKEYTOITEM_REFLECT() @= -#define ON_WM_VSCROLL() @= -#define ON_WM_VSCROLL_REFLECT() @= -#define ON_WM_VSCROLLCLIPBOARD() @= -#define ON_WM_UNICHAR() @= -#define ON_WM_UNINITMENUPOPUP() @= -#define ON_WM_UPDATEUISTATE() @= -#define ON_WM_USERCHANGED() @= -#define ON_WM_WINDOWPOSCHANGED() @= -#define ON_WM_WINDOWPOSCHANGING() @= -#define ON_WM_WININICHANGE() @= -#define ON_WM_WTSSESSION_CHANGE() @= -#define ON_WM_XBUTTONDBLCLK() @= -#define ON_WM_XBUTTONDOWN() @= -#define ON_WM_XBUTTONUP() @= -#define ON_BN_CLICKED(id,f) @= -#define ON_BN_DISABLE(id,f) @= -#define ON_BN_DOUBLECLICKED(id,f) @= -#define ON_BN_HILITE(id,f) @= -#define ON_BN_KILLFOCUS(id,f) @= -#define ON_BN_PAINT(id,f) @= -#define ON_BN_SETFOCUS(id,f) @= -#define ON_BN_UNHILITE(id,f) @= -#define ON_CBN_CLOSEUP(id,f) @= -#define ON_CBN_DBLCLK(id,f) @= -#define ON_CBN_DROPDOWN(id,f) @= -#define ON_CBN_EDITCHANGE(id,f) @= -#define ON_CBN_EDITUPDATE(id,f) @= -#define ON_CBN_ERRSPACE(id,f) @= -#define ON_CBN_KILLFOCUS(id,f) @= -#define ON_CBN_SELCHANGE(id,f) @= -#define ON_CBN_SELENDCANCEL(id,f) @= -#define ON_CBN_SELENDOK(id,f) @= -#define ON_CBN_SETFOCUS(id,f) @= -#define ON_CLBN_CHKCHANGE(id,f) @= -#define ON_EN_ALIGN_LTR_EC(id,f) @= -#define ON_EN_ALIGN_RTL_EC(id,f) @= -#define ON_EN_ALIGNLTR(id,f) @= -#define ON_EN_ALIGNRTL(id,f) @= -#define ON_EN_CHANGE(id,f) @= -#define ON_EN_ERRSPACE(id,f) @= -#define ON_EN_HSCROLL(id,f) @= -#define ON_EN_IMECHANGE(id,f) @= -#define ON_EN_KILLFOCUS(id,f) @= -#define ON_EN_MAXTEXT(id,f) @= -#define ON_EN_SETFOCUS(id,f) @= -#define ON_EN_UPDATE(id,f) @= -#define ON_EN_VSCROLL(id,f) @= -#define ON_LBN_DBLCLK(id,f) @= -#define ON_LBN_ERRSPACE(id,f) @= -#define ON_LBN_KILLFOCUS(id,f) @= -#define ON_LBN_SELCANCEL(id,f) @= -#define ON_LBN_SELCHANGE(id,f) @= -#define ON_LBN_SETFOCUS(id,f) @= -#define ON_MESSAGE(m,f) @= -#define ON_NOTIFY(notifyCode,id,f) @= -#define ON_NOTIFY_RANGE(notifyCode,id,idLast,f) @= -#define ON_NOTIFY_EX(notifyCode,id,f) @= -#define ON_NOTIFY_EX_RANGE(notifyCode,id,idLast,f) @= -#define ON_NOTIFY_REFLECT(notifyCode,f) @= -#define ON_NOTIFY_REFLECT_EX(notifyCode,f) @= -#define ON_REGISTERED_MESSAGE(m,f) @= -#define ON_THREAD_MESSAGE(m,f) @= -#define ON_REGISTERED_THREAD_MESSAGE(m,f) @= -#define ON_STN_CLICKED(id,f) @= -#define ON_STN_DBLCLK(id,f) @= -#define ON_STN_ENABLE(id,f) @= -#define ON_STN_DISABLE(id,f) @= -#define ON_OLECMD(p,c,id) @= -#define ON_OLECMD_CLEARSELECTION() @= -#define ON_OLECMD_COPY() @= -#define ON_OLECMD_CUT() @= -#define ON_OLECMD_NEW() @= -#define ON_OLECMD_OPEN() @= -#define ON_OLECMD_PAGESETUP() @= -#define ON_OLECMD_PASTE() @= -#define ON_OLECMD_PASTESPECIAL() @= -#define ON_OLECMD_PRINT() @= -#define ON_OLECMD_PRINTPREVIEW() @= -#define ON_OLECMD_REDO() @= -#define ON_OLECMD_SAVE() @= -#define ON_OLECMD_SAVE_AS() @= -#define ON_OLECMD_SAVE_COPY_AS() @= -#define ON_OLECMD_SELECTALL() @= -#define ON_OLECMD_UNDO() @= -#define ON_OLEVERB(v,f) @= -#define ON_STDOLEVERB(v,f) @= -#define ON_UPDATE_COMMAND_UI_RANGE(ida,idb,f) @= -#define ON_UPDATE_COMMAND_UI(id,f) @= -#define ON_UPDATE_COMMAND_UI_REFLECT(f) @= -#define END_MESSAGE_MAP() @> - -// MFC Parse Maps -#define BEGIN_PARSE_MAP(c,b) @< -#define DEFAULT_PARSE_COMMAND(f,c) @= -#define ON_PARSE_COMMAND(f,c,v) @= -#define ON_PARSE_COMMAND_PARAMS(s) @= -#define ON_PARSE_COMMAND(f,c,v) @= -#define ON_PARSE_COMMAND_PARAMS(s) @= -#define END_PARSE_MAP(c) @> - -// MFC Interface Maps -#define BEGIN_INTERFACE_MAP(c,b) @< -#define INTERFACE_PART(c, iid, lc) @= -#define INTERFACE_AGGREGATE(c, a) @= -#define END_INTERFACE_MAP() @> - -// Miscellaneous -#define __RPC_FAR -#define CONST const -#define CALLBACK -#define EXPORT -#define FAR -#define far -#define FASTCALL __fastcall -#define NEAR -#define near -#define PASCAL -#define SIZE_T_MAX UINT_MAX -#define UNALIGNED -#define ATL_NO_VTABLE -#define ATLVARIANT_THROW() throw() -#define AFX_API_EXPORT -#define AFX_API_IMPORT -#define AFX_CDECL __cdecl -#define AFX_CLASS_EXPORT -#define AFX_CLASS_IMPORT -#define AFX_COMDAT -#define AFX_CORE_DATA -#define AFX_CORE_DATADEF -#define AFX_DATA -#define AFX_DATA_EXPORT -#define AFX_DATA_IMPORT -#define AFX_DATADEF -#define AFX_DB_DATA -#define AFX_DB_DATADEF -#define AFX_EXPORT EXPORT -#define AFX_EXT_API -#define AFX_EXT_CLASS -#define AFX_EXT_DATA -#define AFX_EXT_DATADEF -#define afx_msg -#define AFX_NET_DATA -#define AFX_NET_DATADEF -#define AFX_NOVTABLE -#define AFX_OLE_DATA -#define AFX_OLE_DATADEF -#define AFX_STATIC extern -#define AFX_STATIC_DATA extern -#define AFXAPI __stdcall -#define AFXOLEAPI __stdcall -#define BASED_CODE -#define BASED_DEBUG -#define BASED_STACK -#define BEGIN_DUAL_INTERFACE_PART(localClass, baseClass) class X##localClass : public baseClass { public: BEGIN_COM_MAP(X##localClass, localClass) COM_INTERFACE_ENTRY (baseClass) END_COM_MAP() -#define BEGIN_INTERFACE_PART(localClass, baseClass) class X##localClass : public baseClass { public: BEGIN_COM_MAP(X##localClass, localClass) COM_INTERFACE_ENTRY (baseClass) END_COM_MAP() public: virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release(); virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void * * ppvObj); -#define CDECL __cdecl -#define DECLARE_AGGREGATABLE(x) -#define DECLARE_CLASSFACTORY_EX(cf) -#define DECLARE_CLASSFACTORY() -#define DECLARE_CLASSFACTORY2(lic) -#define DECLARE_CLASSFACTORY_AUTO_THREAD() -#define DECLARE_CONNECTION_MAP() -#define DECLARE_DISPATCH_MAP() -#define DECLARE_DUAL_ERRORINFO() BEGIN_INTERFACE_PART(SupportErrorInfo, ISupportErrorInfo) STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID riid); END_INTERFACE_PART(SupportErrorInfo) -#define DECLARE_DYNAMIC(class_name) -#define DECLARE_DYNCREATE(class_name) -#define DECLARE_EMPTY_MSG_MAP() -#define DECLARE_EVENT_MAP() -#define DECLARE_EVENTSINK_MAP() -#define DECLARE_HANDLE(x) -#define DECLARE_HANDLE32(x) -#define DECLARE_INTERFACE(iface) __interface iface -#define DECLARE_INTERFACE_(iface, baseiface) __interface iface : public baseiface -#define DECLARE_INTERFACE_MAP() -#define DECLARE_MAPI_INTERFACE_(iface, baseiface) __interface iface : public baseiface -#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) typedef __interface iface iface, FAR * piface -#define DECLARE_MESSAGE_MAP() -#define DECLARE_NOT_AGGREGATABLE(x) -#define DECLARE_OLECMD_MAP() -#define DECLARE_OLECREATE(class_name) -#define DECLARE_OLECREATE_EX(class_name) -#define DECLARE_OLECTLTYPE(class_name) -#define DECLARE_OLETYPELIB(class_name) -#define DECLARE_ONLY_AGGREGATABLE(x) -#define DECLARE_OPAQUE32(x) -#define DECLARE_PARSE_MAP() -#define DECLARE_POLY_AGGREGATABLE(x) -#define DECLARE_PROPERTY_SUPPORT(class) -#define DECLARE_PROPPAGEIDS(class_name) -#define DECLARE_PROTECT_FINAL_CONSTRUCT() -#define DECLARE_REGISTRY(class, pid, vpid, nid, flags) -#define DECLARE_REGISTRY_RESOURCE(x) -#define DECLARE_SERIAL(class_name) -#define DECLARE_VIEW_STATUS(statusFlags) -#define DECLARE_WND_CLASS(WndClassName) -#define DECLARE_WND_SUPERCLASS(WndClassName, OrigWndClassName) -#define DELEGATE_DUAL_INTERFACE(objectClass, dualClass) -#define END_DUAL_INTERFACE_PART(localClass) } m_x##localClass; friend class X##localClass; -#define END_INTERFACE_PART(localClass) } m_x##localClass; friend class X##localClass; -#define END_INTERFACE_PART_STATIC(localClass) END_INTERFACE_PART(localClass) -#define END_INTERFACE_PART_OPTIONAL(localClass) }; CInterfacePlaceHolder m_x##localClass; friend class X##localClass; -#define EXTERN_C extern -#define EXTERN_PROCESS_LOCAL(class_name, ident_name) extern AFX_DATA AFX_DATADEF CProcessLocal ident_name; -#define IMPLEMENT_DUAL_ERRORINFO(objectClass, riidSource) -#define IMPLEMENT_DYNAMIC(class_name, base_class_name) -#define IMPLEMENT_DYNCREATE(class_name, base_class_name) -#define IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) -#define IMPLEMENT_OLECREATE_EX(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) -#define IMPLEMENT_OLECTLTYPE(class_name, idsUserTypeName, dwOleMisc) -#define IMPLEMENT_OLETYPELIB(class_name, tlid, wVerMajor, wVerMinor) -#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) -#define INIT_INTERFACE_PART(theClass, localClass) -#define INLINE __inline -#define MAPIMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method -#define MAPIMETHOD_(type, method) virtual type STDMETHODCALLTYPE method -#define MAPIMETHOD_DECLARE(type, method, prefix) type STDMETHODCALLTYPE -#define MIDL_INTERFACE(x) struct -#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID name -#define interface __interface -#define PROCESS_LOCAL(class_name, ident_name) AFX_DATADEF CProcessLocal ident_name; -#define PURE = 0 -#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method -#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method -#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE * method) -#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE * method) -#define STDMETHODCALLTYPE __stdcall -#define STDMETHODIMP_(type) type STDMETHODCALLTYPE -#define STDMETHODIMP HRESULT STDMETHODCALLTYPE -#define SQLOLE_HELPID(id) -#define THIS void -#define THIS_ -#define TRY try { -#define END_TRY } -#define CATCH(class_name, e) } catch (class_name * e) { -#define AND_CATCH(class_name, e) } catch (class_name * e) { -#define END_CATCH } -#define CATCH_ALL(e) } catch (CException* e) { -#define AND_CATCH_ALL(e) } catch (CException* e) { -#define END_CATCH_ALL } -#define __T(name) name -#define _T(name) name -#define TEXT(name) name -#define WINAPI __stdcall -#define importlib(name) -#define DECLSPEC_IMPORT -#define DECLSPEC_NORETURN -#define DECLSPEC_NOTHROW -#define DECLSPEC_ALIGN(x) -#define DECLSPEC_UUID(x) -#define DECLSPEC_NOVTABLE -#define DECLSPEC_SELECTANY -#define DECLSPEC_ADDRSAFE -#define DECLSPEC_CACHEALIGN -#define DECLSPEC_SAFEBUFFERS -#define DECLSPEC_NOINLINE -#define DECLSPEC_GUARDNOCF -#define DECLSPEC_GUARD_SUPPRESS -#define DECLSPEC_CHPE_GUEST -#define DECLSPEC_CHPE_PATCHABLE -#define DECLSPEC_DEPRECATED -#define DECLSPEC_DEPRECATED_DDK -#define __allowed(p) -#define __in_data_source(src_sym) -#define __out_data_source(src_sym) -#define __field_data_source(src_sym) -#define __this_out_data_source(src_syn) -#define _VARIANT_BOOL -#define RPCNSAPI - -// C++ Standard Library -#define _STD_BEGIN namespace std { -#define _STD_END } -#define _STD ::std:: -#define _STDEXT_BEGIN namespace stdext { -#define _STDEXT_END } -#define _STDEXT ::stdext:: -#define _CSTD :: -#define _TRY_BEGIN try { -#define _CATCH(x) } catch (x) { -#define _CATCH_ALL } catch (...) { -#define _CATCH_END } -#define _CATCH_IO_(x) -#define _RAISE(x) throw (x) -#define _RERAISE throw -#define _THROW0() throw () -#define _THROW1(x) throw (x) -#define _THROW(x, y) throw x(y) -#define _BITMASK(E, T) typedef int T -#define _BITMASK_OPS(T) -#define _TDEF(x) = x -#define _TDEF2(x, y) = x, y -#define _CNTSIZ(iter) ptrdiff_t -#define _STCONS(ty, name, val) enum {name = val} -#define _TRY_IO_BEGIN -#define _CATCH_IO_END -#define _CATCH_IO_(x) -#define _NOEXCEPT - -#define _W64 -#define _ADVSIMD_ALIGN(x) -#define IVEC_LOGICALS(vect,element) -#define IVEC_ADD_SUB(vect,element,opsize) -#define IVEC_SELECT(vect12,vect34,element,selop) -#define IVEC128_LOGICALS(vect,element) -#define IVEC128_ADD_SUB(vect,element,opsize) -#define IVEC128_SELECT(vect12,vect34,element,selop) -#define F64vec2_COMP(op) -#define F64vec2_COMI(op) -#define F64vec2_SELECT(op) -#define F64vec2_UCOMI(op) -#define Fvec32s4_SELECT(op) -#define Fvec32s4_COMP(op) -#define Fvec32s1_SELECT(op) -#define Fvec32s1_COMP(op) -#define _FS_DLL -#define _CMPLX(T) complex -#define _CTR(T) _Ctraits -#define _TMPLT(T) template -#define _OMPIMP -#define _RTCINTERNAL_DEPRECATED -#define _NON_MEMBER_CALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) -#define _NON_MEMBER_CALL_CV(FUNC, REF_OPT, NOEXCEPT_OPT) -#define _NON_MEMBER_CALL_CV_REF(FUNC, NOEXCEPT_OPT) -#define _NON_MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) -#define _CLASS_DEFINE_CV_REF_NOEXCEPT(CLASS) -#define _GENERIC_MATH1R(FUN, RET, CRTTYPE) -#define _GENERIC_MATH1(FUN, CRTTYPE) -#define _GENERIC_MATH1X(FUN, ARG2, CRTTYPE) -#define _GENERIC_MATH2_CALL(FUN, CRTTYPE, CALL_OPT) -#define _GENERIC_MATH2(FUN, CRTTYPE) -#define _IMPLEMENT_INVOKE(NAME_PREFIX, CONSTEXPR) -#define _GENERIC_MATHC0X(FUN, VAL) -#define _GENERIC_MATHC1X(FUN, VAL) -#define _MEMBER_CALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) -#define _MEMBER_CALL_CV(FUNC, REF_OPT, NOEXCEPT_OPT) -#define _MEMBER_CALL_CV_REF(FUNC, NOEXCEPT_OPT) -#define _MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) -#define _CLASS_DEFINE_CONST(CLASS) -#define _CLASS_DEFINE_CV(CLASS) -#define _CLASS_DEFINE_CV_REF_NOEXCEPT(CLASS) -#define _COLLECTION_ATTRIBUTES -#define _COLLECTION_TRANSLATE } catch (const ::std::bad_alloc&) { throw ref new OutOfMemoryException; } catch (const ::std::exception&) { throw ref new FailureException; } - -// CRT -#define __CRTDECL -#define __CLR_OR_THIS_CALL -#define __CLRCALL_OR_CDECL -#define __CLRCALL_PURE_OR_CDECL -#define _CRTIMP -#define _CRTIMP2 -#define _CRTIMP2_PURE -#define _CRTIMP2_NCEEPURE -#define _CRT_NONSTDC_DEPRECATE(func) -#define _CRT_INSECURE_DEPRECATE(func) -#define _CONST_RETURN -#define _WConst_return - -#define _CRT_ALIGN(n) -#define _CRT_DEPRECATE_TEXT(text) -#define _CRT_INSECURE_DEPRECATE_GLOBALS(func) -#define _CRT_INSECURE_DEPRECATE_MEMORY(func) -#define _CRT_JIT_INTRINSIC -#define _CRTNOALIAS -#define _CRTRESTRICT -#define _CRT_OBSOLETE(func) -#define _CRTIMP_ALTERNATIVE -#define _MRTIMP -#define _SWPRINTFS_DEPRECATED - -#define _ACRTIMP -#define _ACRTIMP_ALT -#define _CRTALLOCATOR -#define _CRT_BEGIN_C_HEADER -#define _CRT_END_C_HEADER -#define _CRT_STDIO_INLINE -#define _CRT_UNUSED(x) -#define _DCRTIMP -#define _NO_CRT_STDIO_INLINE -#define _WCSTOK_DEPRECATED -#define _CONCRTIMP -#define _MRTIMP2 -#define _MRTIMP2_NPURE -#define _MRTIMP2_PURE_NPURE -#define _CRT_GUARDOVERFLOW -#define _CRT_HYBRIDPATCHABLE -#define _CRT_MANAGED_FP_DEPRECATE -#define _BEGIN_PRAGMA_OPTIMIZE_ENABLE(flags, bug, reason) -#define _BEGIN_PRAGMA_OPTIMIZE_DISABLE(flags, bug, reason) -#define _END_PRAGMA_OPTIMIZE() -#define _PGLOBAL -#define RPCRTAPI - -// yvals -#define _INLINE_VAR -#define _CONSTEXPR17 -#define _NOEXCEPT_COND(...) -#define _NOEXCEPT_OPER(...) -#define _EXTERN_C extern "C" { -#define _END_EXTERN_C } -#define _CRTIMP2_PURE_IMPORT -#define _CRTDATA2_IMPORT -#define _CRTIMP2_NCEEPURE_IMPORT -#define _NODISCARD -#define _DECLSPEC_ALLOCATOR -#define _DEPRECATE_TR1_NAMESPACE -#define _DEPRECATE_TR2_SYS_NAMESPACE -#define _DEPRECATE_IDENTITY_STRUCT -#define _CXX17_DEPRECATE_C_HEADER -#define _CXX17_DEPRECATE_STRSTREAM -#define _CXX17_DEPRECATE_UNCAUGHT_EXCEPTION -#define _CXX17_DEPRECATE_ADAPTOR_TYPEDEFS -#define _CXX17_DEPRECATE_NEGATORS -#define _CXX17_DEPRECATE_ALLOCATOR_VOID -#define _CXX17_DEPRECATE_OLD_ALLOCATOR_MEMBERS -#define _CXX17_DEPRECATE_RAW_STORAGE_ITERATOR -#define _CXX17_DEPRECATE_TEMPORARY_BUFFER -#define _CXX17_DEPRECATE_IS_LITERAL_TYPE -#define _CXX17_DEPRECATE_RESULT_OF -#define _CXX17_DEPRECATE_ITERATOR_BASE_CLASS -#define _CXX17_DEPRECATE_SHARED_PTR_UNIQUE -#define _CXX17_DEPRECATE_CODECVT_HEADER -#define _EXPERIMENTAL_PARALLEL_ALGORITHMS -#define __PURE_APPDOMAIN_GLOBAL -#define _SCL_INSECURE_DEPRECATE_FN(_Func) - -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst) template _ReturnType _FuncName(_DstType (&_Dst)[_Size]); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1) template _ReturnType _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) template _ReturnType _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(_ReturnType, _FuncName, _HType1, _HArg1, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) template _ReturnType _FuncName(_HType1 _HArg1, _DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(_ReturnType, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _DstType, _Dst) template _ReturnType _FuncName(_HType1 _HArg1, _HType2 _HArg2, _DstType (&_Dst)[_Size]); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, ...); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(_ReturnType, _FuncName, _VFuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) template _ReturnType _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2, ...); -#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(_ReturnType, _FuncName, _DstType, _Src) template _ReturnType _FuncName(_In_ const _DstType *_Src, _DstType (&_Drive)[_DriveSize], _DstType (&_Dir)[_DirSize], _DstType (&_Name)[_NameSize], _DstType (&_Ext)[_ExtSize]); - -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _DstType, _Dst) _DeclSpec _ReturnType __cdecl _FuncName(_DstType *_Dst); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3, _TType4 _TArg4); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _SalAttributeDst _DstType *_Dst, _TType1 _TArg1); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) _DeclSpec _ReturnType __cdecl _FuncName(_HType1 _HArg1, _HType2 _HArg2, _SalAttributeDst _DstType *_Dst); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName,_VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, ...); _DeclSpec _ReturnType __cdecl _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, va_list _Args); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); _DeclSpec _ReturnType __cdecl _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, ...); _DeclSpec _ReturnType __cdecl _VFuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, va_list _Args); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2); -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) _DeclSpec size_t __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3); -#define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) _ReturnType __CRTDECL _FuncName(_DstType *_Dst) -#define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) -#define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1) -#define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) -#define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2) -#define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DECLARE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) _ReturnType __CRTDECL _FuncName(_DstType *_Dst, _TType1 _TArg1, _TType2 _TArg2, _TType3 _TArg3) -#define __DEFINE_CPP_OVERLOAD_INLINE_NFUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) - -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) - -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _VFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE(_DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) - -#define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst) -#define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1) -#define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DECLARE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) -#define __DEFINE_CPP_OVERLOAD_INLINE_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) - -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS(_ReturnType, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3, _TType4, _TArg4) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _HType1, _HArg1, _HType2, _HArg2, _SalAttributeDst, _DstType, _Dst) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _SecureFuncName, _VFuncName, _SecureVFuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _CC, _FuncName, _VFuncName, _SecureVFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) -#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(_DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2, _TType3, _TArg3) - -// VCRuntime -#define _VCRTIMP -#define _VCRT_ALLOCATOR -#define _VCRT_ALIGN(x) -#define _CRT_DEPRECATE_TEXT(_Text) - -// Core Windows -#define APIENTRY -#define NTAPI -#define WINGDIAPI -#define STDMETHODVCALLTYPE -#define STDAPICALLTYPE -#define STDAPIVCALLTYPE __cdecl -#define FORCEINLINE __forceinline -#define ISOLATION_AWARE_INLINE inline - -#define WINMMAPI -#define WINADVAPI -#define WINBASEAPI -#define WINCOMMCTRLAPI -#define WINCOMMDLGAPI -#define WINCRYPT32API -#define WINCRYPT32STRINGAPI -#define WINSCARDAPI -#define WINSCARDDATA -#define WINUSERAPI - -#define __MACHINEI __MACHINE -#define __MACHINEX64 __MACHINE -#define __MACHINEIA32 __MACHINE -#define __MACHINEX86X_X64 __MACHINE -#define __MACHINEX86X_IA64 __MACHINE -#define __MACHINEIA64 __MACHINE -#define __MACHINEW64 __MACHINE -#define __MACHINEIW64 __MACHINE -#define __MACHINESA __MACHINE -#define __MACHINEARMX __MACHINE -#define __MACHINECC __MACHINE -#define __MACHINECE __MACHINE -#define __MACHINE(X) X; -#define __MACHINEWVMPURE(X) X; -#define _INTERLOCKEDCALL __cdecl -#define __MACHINEX86 __MACHINE -#define __MACHINEX86_X64 __MACHINE -#define __MACHINEARM __MACHINE -#define __MACHINEARM64 __MACHINE -#define __MACHINEARM_ARM64 __MACHINE -#define __MACHINEARM_ARM64_X64 __MACHINE -#define __MACHINEARM64_X64 __MACHINE -#define __MACHINECHPEX86ARM64 __MACHINE - -#define CFORCEINLINE -#define STKFORCEINLINE -#define PFORCEINLINE -#define WINCRYPT_DWORD_CPP_ONLY -#define DECLARE_INTERFACE_IID(iface, iid) interface DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE iface -#define DECLARE_INTERFACE_IID_(iface, baseiface, iid) interface DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE iface : public baseiface -#define WINGDIAPI -#define WINSPOOLAPI -#define WINOLECTLAPI_ -#define WINOLECTLAPI_(type) -#define WINNORMALIZEAPI -#define PROPSHEETPAGEA_V1_FIELDS -#define PROPSHEETHEADERA_V1_FIELDS -#define PROPSHEETPAGEW_V1_FIELDS -#define PROPSHEETHEADERW_V1_FIELDS -#define __WRAPPED__ -#define DEPRECATED(x) -#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) -#define _ENUM_FLAG_CONSTEXPR - -// WinRT -#define ROAPI - -// OLE -#define BEGIN_INTERFACE -#define END_INTERFACE -#define CONST_VTBL const - -#define STDAPI HRESULT -#define STDAPI_(type) type -#define STDAPIV_(type) type -#define STDMETHODIMPV_(type) type -#define WINOLEAPI HRESULT -#define WINOLEAPI_(type) type -#define WINOLEAUTAPI HRESULT -#define WINOLEAUTAPI_(type) type -#define DEFINE_OLEGUID(name, x, y, z) GUID name -#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } - -// RPC -#define __RPC_API -#define __RPC_USER -#define __RPC_STUB -#define RPC_ENTRY - -#define __RPC__range(min,max) -#define __RPC__in_range(min,max) -#define __RPC__in -#define __RPC__in_string -#define __RPC__in_opt_string -#define __RPC__in_ecount(size) -#define __RPC__in_ecount_full(size) -#define __RPC__in_ecount_full_string(size) -#define __RPC__in_ecount_part(size, length) -#define __RPC__in_ecount_full_opt(size) -#define __RPC__in_ecount_full_opt_string(size) -#define __RPC__inout_ecount_full_opt_string(size) -#define __RPC__in_ecount_part_opt(size, length) -#define __RPC__in_xcount(size) -#define __RPC__in_xcount_full(size) -#define __RPC__in_xcount_full_string(size) -#define __RPC__in_xcount_part(size, length) -#define __RPC__in_xcount_full_opt(size) -#define __RPC__in_xcount_full_opt_string(size) -#define __RPC__inout_xcount_full_opt_string(size) -#define __RPC__in_xcount_part_opt(size, length) - -#define __RPC__deref_in -#define __RPC__deref_in_string -#define __RPC__deref_in_opt -#define __RPC__deref_in_opt_string -#define __RPC__deref_opt_in -#define __RPC__deref_opt_in_string -#define __RPC__deref_opt_in_opt -#define __RPC__deref_opt_in_opt_string -#define __RPC__deref_in_ecount(size) -#define __RPC__deref_in_ecount_part(size, length) -#define __RPC__deref_in_ecount_full(size) -#define __RPC__deref_in_ecount_full_opt(size) -#define __RPC__deref_in_ecount_full_string(size) -#define __RPC__deref_in_ecount_full_opt_string(size) -#define __RPC__deref_in_ecount_opt(size) -#define __RPC__deref_in_ecount_opt_string(size) -#define __RPC__deref_in_ecount_part_opt(size, length) -#define __RPC__deref_in_xcount(size) -#define __RPC__deref_in_xcount_part(size, length) -#define __RPC__deref_in_xcount_full(size) -#define __RPC__deref_in_xcount_full_opt(size) -#define __RPC__deref_in_xcount_full_string(size) -#define __RPC__deref_in_xcount_full_opt_string(size) -#define __RPC__deref_in_xcount_opt(size) -#define __RPC__deref_in_xcount_opt_string(size) -#define __RPC__deref_in_xcount_part_opt(size, length) - -// [out] -#define __RPC__out -#define __RPC__out_ecount(size) -#define __RPC__out_ecount_part(size, length) -#define __RPC__out_ecount_full(size) -#define __RPC__out_ecount_full_string(size) -#define __RPC__out_xcount(size) -#define __RPC__out_xcount_part(size, length) -#define __RPC__out_xcount_full(size) -#define __RPC__out_xcount_full_string(size) - -// [in,out] -#define __RPC__inout -#define __RPC__inout_string -#define __RPC__opt_inout -#define __RPC__inout_ecount(size) -#define __RPC__inout_ecount_part(size, length) -#define __RPC__inout_ecount_full(size) -#define __RPC__inout_ecount_full_string(size) -#define __RPC__inout_xcount(size) -#define __RPC__inout_xcount_part(size, length) -#define __RPC__inout_xcount_full(size) -#define __RPC__inout_xcount_full_string(size) - -// [in,unique] -#define __RPC__in_opt -#define __RPC__in_ecount_opt(size) -#define __RPC__in_xcount_opt(size) - -// [in,out,unique] -#define __RPC__inout_opt -#define __RPC__inout_opt_string -#define __RPC__inout_ecount_opt(size) -#define __RPC__inout_ecount_part_opt(size, length) -#define __RPC__inout_ecount_full_opt(size) -#define __RPC__inout_ecount_full_string(size) -#define __RPC__inout_xcount_opt(size) -#define __RPC__inout_xcount_part_opt(size, length) -#define __RPC__inout_xcount_full_opt(size) -#define __RPC__inout_xcount_full_string(size) - -// [out] ** -#define __RPC__deref_out -#define __RPC__deref_out_string -#define __RPC__deref_out_opt -#define __RPC__deref_out_opt_string -#define __RPC__deref_out_ecount(size) -#define __RPC__deref_out_ecount_part(size, length) -#define __RPC__deref_out_ecount_full(size) -#define __RPC__deref_out_ecount_full_string(size) -#define __RPC__deref_out_xcount(size) -#define __RPC__deref_out_xcount_part(size, length) -#define __RPC__deref_out_xcount_full(size) -#define __RPC__deref_out_xcount_full_string(size) - -// [in,out] **, second pointer decoration. -#define __RPC__deref_inout -#define __RPC__deref_inout_string -#define __RPC__deref_inout_opt -#define __RPC__deref_inout_opt_string -#define __RPC__deref_inout_ecount_full(size) -#define __RPC__deref_inout_ecount_full_string(size) -#define __RPC__deref_inout_ecount_opt(size) -#define __RPC__deref_inout_ecount_part_opt(size, length) -#define __RPC__deref_inout_ecount_full_opt(size) -#define __RPC__deref_inout_ecount_full_opt_string(size) -#define __RPC__deref_inout_xcount_full(size) -#define __RPC__deref_inout_xcount_full_string(size) -#define __RPC__deref_inout_xcount_opt(size) -#define __RPC__deref_inout_xcount_part_opt(size, length) -#define __RPC__deref_inout_xcount_full_opt(size) -#define __RPC__deref_inout_xcount_full_opt_string(size) - -// [in,out,unique] -#define __RPC__deref_opt_inout -#define __RPC__deref_opt_inout_string -#define __RPC__deref_opt_inout_ecount(size) -#define __RPC__deref_opt_inout_ecount_part(size, length) -#define __RPC__deref_opt_inout_ecount_full(size) -#define __RPC__deref_opt_inout_ecount_full_string(size) -#define __RPC__deref_opt_inout_xcount(size) -#define __RPC__deref_opt_inout_xcount_part(size, length) -#define __RPC__deref_opt_inout_xcount_full(size) -#define __RPC__deref_opt_inout_xcount_full_string(size) - -#define __RPC__deref_out_ecount_opt(size) -#define __RPC__deref_out_ecount_part_opt(size, length) -#define __RPC__deref_out_ecount_full_opt(size) -#define __RPC__deref_out_ecount_full_opt_string(size) -#define __RPC__deref_out_xcount_opt(size) -#define __RPC__deref_out_xcount_part_opt(size, length) -#define __RPC__deref_out_xcount_full_opt(size) -#define __RPC__deref_out_xcount_full_opt_string(size) - -#define __RPC__deref_opt_inout_opt -#define __RPC__deref_opt_inout_opt_string -#define __RPC__deref_opt_inout_ecount_opt(size) -#define __RPC__deref_opt_inout_ecount_part_opt(size, length) -#define __RPC__deref_opt_inout_ecount_full_opt(size) -#define __RPC__deref_opt_inout_ecount_full_opt_string(size) -#define __RPC__deref_opt_inout_xcount_opt(size) -#define __RPC__deref_opt_inout_xcount_part_opt(size, length) -#define __RPC__deref_opt_inout_xcount_full_opt(size) -#define __RPC__deref_opt_inout_xcount_full_opt_string(size) - -#define __RPC_full_pointer -#define __RPC_unique_pointer -#define __RPC_ref_pointer -#define __RPC_string -#define _Result_nullonfailure_ - -// Shell API -#define SHSTDAPI_(type) type -#define SHDOCAPI_(type) type -#define SHSTDDOCAPI_(type) type -#define BROWSEUIAPI_(type) type -#define LWSTDAPI_(type) type -#define LWSTDAPIV_(type) type - -// SAL Annotations -#define _At_(target, annos) -#define _At_buffer_(target,iter,bound,annos) -#define _When_(expr, annos) -#define _Group_(annos) -#define _Use_decl_annotations_ -#define _Const_ -#define _Notref_ -#define _Reserved_ -#define _In_ -#define _In_opt_ -#define _In_z_ -#define _In_opt_z_ -#define _In_reads_(size) -#define _In_reads_opt_(size) -#define _In_reads_bytes_(size) -#define _In_reads_bytes_opt_(size) -#define _In_reads_z_(size) -#define _In_reads_opt_z_(size) -#define _In_reads_or_z_(size) -#define _In_reads_to_ptr_(ptr) -#define _In_reads_to_ptr_opt_(ptr) -#define _In_reads_to_ptr_z_(ptr) -#define _In_reads_to_ptr_opt_z_(ptr) -#define _In_count_(size) -#define _In_opt_count_(size) -#define _In_bytecount_(size) -#define _In_opt_bytecount_(size) -#define _In_count_c_(size) -#define _In_opt_count_c_(size) -#define _In_bytecount_c_(size) -#define _In_opt_bytecount_c_(size) -#define _In_z_count_(size) -#define _In_opt_z_count_(size) -#define _In_z_bytecount_(size) -#define _In_opt_z_bytecount_(size) -#define _In_z_count_c_(size) -#define _In_opt_z_count_c_(size) -#define _In_z_bytecount_c_(size) -#define _In_opt_z_bytecount_c_(size) -#define _In_ptrdiff_count_(size) -#define _In_opt_ptrdiff_count_(size) -#define _In_count_x_(size) -#define _In_opt_count_x_(size) -#define _In_bytecount_x_(size) -#define _In_opt_bytecount_x_(size) -#define _Out_ -#define _Out_opt_ -#define _Out_writes_(size) -#define _Out_writes_opt_(size) -#define _Out_writes_bytes_(size) -#define _Out_writes_bytes_opt_(size) -#define _Out_writes_z_(size) -#define _Out_writes_opt_z_(size) -#define _Out_writes_to_(size,count) -#define _Out_writes_to_opt_(size,count) -#define _Out_writes_all_(size) -#define _Out_writes_all_opt_(size) -#define _Out_writes_bytes_to_(size,count) -#define _Out_writes_bytes_to_opt_(size,count) -#define _Out_writes_bytes_all_(size) -#define _Out_writes_bytes_all_opt_(size) -#define _Out_writes_to_ptr_(ptr) -#define _Out_writes_to_ptr_opt_(ptr) -#define _Out_writes_to_ptr_z_(ptr) -#define _Out_writes_to_ptr_opt_z_(ptr) -#define _Out_cap_(size) -#define _Out_opt_cap_(size) -#define _Out_bytecap_(size) -#define _Out_opt_bytecap_(size) -#define _Out_cap_c_(size) -#define _Out_opt_cap_c_(size) -#define _Out_bytecap_c_(size) -#define _Out_opt_bytecap_c_(size) -#define _Out_cap_m_(mult,size) -#define _Out_opt_cap_m_(mult,size) -#define _Out_z_cap_m_(mult,size) -#define _Out_opt_z_cap_m_(mult,size) -#define _Out_ptrdiff_cap_(size) -#define _Out_opt_ptrdiff_cap_(size) -#define _Out_cap_x_(size) -#define _Out_opt_cap_x_(size) -#define _Out_bytecap_x_(size) -#define _Out_opt_bytecap_x_(size) -#define _Out_z_cap_(size) -#define _Out_opt_z_cap_(size) -#define _Out_z_bytecap_(size) -#define _Out_opt_z_bytecap_(size) -#define _Out_z_cap_c_(size) -#define _Out_opt_z_cap_c_(size) -#define _Out_z_bytecap_c_(size) -#define _Out_opt_z_bytecap_c_(size) -#define _Out_z_cap_x_(size) -#define _Out_opt_z_cap_x_(size) -#define _Out_z_bytecap_x_(size) -#define _Out_opt_z_bytecap_x_(size) -#define _Out_cap_post_count_(cap,count) -#define _Out_opt_cap_post_count_(cap,count) -#define _Out_bytecap_post_bytecount_(cap,count) -#define _Out_opt_bytecap_post_bytecount_(cap,count) -#define _Out_z_cap_post_count_(cap,count) -#define _Out_opt_z_cap_post_count_(cap,count) -#define _Out_z_bytecap_post_bytecount_(cap,count) -#define _Out_opt_z_bytecap_post_bytecount_(cap,count) -#define _Out_capcount_(capcount) -#define _Out_opt_capcount_(capcount) -#define _Out_bytecapcount_(capcount) -#define _Out_opt_bytecapcount_(capcount) -#define _Out_capcount_x_(capcount) -#define _Out_opt_capcount_x_(capcount) -#define _Out_bytecapcount_x_(capcount) -#define _Out_opt_bytecapcount_x_(capcount) -#define _Out_z_capcount_(capcount) -#define _Out_opt_z_capcount_(capcount) -#define _Out_z_bytecapcount_(capcount) -#define _Out_opt_z_bytecapcount_(capcount) -#define _Inout_ -#define _Inout_opt_ -#define _Inout_z_ -#define _Inout_opt_z_ -#define _Inout_updates_(size) -#define _Inout_updates_opt_(size) -#define _Inout_updates_z_(size) -#define _Inout_updates_opt_z_(size) -#define _Inout_updates_to_(size,count) -#define _Inout_updates_to_opt_(size,count) -#define _Inout_updates_all_(size) -#define _Inout_updates_all_opt_(size) -#define _Inout_updates_bytes_(size) -#define _Inout_updates_bytes_opt_(size) -#define _Inout_updates_bytes_to_(size,count) -#define _Inout_updates_bytes_to_opt_(size,count) -#define _Inout_updates_bytes_all_(size) -#define _Inout_updates_bytes_all_opt_(size) -#define _Inout_count_(size) -#define _Inout_opt_count_(size) -#define _Inout_bytecount_(size) -#define _Inout_opt_bytecount_(size) -#define _Inout_count_c_(size) -#define _Inout_opt_count_c_(size) -#define _Inout_bytecount_c_(size) -#define _Inout_opt_bytecount_c_(size) -#define _Inout_z_count_(size) -#define _Inout_opt_z_count_(size) -#define _Inout_z_bytecount_(size) -#define _Inout_opt_z_bytecount_(size) -#define _Inout_z_count_c_(size) -#define _Inout_opt_z_count_c_(size) -#define _Inout_z_bytecount_c_(size) -#define _Inout_opt_z_bytecount_c_(size) -#define _Inout_ptrdiff_count_(size) -#define _Inout_opt_ptrdiff_count_(size) -#define _Inout_count_x_(size) -#define _Inout_opt_count_x_(size) -#define _Inout_bytecount_x_(size) -#define _Inout_opt_bytecount_x_(size) -#define _Inout_cap_(size) -#define _Inout_opt_cap_(size) -#define _Inout_bytecap_(size) -#define _Inout_opt_bytecap_(size) -#define _Inout_cap_c_(size) -#define _Inout_opt_cap_c_(size) -#define _Inout_bytecap_c_(size) -#define _Inout_opt_bytecap_c_(size) -#define _Inout_cap_x_(size) -#define _Inout_opt_cap_x_(size) -#define _Inout_bytecap_x_(size) -#define _Inout_opt_bytecap_x_(size) -#define _Inout_z_cap_(size) -#define _Inout_opt_z_cap_(size) -#define _Inout_z_bytecap_(size) -#define _Inout_opt_z_bytecap_(size) -#define _Inout_z_cap_c_(size) -#define _Inout_opt_z_cap_c_(size) -#define _Inout_z_bytecap_c_(size) -#define _Inout_opt_z_bytecap_c_(size) -#define _Inout_z_cap_x_(size) -#define _Inout_opt_z_cap_x_(size) -#define _Inout_z_bytecap_x_(size) -#define _Inout_opt_z_bytecap_x_(size) -#define _Ret_ -#define _Ret_opt_ -#define _Outptr_ -#define _Outptr_result_maybenull_ -#define _Outptr_opt_ -#define _Outptr_opt_result_maybenull_ -#define _Outptr_result_z_ -#define _Outptr_opt_result_z_ -#define _Outptr_result_maybenull_z_ -#define _Outptr_opt_result_maybenull_z_ -#define _Outptr_result_nullonfailure_ -#define _Outptr_opt_result_nullonfailure_ -#define _COM_Outptr_ -#define _COM_Outptr_result_maybenull_ -#define _COM_Outptr_opt_ -#define _COM_Outptr_opt_result_maybenull_ -#define _Outptr_result_buffer_(size) -#define _Outptr_opt_result_buffer_(size) -#define _Outptr_result_buffer_to_(size,count) -#define _Outptr_opt_result_buffer_to_(size,count) -#define _Outptr_result_buffer_all_(size) -#define _Outptr_opt_result_buffer_all_(size) -#define _Outptr_result_buffer_maybenull_(size) -#define _Outptr_opt_result_buffer_maybenull_(size) -#define _Outptr_result_buffer_to_maybenull_(size,count) -#define _Outptr_opt_result_buffer_to_maybenull_(size,count) -#define _Outptr_result_buffer_all_maybenull_(size) -#define _Outptr_opt_result_buffer_all_maybenull_(size) -#define _Outptr_result_bytebuffer_(size) -#define _Outptr_opt_result_bytebuffer_(size) -#define _Outptr_result_bytebuffer_to_(size,count) -#define _Outptr_opt_result_bytebuffer_to_(size,count) -#define _Outptr_result_bytebuffer_all_(size) -#define _Outptr_opt_result_bytebuffer_all_(size) -#define _Outptr_result_bytebuffer_maybenull_(size) -#define _Outptr_opt_result_bytebuffer_maybenull_(size) -#define _Outptr_result_bytebuffer_to_maybenull_(size,count) -#define _Outptr_opt_result_bytebuffer_to_maybenull_(size,count) -#define _Outptr_result_bytebuffer_all_maybenull_(size) -#define _Outptr_opt_result_bytebuffer_all_maybenull_(size) -#define _Outref_ -#define _Outref_result_maybenull_ -#define _Outref_result_buffer_(size) -#define _Outref_result_bytebuffer_(size) -#define _Outref_result_buffer_to_(size,count) -#define _Outref_result_bytebuffer_to_(size,count) -#define _Outref_result_buffer_all_(size) -#define _Outref_result_bytebuffer_all_(size) -#define _Outref_result_buffer_maybenull_(size) -#define _Outref_result_bytebuffer_maybenull_(size) -#define _Outref_result_buffer_to_maybenull_(size,count) -#define _Outref_result_bytebuffer_to_maybenull_(size,count) -#define _Outref_result_buffer_all_maybenull_(size) -#define _Outref_result_bytebuffer_all_maybenull_(size) -#define _Outref_result_nullonfailure_ -#define _Pre_defensive_ -#define _Post_defensive_ -#define _In_defensive_(annotes) -#define _Out_defensive_(annotes) -#define _Inout_defensive_(annotes) -#define _Result_nullonfailure_ -#define _Result_zeroonfailure_ -#define _Points_to_data_ -#define _Literal_ -#define _Notliteral_ -#define _Deref_out_ -#define _Deref_out_opt_ -#define _Deref_opt_out_ -#define _Deref_opt_out_opt_ -#define _Deref_out_z_ -#define _Deref_out_opt_z_ -#define _Deref_opt_out_z_ -#define _Deref_opt_out_opt_z_ -#define _Check_return_ -#define _Must_inspect_result_ -#define _Printf_format_string_ -#define _Scanf_format_string_ -#define _Scanf_s_format_string_ -#define _Success_(expr) -#define _Return_type_success_(expr) -#define _On_failure_(annos) -#define _Always_(annos) -#define _In_bound_ -#define _Out_bound_ -#define _Ret_bound_ -#define _Deref_in_bound_ -#define _Deref_out_bound_ -#define _Deref_inout_bound_ -#define _Deref_ret_bound_ -#define _In_range_(lb,ub) -#define _Out_range_(lb,ub) -#define _Ret_range_(lb,ub) -#define _Deref_in_range_(lb,ub) -#define _Deref_out_range_(lb,ub) -#define _Deref_ret_range_(lb,ub) -#define _Pre_equal_to_(expr) -#define _Post_equal_to_(expr) -#define _Unchanged_(e) -#define _Pre_satisfies_(cond) -#define _Post_satisfies_(cond) -#define _Field_size_(size) -#define _Field_size_opt_(size) -#define _Field_size_part_(size,count) -#define _Field_size_part_opt_(size,count) -#define _Field_size_full_(size) -#define _Field_size_full_opt_(size) -#define _Field_size_bytes_(size) -#define _Field_size_bytes_opt_(size) -#define _Field_size_bytes_part_(size,count) -#define _Field_size_bytes_part_opt_(size,count) -#define _Field_size_bytes_full_(size) -#define _Field_size_bytes_full_opt_(size) -#define _Field_z_ -#define _Field_range_(min,max) -#define _Pre_ -#define _Post_ -#define _Valid_ -#define _Notvalid_ -#define _Maybevalid_ -#define _Readable_bytes_(size) -#define _Readable_elements_(size) -#define _Writable_bytes_(size) -#define _Writable_elements_(size) -#define _Null_terminated_ -#define _NullNull_terminated_ -#define _Pre_readable_size_(size) -#define _Pre_writable_size_(size) -#define _Pre_readable_byte_size_(size) -#define _Pre_writable_byte_size_(size) -#define _Post_readable_size_(size) -#define _Post_writable_size_(size) -#define _Post_readable_byte_size_(size) -#define _Post_writable_byte_size_(size) -#define _Null_ -#define _Notnull_ -#define _Maybenull_ -#define _Pre_z_ -#define _Pre_opt_z_ -#define _Pre_cap_(size) -#define _Pre_opt_cap_(size) -#define _Pre_bytecap_(size) -#define _Pre_opt_bytecap_(size) -#define _Pre_cap_c_(size) -#define _Pre_opt_cap_c_(size) -#define _Pre_bytecap_c_(size) -#define _Pre_opt_bytecap_c_(size) -#define _Pre_cap_c_one_ -#define _Pre_opt_cap_c_one_ -#define _Pre_cap_m_(mult,size) -#define _Pre_opt_cap_m_(mult,size) -#define _Pre_cap_for_(param) -#define _Pre_opt_cap_for_(param) -#define _Pre_cap_x_(size) -#define _Pre_opt_cap_x_(size) -#define _Pre_bytecap_x_(size) -#define _Pre_opt_bytecap_x_(size) -#define _Pre_ptrdiff_cap_(ptr) -#define _Pre_opt_ptrdiff_cap_(ptr) -#define _Pre_z_cap_(size) -#define _Pre_opt_z_cap_(size) -#define _Pre_z_bytecap_(size) -#define _Pre_opt_z_bytecap_(size) -#define _Pre_z_cap_c_(size) -#define _Pre_opt_z_cap_c_(size) -#define _Pre_z_bytecap_c_(size) -#define _Pre_opt_z_bytecap_c_(size) -#define _Pre_z_cap_x_(size) -#define _Pre_opt_z_cap_x_(size) -#define _Pre_z_bytecap_x_(size) -#define _Pre_opt_z_bytecap_x_(size) -#define _Pre_valid_cap_(size) -#define _Pre_opt_valid_cap_(size) -#define _Pre_valid_bytecap_(size) -#define _Pre_opt_valid_bytecap_(size) -#define _Pre_valid_cap_c_(size) -#define _Pre_opt_valid_cap_c_(size) -#define _Pre_valid_bytecap_c_(size) -#define _Pre_opt_valid_bytecap_c_(size) -#define _Pre_valid_cap_x_(size) -#define _Pre_opt_valid_cap_x_(size) -#define _Pre_valid_bytecap_x_(size) -#define _Pre_opt_valid_bytecap_x_(size) -#define _Pre_count_(size) -#define _Pre_opt_count_(size) -#define _Pre_bytecount_(size) -#define _Pre_opt_bytecount_(size) -#define _Pre_count_c_(size) -#define _Pre_opt_count_c_(size) -#define _Pre_bytecount_c_(size) -#define _Pre_opt_bytecount_c_(size) -#define _Pre_count_x_(size) -#define _Pre_opt_count_x_(size) -#define _Pre_bytecount_x_(size) -#define _Pre_opt_bytecount_x_(size) -#define _Pre_ptrdiff_count_(ptr) -#define _Pre_opt_ptrdiff_count_(ptr) -#define _Pre_valid_ -#define _Pre_opt_valid_ -#define _Pre_invalid_ -#define _Pre_notnull_ -#define _Pre_maybenull_ -#define _Pre_null_ -#define _Pre_readonly_ -#define _Pre_writeonly_ -#define _Post_z_ -#define _Post_maybez_ -#define _Post_cap_(size) -#define _Post_bytecap_(size) -#define _Post_count_(size) -#define _Post_bytecount_(size) -#define _Post_count_c_(size) -#define _Post_bytecount_c_(size) -#define _Post_count_x_(size) -#define _Post_bytecount_x_(size) -#define _Post_z_count_(size) -#define _Post_z_bytecount_(size) -#define _Post_z_count_c_(size) -#define _Post_z_bytecount_c_(size) -#define _Post_z_count_x_(size) -#define _Post_z_bytecount_x_(size) -#define _Post_ptr_invalid_ -#define _Post_valid_ -#define _Post_invalid_ -#define _Post_notnull_ -#define _Post_null_ -#define _Post_maybenull_ -#define _Ret_z_ -#define _Ret_maybenull_z_ -#define _Ret_notnull_ -#define _Ret_maybenull_ -#define _Ret_null_ -#define _Ret_writes_(size) -#define _Ret_writes_z_(size) -#define _Ret_writes_bytes_(size) -#define _Ret_writes_to_(size,count) -#define _Ret_writes_bytes_to_(size,count) -#define _Ret_writes_maybenull_(size) -#define _Ret_writes_maybenull_z_(size) -#define _Ret_writes_bytes_maybenull_(size) -#define _Ret_writes_to_maybenull_(size,count) -#define _Ret_writes_bytes_to_maybenull_(size,count) -#define _Ret_opt_z_ -#define _Ret_cap_(size) -#define _Ret_opt_cap_(size) -#define _Ret_bytecap_(size) -#define _Ret_opt_bytecap_(size) -#define _Ret_cap_c_(size) -#define _Ret_opt_cap_c_(size) -#define _Ret_bytecap_c_(size) -#define _Ret_opt_bytecap_c_(size) -#define _Ret_cap_x_(size) -#define _Ret_opt_cap_x_(size) -#define _Ret_bytecap_x_(size) -#define _Ret_opt_bytecap_x_(size) -#define _Ret_z_cap_(size) -#define _Ret_opt_z_cap_(size) -#define _Ret_z_bytecap_(size) -#define _Ret_opt_z_bytecap_(size) -#define _Ret_count_(size) -#define _Ret_opt_count_(size) -#define _Ret_bytecount_(size) -#define _Ret_opt_bytecount_(size) -#define _Ret_count_c_(size) -#define _Ret_opt_count_c_(size) -#define _Ret_bytecount_c_(size) -#define _Ret_opt_bytecount_c_(size) -#define _Ret_count_x_(size) -#define _Ret_opt_count_x_(size) -#define _Ret_bytecount_x_(size) -#define _Ret_opt_bytecount_x_(size) -#define _Ret_z_count_(size) -#define _Ret_opt_z_count_(size) -#define _Ret_z_bytecount_(size) -#define _Ret_opt_z_bytecount_(size) -#define _Ret_valid_ -#define _Ret_opt_valid_ -#define _Deref_pre_z_ -#define _Deref_pre_opt_z_ -#define _Deref_pre_cap_(size) -#define _Deref_pre_opt_cap_(size) -#define _Deref_pre_bytecap_(size) -#define _Deref_pre_opt_bytecap_(size) -#define _Deref_pre_cap_c_(size) -#define _Deref_pre_opt_cap_c_(size) -#define _Deref_pre_bytecap_c_(size) -#define _Deref_pre_opt_bytecap_c_(size) -#define _Deref_pre_cap_x_(size) -#define _Deref_pre_opt_cap_x_(size) -#define _Deref_pre_bytecap_x_(size) -#define _Deref_pre_opt_bytecap_x_(size) -#define _Deref_pre_z_cap_(size) -#define _Deref_pre_opt_z_cap_(size) -#define _Deref_pre_z_bytecap_(size) -#define _Deref_pre_opt_z_bytecap_(size) -#define _Deref_pre_z_cap_c_(size) -#define _Deref_pre_opt_z_cap_c_(size) -#define _Deref_pre_z_bytecap_c_(size) -#define _Deref_pre_opt_z_bytecap_c_(size) -#define _Deref_pre_z_cap_x_(size) -#define _Deref_pre_opt_z_cap_x_(size) -#define _Deref_pre_z_bytecap_x_(size) -#define _Deref_pre_opt_z_bytecap_x_(size) -#define _Deref_pre_valid_cap_(size) -#define _Deref_pre_opt_valid_cap_(size) -#define _Deref_pre_valid_bytecap_(size) -#define _Deref_pre_opt_valid_bytecap_(size) -#define _Deref_pre_valid_cap_c_(size) -#define _Deref_pre_opt_valid_cap_c_(size) -#define _Deref_pre_valid_bytecap_c_(size) -#define _Deref_pre_opt_valid_bytecap_c_(size) -#define _Deref_pre_valid_cap_x_(size) -#define _Deref_pre_opt_valid_cap_x_(size) -#define _Deref_pre_valid_bytecap_x_(size) -#define _Deref_pre_opt_valid_bytecap_x_(size) -#define _Deref_pre_count_(size) -#define _Deref_pre_opt_count_(size) -#define _Deref_pre_bytecount_(size) -#define _Deref_pre_opt_bytecount_(size) -#define _Deref_pre_count_c_(size) -#define _Deref_pre_opt_count_c_(size) -#define _Deref_pre_bytecount_c_(size) -#define _Deref_pre_opt_bytecount_c_(size) -#define _Deref_pre_count_x_(size) -#define _Deref_pre_opt_count_x_(size) -#define _Deref_pre_bytecount_x_(size) -#define _Deref_pre_opt_bytecount_x_(size) -#define _Deref_pre_valid_ -#define _Deref_pre_opt_valid_ -#define _Deref_pre_invalid_ -#define _Deref_pre_notnull_ -#define _Deref_pre_maybenull_ -#define _Deref_pre_null_ -#define _Deref_pre_readonly_ -#define _Deref_pre_writeonly_ -#define _Deref_post_z_ -#define _Deref_post_opt_z_ -#define _Deref_post_cap_(size) -#define _Deref_post_opt_cap_(size) -#define _Deref_post_bytecap_(size) -#define _Deref_post_opt_bytecap_(size) -#define _Deref_post_cap_c_(size) -#define _Deref_post_opt_cap_c_(size) -#define _Deref_post_bytecap_c_(size) -#define _Deref_post_opt_bytecap_c_(size) -#define _Deref_post_cap_x_(size) -#define _Deref_post_opt_cap_x_(size) -#define _Deref_post_bytecap_x_(size) -#define _Deref_post_opt_bytecap_x_(size) -#define _Deref_post_z_cap_(size) -#define _Deref_post_opt_z_cap_(size) -#define _Deref_post_z_bytecap_(size) -#define _Deref_post_opt_z_bytecap_(size) -#define _Deref_post_z_cap_c_(size) -#define _Deref_post_opt_z_cap_c_(size) -#define _Deref_post_z_bytecap_c_(size) -#define _Deref_post_opt_z_bytecap_c_(size) -#define _Deref_post_z_cap_x_(size) -#define _Deref_post_opt_z_cap_x_(size) -#define _Deref_post_z_bytecap_x_(size) -#define _Deref_post_opt_z_bytecap_x_(size) -#define _Deref_post_valid_cap_(size) -#define _Deref_post_opt_valid_cap_(size) -#define _Deref_post_valid_bytecap_(size) -#define _Deref_post_opt_valid_bytecap_(size) -#define _Deref_post_valid_cap_c_(size) -#define _Deref_post_opt_valid_cap_c_(size) -#define _Deref_post_valid_bytecap_c_(size) -#define _Deref_post_opt_valid_bytecap_c_(size) -#define _Deref_post_valid_cap_x_(size) -#define _Deref_post_opt_valid_cap_x_(size) -#define _Deref_post_valid_bytecap_x_(size) -#define _Deref_post_opt_valid_bytecap_x_(size) -#define _Deref_post_count_(size) -#define _Deref_post_opt_count_(size) -#define _Deref_post_bytecount_(size) -#define _Deref_post_opt_bytecount_(size) -#define _Deref_post_count_c_(size) -#define _Deref_post_opt_count_c_(size) -#define _Deref_post_bytecount_c_(size) -#define _Deref_post_opt_bytecount_c_(size) -#define _Deref_post_count_x_(size) -#define _Deref_post_opt_count_x_(size) -#define _Deref_post_bytecount_x_(size) -#define _Deref_post_opt_bytecount_x_(size) -#define _Deref_post_valid_ -#define _Deref_post_opt_valid_ -#define _Deref_post_notnull_ -#define _Deref_post_maybenull_ -#define _Deref_post_null_ -#define _Deref_ret_z_ -#define _Deref_ret_opt_z_ -#define _Deref2_pre_readonly_ -#define _Prepost_z_ -#define _Prepost_opt_z_ -#define _Prepost_count_(size) -#define _Prepost_opt_count_(size) -#define _Prepost_bytecount_(size) -#define _Prepost_opt_bytecount_(size) -#define _Prepost_count_c_(size) -#define _Prepost_opt_count_c_(size) -#define _Prepost_bytecount_c_(size) -#define _Prepost_opt_bytecount_c_(size) -#define _Prepost_count_x_(size) -#define _Prepost_opt_count_x_(size) -#define _Prepost_bytecount_x_(size) -#define _Prepost_opt_bytecount_x_(size) -#define _Prepost_valid_ -#define _Prepost_opt_valid_ -#define _Deref_prepost_z_ -#define _Deref_prepost_opt_z_ -#define _Deref_prepost_cap_(size) -#define _Deref_prepost_opt_cap_(size) -#define _Deref_prepost_bytecap_(size) -#define _Deref_prepost_opt_bytecap_(size) -#define _Deref_prepost_cap_x_(size) -#define _Deref_prepost_opt_cap_x_(size) -#define _Deref_prepost_bytecap_x_(size) -#define _Deref_prepost_opt_bytecap_x_(size) -#define _Deref_prepost_z_cap_(size) -#define _Deref_prepost_opt_z_cap_(size) -#define _Deref_prepost_z_bytecap_(size) -#define _Deref_prepost_opt_z_bytecap_(size) -#define _Deref_prepost_valid_cap_(size) -#define _Deref_prepost_opt_valid_cap_(size) -#define _Deref_prepost_valid_bytecap_(size) -#define _Deref_prepost_opt_valid_bytecap_(size) -#define _Deref_prepost_valid_cap_x_(size) -#define _Deref_prepost_opt_valid_cap_x_(size) -#define _Deref_prepost_valid_bytecap_x_(size) -#define _Deref_prepost_opt_valid_bytecap_x_(size) -#define _Deref_prepost_count_(size) -#define _Deref_prepost_opt_count_(size) -#define _Deref_prepost_bytecount_(size) -#define _Deref_prepost_opt_bytecount_(size) -#define _Deref_prepost_count_x_(size) -#define _Deref_prepost_opt_count_x_(size) -#define _Deref_prepost_bytecount_x_(size) -#define _Deref_prepost_opt_bytecount_x_(size) -#define _Deref_prepost_valid_ -#define _Deref_prepost_opt_valid_ -#define _Deref_out_z_cap_c_(size) -#define _Deref_inout_z_cap_c_(size) -#define _Deref_out_z_bytecap_c_(size) -#define _Deref_inout_z_bytecap_c_(size) -#define _Deref_inout_z_ -#define __ecount(size) -#define __bcount(size) -#define __field_bcount(size) -#define __field_ecount(size) -#define __struct_bcount(Size) -#define __in -#define __in_ecount(size) -#define __in_bcount(size) -#define __in_z -#define __in_ecount_z(size) -#define __in_bcount_z(size) -#define __in_nz -#define __in_ecount_nz(size) -#define __in_bcount_nz(size) -#define __out -#define __out_ecount(size) -#define __out_bcount(size) -#define __out_ecount_part(size,length) -#define __out_bcount_part(size,length) -#define __out_ecount_full(size) -#define __out_bcount_full(size) -#define __out_z -#define __out_z_opt -#define __out_ecount_z(size) -#define __out_bcount_z(size) -#define __out_ecount_part_z(size,length) -#define __out_bcount_part_z(size,length) -#define __out_ecount_full_z(size) -#define __out_bcount_full_z(size) -#define __out_nz -#define __out_nz_opt -#define __out_ecount_nz(size) -#define __out_bcount_nz(size) -#define __inout -#define __inout_ecount(size) -#define __inout_bcount(size) -#define __inout_ecount_part(size,length) -#define __inout_bcount_part(size,length) -#define __inout_ecount_full(size) -#define __inout_bcount_full(size) -#define __inout_z -#define __inout_ecount_z(size) -#define __inout_bcount_z(size) -#define __inout_nz -#define __inout_ecount_nz(size) -#define __inout_bcount_nz(size) -#define __ecount_opt(size) -#define __bcount_opt(size) -#define __in_opt -#define __in_ecount_opt(size) -#define __in_bcount_opt(size) -#define __in_z_opt -#define __in_ecount_z_opt(size) -#define __in_bcount_z_opt(size) -#define __in_nz_opt -#define __in_ecount_nz_opt(size) -#define __in_bcount_nz_opt(size) -#define __out_opt -#define __out_ecount_opt(size) -#define __out_bcount_opt(size) -#define __out_ecount_part_opt(size,length) -#define __out_bcount_part_opt(size,length) -#define __out_ecount_full_opt(size) -#define __out_bcount_full_opt(size) -#define __out_ecount_z_opt(size) -#define __out_bcount_z_opt(size) -#define __out_ecount_part_z_opt(size,length) -#define __out_bcount_part_z_opt(size,length) -#define __out_ecount_full_z_opt(size) -#define __out_bcount_full_z_opt(size) -#define __out_ecount_nz_opt(size) -#define __out_bcount_nz_opt(size) -#define __inout_opt -#define __inout_ecount_opt(size) -#define __inout_bcount_opt(size) -#define __inout_ecount_part_opt(size,length) -#define __inout_bcount_part_opt(size,length) -#define __inout_ecount_full_opt(size) -#define __inout_bcount_full_opt(size) -#define __inout_z_opt -#define __inout_ecount_z_opt(size) -#define __inout_ecount_z_opt(size) -#define __inout_bcount_z_opt(size) -#define __inout_nz_opt -#define __inout_ecount_nz_opt(size) -#define __inout_bcount_nz_opt(size) -#define __deref_ecount(size) -#define __deref_bcount(size) -#define __deref_out -#define __deref_out_ecount(size) -#define __deref_out_bcount(size) -#define __deref_out_ecount_part(size,length) -#define __deref_out_bcount_part(size,length) -#define __deref_out_ecount_full(size) -#define __deref_out_bcount_full(size) -#define __deref_out_z -#define __deref_out_ecount_z(size) -#define __deref_out_bcount_z(size) -#define __deref_out_nz -#define __deref_out_ecount_nz(size) -#define __deref_out_bcount_nz(size) -#define __deref_inout -#define __deref_inout_z -#define __deref_inout_ecount(size) -#define __deref_inout_bcount(size) -#define __deref_inout_ecount_part(size,length) -#define __deref_inout_bcount_part(size,length) -#define __deref_inout_ecount_full(size) -#define __deref_inout_bcount_full(size) -#define __deref_inout_ecount_z(size) -#define __deref_inout_bcount_z(size) -#define __deref_inout_nz -#define __deref_inout_ecount_nz(size) -#define __deref_inout_bcount_nz(size) -#define __deref_ecount_opt(size) -#define __deref_bcount_opt(size) -#define __deref_out_opt -#define __deref_out_ecount_opt(size) -#define __deref_out_bcount_opt(size) -#define __deref_out_ecount_part_opt(size,length) -#define __deref_out_bcount_part_opt(size,length) -#define __deref_out_ecount_full_opt(size) -#define __deref_out_bcount_full_opt(size) -#define __deref_out_z_opt -#define __deref_out_ecount_z_opt(size) -#define __deref_out_bcount_z_opt(size) -#define __deref_out_nz_opt -#define __deref_out_ecount_nz_opt(size) -#define __deref_out_bcount_nz_opt(size) -#define __deref_inout_opt -#define __deref_inout_ecount_opt(size) -#define __deref_inout_bcount_opt(size) -#define __deref_inout_ecount_part_opt(size,length) -#define __deref_inout_bcount_part_opt(size,length) -#define __deref_inout_ecount_full_opt(size) -#define __deref_inout_bcount_full_opt(size) -#define __deref_inout_z_opt -#define __deref_inout_ecount_z_opt(size) -#define __deref_inout_bcount_z_opt(size) -#define __deref_inout_nz_opt -#define __deref_inout_ecount_nz_opt(size) -#define __deref_inout_bcount_nz_opt(size) -#define __deref_opt_ecount(size) -#define __deref_opt_bcount(size) -#define __deref_opt_out -#define __deref_opt_out_z -#define __deref_opt_out_ecount(size) -#define __deref_opt_out_bcount(size) -#define __deref_opt_out_ecount_part(size,length) -#define __deref_opt_out_bcount_part(size,length) -#define __deref_opt_out_ecount_full(size) -#define __deref_opt_out_bcount_full(size) -#define __deref_opt_inout -#define __deref_opt_inout_ecount(size) -#define __deref_opt_inout_bcount(size) -#define __deref_opt_inout_ecount_part(size,length) -#define __deref_opt_inout_bcount_part(size,length) -#define __deref_opt_inout_ecount_full(size) -#define __deref_opt_inout_bcount_full(size) -#define __deref_opt_inout_z -#define __deref_opt_inout_ecount_z(size) -#define __deref_opt_inout_bcount_z(size) -#define __deref_opt_inout_nz -#define __deref_opt_inout_ecount_nz(size) -#define __deref_opt_inout_bcount_nz(size) -#define __deref_opt_ecount_opt(size) -#define __deref_opt_bcount_opt(size) -#define __deref_opt_out_opt -#define __deref_opt_out_ecount_opt(size) -#define __deref_opt_out_bcount_opt(size) -#define __deref_opt_out_ecount_part_opt(size,length) -#define __deref_opt_out_bcount_part_opt(size,length) -#define __deref_opt_out_ecount_full_opt(size) -#define __deref_opt_out_bcount_full_opt(size) -#define __deref_opt_out_z_opt -#define __deref_opt_out_ecount_z_opt(size) -#define __deref_opt_out_bcount_z_opt(size) -#define __deref_opt_out_nz_opt -#define __deref_opt_out_ecount_nz_opt(size) -#define __deref_opt_out_bcount_nz_opt(size) -#define __deref_opt_inout_opt -#define __deref_opt_inout_ecount_opt(size) -#define __deref_opt_inout_bcount_opt(size) -#define __deref_opt_inout_ecount_part_opt(size,length) -#define __deref_opt_inout_bcount_part_opt(size,length) -#define __deref_opt_inout_ecount_full_opt(size) -#define __deref_opt_inout_bcount_full_opt(size) -#define __deref_opt_inout_z_opt -#define __deref_opt_inout_ecount_z_opt(size) -#define __deref_opt_inout_bcount_z_opt(size) -#define __deref_opt_inout_nz_opt -#define __deref_opt_inout_ecount_nz_opt(size) -#define __deref_opt_inout_bcount_nz_opt(size) -#define __success(expr) -#define __nullterminated -#define __nullnullterminated -#define __reserved -#define __checkReturn -#define __typefix(ctype) -#define __override -#define __callback -#define __format_string -#define __blocksOn(resource) -#define __control_entrypoint(category) -#define __data_entrypoint(category) -#define __useHeader -#define __on_failure(annotes) -#define __fallthrough -#define _Check_return_opt_ -#define _Check_return_wat_ - -#define __ANNOTATION(fun) -#define __inner_fallthrough -#define __inner_fallthrough_dec -#define __PRIMOP(type, fun) -#define __QUALIFIER(fun) -#define _In_function_class_(x) -#define _Called_from_function_class_(x) -#define _Function_class_(x) -#define _Enum_is_bitflag_ -#define _Strict_type_match_ -#define _Maybe_raises_SEH_exception_ -#define _Raises_SEH_exception_ -#define __nothrow -#define _Struct_size_bytes_(size) -#define _SAL1_Source_(Name, args, annotes) -#define _SAL1_1_Source_(Name, args, annotes) -#define _SAL1_2_Source_(Name, args, annotes) -#define _SAL2_Source_(Name, args, annotes) -#define _SAL_L_Source_(Name, args, annotes) -#define _SA_annotes0(n) -#define _SA_annotes1(n,pp1) -#define _SA_annotes2(n,pp1,pp2) -#define _SA_annotes3(n,pp1,pp2,pp3) -#define _Translates_Win32_to_HRESULT_(errorCode) -#define __RETURN_POLICY_SAME(_FunctionCall) -#define __RETURN_POLICY_DST(_FunctionCall) -#define __RETURN_POLICY_VOID(_FunctionCall) -#define __EMPTY_DECLSPEC -#define __drv_allocatesMem(kind) -#define __drv_freesMem(kind) -#define __drv_preferredFunction(func,why) -#define _Analysis_noreturn_ -#define _Guarded_by_(lock) -#define _Write_guarded_by_(lock) -#define _Interlocked_ -#define _Requires_lock_held_(lock) -#define _Requires_exclusive_lock_held_(lock) -#define _Requires_shared_lock_held_(lock) -#define _Requires_lock_not_held_(lock) -#define _Requires_no_locks_held_ -#define _Acquires_lock_(lock) -#define _Acquires_exclusive_lock_(lock) -#define _Acquires_shared_lock_(lock) -#define _Releases_lock_(lock) -#define _Releases_exclusive_lock_(lock) -#define _Releases_shared_lock_(lock) -#define _Acquires_nonreentrant_lock_(lock) -#define _Releases_nonreentrant_lock_(lock) -#define _Post_same_lock_(lock1,lock2) -#define _Internal_set_lock_count_(lock, count) -#define _Create_lock_level_(level) -#define _Has_lock_level_(level) -#define _Internal_lock_level_order_(a,b) -#define _Csalcat1_(x,y) -#define _Csalcat2_(x,y) -#define _Lock_level_order_(a,b) -#define _No_competing_thread_ -#define _Analysis_assume_lock_acquired_(lock) -#define _Analysis_assume_lock_released_(lock) -#define _Analysis_assume_lock_held_(lock) -#define _Analysis_assume_lock_not_held_(lock) -#define _Analysis_assume_same_lock_(lock1, lock2) -#define _Function_ignore_lock_checking_(lock) -#define _Analysis_suppress_lock_checking_(lock) -#define _Benign_race_begin_ __pragma(warning(push)) -#define _Benign_race_end_ __pragma(warning(pop)) -#define _No_competing_thread_begin_ -#define _No_competing_thread_end_ -#define _Has_lock_kind_(kind) -#define _Analysis_assume_ -#define _Analysis_assume_nullterminated_(s) -#define _Analysis_mode_(m) -#define _Function_class_(n) -#define _Interlocked_operand_ -#define _IRQL_raises_(i) -#define _IRQL_requires_(i) -#define _IRQL_requires_max_(i) -#define _IRQL_requires_min_(i) -#define _IRQL_saves_ -#define _IRQL_saves_global_(k,s) -#define _IRQL_restores_ -#define _IRQL_restores_global_(k,s) -#define _IRQL_always_function_min_(i) -#define _IRQL_always_function_max_(i) -#define _IRQL_requires_same_ -#define _IRQL_uses_cancel_ -#define _IRQL_is_cancel_ -#define _Kernel_float_saved_ -#define _Kernel_float_restored_ -#define _Kernel_float_used_ -#define _Kernel_acquires_resource_(k) -#define _Kernel_releases_resource_(k) -#define _Kernel_requires_resource_held_(k) -#define _Kernel_requires_resource_not_held_(k) -#define _Kernel_clear_do_init_(yn) -#define _Kernel_IoGetDmaAdapter_ -#define _Outref_result_buffer_(s) -#define _Outref_result_bytebuffer_(s) -#define _Outref_result_buffer_to_(s,c) -#define _Outref_result_bytebuffer_to_(s,c) -#define _Outref_result_buffer_all_(s) -#define _Outref_result_bytebuffer_all_(s) -#define _Outref_result_buffer_maybenull_(s) -#define _Outref_result_bytebuffer_maybenull_(s) -#define _Outref_result_buffer_to_maybenull_(s,c) -#define _Outref_result_bytebuffer_to_maybenull_(s,c) -#define _Outref_result_buffer_all_maybenull_(s) -#define _Outref_result_bytebuffer_all_maybenull_(s) -#define _In_defensive_(a) -#define _Out_defensive_(a) -#define _Inout_defensive_(a) -#define _Acquires_nonreentrant_lock_(e) -#define _Releases_nonreentrant_lock_(e) -#define _Function_ignore_lock_checking_(e) -#define _Analysis_suppress_lock_checking_(e) -#define _Pre_readable_size_(s) -#define _Pre_writable_size_(s) -#define _Pre_readable_byte_size_(s) -#define _Pre_writable_byte_size_(s) -#define _Post_readable_size_(s) -#define _Post_writable_size_(s) -#define _Post_readable_byte_size_(s) -#define _Post_writable_byte_size_(s) -#define _Internal_create_CSAL_identifier_(id) -#define _Reallocation_function_(after, before, size) -#define _Ret_reallocated_bytes_(before, size) - -// Code Analysis -#define SA( id ) id -#define REPEATABLE [repeatable] - -// BOOST -#define BOOST_TRY { try -#define BOOST_CATCH(x) catch(x) -#define BOOST_RETHROW throw; -#define BOOST_CATCH_END } - -// C++ Unit Test Framework -#define TEST_CLASS(className) class className : public ::Microsoft::VisualStudio::CppUnitTestFramework::TestClass -#define TEST_METHOD(methodName) void methodName() -#define TEST_MODULE_INITIALIZE(methodName) void __stdcall methodName() -#define TEST_MODULE_CLEANUP(methodName) void __stdcall methodName() -#define TEST_CLASS_INITIALIZE(methodName) static void __stdcall methodName() -#define TEST_CLASS_CLEANUP(methodName) static void __stdcall methodName() -#define TEST_METHOD_INITIALIZE(methodName) void methodName() -#define TEST_METHOD_CLEANUP(methodName) void methodName() -#define BEGIN_TEST_MODULE_ATTRIBUTE() -#define TEST_MODULE_ATTRIBUTE(attributeName, attributeValue) -#define END_TEST_MODULE_ATTRIBUTE() -#define BEGIN_TEST_CLASS_ATTRIBUTE() -#define TEST_CLASS_ATTRIBUTE(attributeName, attributeValue) -#define END_TEST_CLASS_ATTRIBUTE() -#define BEGIN_TEST_METHOD_ATTRIBUTE(methodName) -#define TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) -#define END_TEST_METHOD_ATTRIBUTE() - -// AMP Library -#define __GPU -#define __CPU_ONLY -#define __GPU_ONLY -#define CPP_AMP_VERIFY_RANK(_Rank, _Type_name) -#define __DEPRECATED_ARRAY_VECTOR_CONSTRUCTOR -#define __DEPRECATED_ARRAY_VECTOR_COPY_FUNCTION -#define _AMPIMP - -// WTL Map -#define BEGIN_DDX_MAP(thisClass) @< -#define DDX_TEXT(nID, var) @= -#define DDX_TEXT_LEN(nID, var, len) @= -#define DDX_INT(nID, var) @= -#define DDX_INT_RANGE(nID, var, min, max) @= -#define DDX_UINT(nID, var) @= -#define DDX_UINT_RANGE(nID, var, min, max) @= -#define DDX_FLOAT(nID, var) @= -#define DDX_FLOAT_RANGE(nID, var, min, max) @= -#define DDX_FLOAT_P(nID, var, precision) @= -#define DDX_FLOAT_P_RANGE(nID, var, min, max, precision) @= -#define DDX_CONTROL(nID, obj) @= -#define DDX_CONTROL_HANDLE(nID, obj) @= -#define DDX_CHECK(nID, var) @= -#define DDX_RADIO(nID, var) @= -#define DDX_INDEX(CtrlClass, nID, var) @= -#define DDX_TAB_INDEX(nID, var) @= -#define DDX_COMBO_INDEX(nID, var) @= -#define DDX_LISTBOX_INDEX(nID, var) @= -#define DDX_LISTVIEW_INDEX(nID, var) @= -#define END_DDX_MAP() @> -#define BEGIN_CONTROLS_MAP() @< -#define CONTROL_LTEXT(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_CTEXT(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_RTEXT(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_PUSHBUTTON(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_DEFPUSHBUTTON(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_PUSHBOX(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_STATE3(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_AUTO3STATE(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_CHECKBOX(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_AUTOCHECKBOX(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_RADIOBUTTON(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_AUTORADIOBUTTON(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_COMBOBOX(id, x, y, width, height, style, exStyle) @= -#define CONTROL_EDITTEXT(id, x, y, width, height, style, exStyle) @= -#define CONTROL_GROUPBOX(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_LISTBOX(id, x, y, width, height, style, exStyle) @= -#define CONTROL_SCROLLBAR(id, x, y, width, height, style, exStyle) @= -#define CONTROL_ICON(text, id, x, y, width, height, style, exStyle) @= -#define CONTROL_CONTROL(text, id, className, style, x, y, width, height, exStyle) @= -#define END_CONTROLS_MAP() @> -#define BEGIN_UPDATE_UI_MAP(thisClass) @< -#define UPDATE_ELEMENT(nID, wType) @= -#define END_UPDATE_UI_MAP() @> -#define BEGIN_DLGRESIZE_MAP(thisClass) @< -#define DLGRESIZE_CONTROL(id, flags) @= -#define BEGIN_DLGRESIZE_GROUP() @= -#define END_DLGRESIZE_GROUP() @= -#define END_DLGRESIZE_MAP() @> -#define BEGIN_RIBBON_CONTROL_MAP(theClass) @< -#define RIBBON_CONTROL(member) @= -#define RIBBON_GALLERY_CONTROL_HANDLER(id, func) @= -#define RIBBON_COMBO_CONTROL_HANDLER(id, func) @= -#define RIBBON_FONT_CONTROL_HANDLER(id, func) @= -#define RIBBON_COLOR_CONTROL_HANDLER(id, func) @= -#define RIBBON_SPINNER_CONTROL_HANDLER(id, func) @= -#define RIBBON_FLOATSPINNER_CONTROL_HANDLER(id, func) @= -#define END_RIBBON_CONTROL_MAP() @> -#define BEGIN_MSG_MAP_EX(theClass) <@ -#define MSG_WM_CREATE(func) @= -#define MSG_WM_INITDIALOG(func) @= -#define MSG_WM_COPYDATA(func) @= -#define MSG_WM_DESTROY(func) @= -#define MSG_WM_MOVE(func) @= -#define MSG_WM_SIZE(func) @= -#define MSG_WM_ACTIVATE(func) @= -#define MSG_WM_SETFOCUS(func) @= -#define MSG_WM_KILLFOCUS(func) @= -#define MSG_WM_ENABLE(func) @= -#define MSG_WM_PAINT(func) @= -#define MSG_WM_CLOSE(func) @= -#define MSG_WM_QUERYENDSESSION(func) @= -#define MSG_WM_QUERYOPEN(func) @= -#define MSG_WM_ERASEBKGND(func) @= -#define MSG_WM_SYSCOLORCHANGE(func) @= -#define MSG_WM_ENDSESSION(func) @= -#define MSG_WM_SHOWWINDOW(func) @= -#define MSG_WM_CTLCOLOREDIT(func) @= -#define MSG_WM_CTLCOLORLISTBOX(func) @= -#define MSG_WM_CTLCOLORBTN(func) @= -#define MSG_WM_CTLCOLORDLG(func) @= -#define MSG_WM_CTLCOLORSCROLLBAR(func) @= -#define MSG_WM_CTLCOLORSTATIC(func) @= -#define MSG_WM_SETTINGCHANGE(func) @= -#define MSG_WM_DEVMODECHANGE(func) @= -#define MSG_WM_ACTIVATEAPP(func) @= -#define MSG_WM_FONTCHANGE(func) @= -#define MSG_WM_TIMECHANGE(func) @= -#define MSG_WM_CANCELMODE(func) @= -#define MSG_WM_SETCURSOR(func) @= -#define MSG_WM_MOUSEACTIVATE(func) @= -#define MSG_WM_CHILDACTIVATE(func) @= -#define MSG_WM_GETMINMAXINFO(func) @= -#define MSG_WM_ICONERASEBKGND(func) @= -#define MSG_WM_SPOOLERSTATUS(func) @= -#define MSG_WM_DRAWITEM(func) @= -#define MSG_WM_MEASUREITEM(func) @= -#define MSG_WM_DELETEITEM(func) @= -#define MSG_WM_CHARTOITEM(func) @= -#define MSG_WM_VKEYTOITEM(func) @= -#define MSG_WM_QUERYDRAGICON(func) @= -#define MSG_WM_COMPAREITEM(func) @= -#define MSG_WM_COMPACTING(func) @= -#define MSG_WM_NCCREATE(func) @= -#define MSG_WM_NCDESTROY(func) @= -#define MSG_WM_NCCALCSIZE(func) @= -#define MSG_WM_NCHITTEST(func) @= -#define MSG_WM_NCPAINT(func) @= -#define MSG_WM_NCACTIVATE(func) @= -#define MSG_WM_GETDLGCODE(func) @= -#define MSG_WM_NCMOUSEMOVE(func) @= -#define MSG_WM_NCLBUTTONDOWN(func) @= -#define MSG_WM_NCLBUTTONUP(func) @= -#define MSG_WM_NCLBUTTONDBLCLK(func) @= -#define MSG_WM_NCRBUTTONDOWN(func) @= -#define MSG_WM_NCRBUTTONUP(func) @= -#define MSG_WM_NCRBUTTONDBLCLK(func) @= -#define MSG_WM_NCMBUTTONDOWN(func) @= -#define MSG_WM_NCMBUTTONUP(func) @= -#define MSG_WM_NCMBUTTONDBLCLK(func) @= -#define MSG_WM_KEYDOWN(func) @= -#define MSG_WM_KEYUP(func) @= -#define MSG_WM_CHAR(func) @= -#define MSG_WM_DEADCHAR(func) @= -#define MSG_WM_SYSKEYDOWN(func) @= -#define MSG_WM_SYSKEYUP(func) @= -#define MSG_WM_SYSCHAR(func) @= -#define MSG_WM_SYSDEADCHAR(func) @= -#define MSG_WM_SYSCOMMAND(func) @= -#define MSG_WM_TCARD(func) @= -#define MSG_WM_TIMER(func) @= -#define MSG_WM_HSCROLL(func) @= -#define MSG_WM_VSCROLL(func) @= -#define MSG_WM_INITMENU(func) @= -#define MSG_WM_INITMENUPOPUP(func) @= -#define MSG_WM_MENUSELECT(func) @= -#define MSG_WM_MENUCHAR(func) @= -#define MSG_WM_NOTIFY(func) @= -#define MSG_WM_ENTERIDLE(func) @= -#define MSG_WM_MOUSEMOVE(func) @= -#define MSG_WM_MOUSEWHEEL(func) @= -#define MSG_WM_LBUTTONDOWN(func) @= -#define MSG_WM_LBUTTONUP(func) @= -#define MSG_WM_LBUTTONDBLCLK(func) @= -#define MSG_WM_RBUTTONDOWN(func) @= -#define MSG_WM_RBUTTONUP(func) @= -#define MSG_WM_RBUTTONDBLCLK(func) @= -#define MSG_WM_MBUTTONDOWN(func) @= -#define MSG_WM_MBUTTONUP(func) @= -#define MSG_WM_MBUTTONDBLCLK(func) @= -#define MSG_WM_PARENTNOTIFY(func) @= -#define MSG_WM_MDIACTIVATE(func) @= -#define MSG_WM_RENDERFORMAT(func) @= -#define MSG_WM_RENDERALLFORMATS(func) @= -#define MSG_WM_DESTROYCLIPBOARD(func) @= -#define MSG_WM_DRAWCLIPBOARD(func) @= -#define MSG_WM_PAINTCLIPBOARD(func) @= -#define MSG_WM_VSCROLLCLIPBOARD(func) @= -#define MSG_WM_CONTEXTMENU(func) @= -#define MSG_WM_SIZECLIPBOARD(func) @= -#define MSG_WM_ASKCBFORMATNAME(func) @= -#define MSG_WM_CHANGECBCHAIN(func) @= -#define MSG_WM_HSCROLLCLIPBOARD(func) @= -#define MSG_WM_QUERYNEWPALETTE(func) @= -#define MSG_WM_PALETTECHANGED(func) @= -#define MSG_WM_PALETTEISCHANGING(func) @= -#define MSG_WM_DROPFILES(func) @= -#define MSG_WM_WINDOWPOSCHANGING(func) @= -#define MSG_WM_WINDOWPOSCHANGED(func) @= -#define MSG_WM_EXITMENULOOP(func) @= -#define MSG_WM_ENTERMENULOOP(func) @= -#define MSG_WM_STYLECHANGED(func) @= -#define MSG_WM_STYLECHANGING(func) @= -#define MSG_WM_SIZING(func) @= -#define MSG_WM_MOVING(func) @= -#define MSG_WM_CAPTURECHANGED(func) @= -#define MSG_WM_DEVICECHANGE(func) @= -#define MSG_WM_COMMAND(func) @= -#define MSG_WM_DISPLAYCHANGE(func) @= -#define MSG_WM_ENTERSIZEMOVE(func) @= -#define MSG_WM_EXITSIZEMOVE(func) @= -#define MSG_WM_GETFONT(func) @= -#define MSG_WM_GETHOTKEY(func) @= -#define MSG_WM_GETICON(func) @= -#define MSG_WM_GETTEXT(func) @= -#define MSG_WM_GETTEXTLENGTH(func) @= -#define MSG_WM_HELP(func) @= -#define MSG_WM_HOTKEY(func) @= -#define MSG_WM_INPUTLANGCHANGE(func) @= -#define MSG_WM_INPUTLANGCHANGEREQUEST(func) @= -#define MSG_WM_NEXTDLGCTL(func) @= -#define MSG_WM_NEXTMENU(func) @= -#define MSG_WM_NOTIFYFORMAT(func) @= -#define MSG_WM_POWERBROADCAST(func) @= -#define MSG_WM_PRINT(func) @= -#define MSG_WM_PRINTCLIENT(func) @= -#define MSG_WM_RASDIALEVENT(func) @= -#define MSG_WM_SETFONT(func) @= -#define MSG_WM_SETHOTKEY(func) @= -#define MSG_WM_SETICON(func) @= -#define MSG_WM_SETREDRAW(func) @= -#define MSG_WM_SETTEXT(func) @= -#define MSG_WM_USERCHANGED(func) @= -#define MSG_WM_MOUSEHOVER(func) @= -#define MSG_WM_MOUSELEAVE(func) @= -#define MSG_WM_MENURBUTTONUP(func) @= -#define MSG_WM_MENUDRAG(func) @= -#define MSG_WM_MENUGETOBJECT(func) @= -#define MSG_WM_UNINITMENUPOPUP(func) @= -#define MSG_WM_MENUCOMMAND(func) @= -#define MSG_WM_APPCOMMAND(func) @= -#define MSG_WM_NCXBUTTONDOWN(func) @= -#define MSG_WM_NCXBUTTONUP(func) @= -#define MSG_WM_NCXBUTTONDBLCLK(func) @= -#define MSG_WM_XBUTTONDOWN(func) @= -#define MSG_WM_XBUTTONUP(func) @= -#define MSG_WM_XBUTTONDBLCLK(func) @= -#define MSG_WM_CHANGEUISTATE(func) @= -#define MSG_WM_UPDATEUISTATE(func) @= -#define MSG_WM_QUERYUISTATE(func) @= -#define MSG_WM_INPUT(func) @= -#define MSG_WM_UNICHAR(func) @= -#define MSG_WM_WTSSESSION_CHANGE(func) @= -#define MSG_WM_THEMECHANGED(func) @= -#define MSG_WM_FORWARDMSG(func) @= -#define MSG_DM_GETDEFID(func) @= -#define MSG_DM_SETDEFID(func) @= -#define MSG_DM_REPOSITION(func) @= -#define MSG_OCM_COMMAND(func) @= -#define MSG_OCM_NOTIFY(func) @= -#define MSG_OCM_PARENTNOTIFY(func) @= -#define MSG_OCM_DRAWITEM(func) @= -#define MSG_OCM_MEASUREITEM(func) @= -#define MSG_OCM_COMPAREITEM(func) @= -#define MSG_OCM_DELETEITEM(func) @= -#define MSG_OCM_VKEYTOITEM(func) @= -#define MSG_OCM_CHARTOITEM(func) @= -#define MSG_OCM_HSCROLL(func) @= -#define MSG_OCM_VSCROLL(func) @= -#define MSG_OCM_CTLCOLOREDIT(func) @= -#define MSG_OCM_CTLCOLORLISTBOX(func) @= -#define MSG_OCM_CTLCOLORBTN(func) @= -#define MSG_OCM_CTLCOLORDLG(func) @= -#define MSG_OCM_CTLCOLORSCROLLBAR(func) @= -#define MSG_OCM_CTLCOLORSTATIC(func) @= -#define MSG_WM_CLEAR(func) @= -#define MSG_WM_COPY(func) @= -#define MSG_WM_CUT(func) @= -#define MSG_WM_PASTE(func) @= -#define MSG_WM_UNDO(func) @= -#define MESSAGE_HANDLER_EX(msg, func) @= -#define MESSAGE_RANGE_HANDLER_EX(msgFirst, msgLast, func) @= -#define COMMAND_HANDLER_EX(id, code, func) @= -#define COMMAND_ID_HANDLER_EX(id, func) @= -#define COMMAND_CODE_HANDLER_EX(code, func) @= -#define NOTIFY_HANDLER_EX(id, cd, func) @= -#define NOTIFY_ID_HANDLER_EX(id, func) @= -#define NOTIFY_CODE_HANDLER_EX(cd, func) @= -#define COMMAND_RANGE_HANDLER_EX(idFirst, idLast, func) @= -#define COMMAND_RANGE_CODE_HANDLER_EX(idFirst, idLast, code, func) @= -#define NOTIFY_RANGE_HANDLER_EX(idFirst, idLast, func) @= -#define NOTIFY_RANGE_CODE_HANDLER_EX(idFirst, idLast, cd, func) @= -#define REFLECTED_COMMAND_HANDLER_EX(id, code, func) @= -#define REFLECTED_COMMAND_ID_HANDLER_EX(id, func) @= -#define REFLECTED_COMMAND_CODE_HANDLER_EX(code, func) @= -#define REFLECTED_NOTIFY_HANDLER_EX(id, cd, func) @= -#define REFLECTED_NOTIFY_ID_HANDLER_EX(id, func) @= -#define REFLECTED_NOTIFY_CODE_HANDLER_EX(cd, func) @= -#define REFLECTED_COMMAND_RANGE_HANDLER_EX(idFirst, idLast, func) @= -#define REFLECTED_COMMAND_RANGE_CODE_HANDLER_EX(idFirst, idLast, code, func) @= -#define REFLECTED_NOTIFY_RANGE_HANDLER_EX(idFirst, idLast, func) @= -#define REFLECTED_NOTIFY_RANGE_CODE_HANDLER_EX(idFirst, idLast, cd, func) @= - -// ATL Server Map -#define BEGIN_HANDLER_MAP() @< -#define HANDLER_ENTRY(handlerName, className) @= -#define HANDLER_ENTRY_EX(handlerName, className, classQName) @= -#define HANDLER_ENTRY_SDL(handlerString, handlerClass, handlerQClass, sdlClassName) @= -#define END_HANDLER_MAP() @> -#define BEGIN_PERFREG_MAP() @< -#define PERFREG_ENTRY(className) @= -#define END_PERFREG_MAP() @> -#define BEGIN_PERF_MAP(AppName) @< -#define PERF_ENTRY_PRAGMA(class) @= -#define END_PERF_MAP() @> -#define BEGIN_COUNTER_MAP(categoryclass) @< -#define CHAIN_PERF_CATEGORY(categoryclass) @= -#define END_COUNTER_MAP() @> -#define BEGIN_REPLACEMENT_METHOD_MAP(className) @< -#define REPLACEMENT_METHOD_ENTRY(methodName, methodFunc) @= -#define REPLACEMENT_METHOD_ENTRY_EX(methodName, methodFunc, paramType, parseFunc) @= -#define REPLACEMENT_METHOD_ENTRY_EX_STR(methodName, methodFunc) @= -#define END_REPLACEMENT_METHOD_MAP() @> -#define BEGIN_ATTR_REPLACEMENT_METHOD_MAP(className) @< -#define END_ATTR_REPLACEMENT_METHOD_MAP() @> -#define EMPTY_XMLTAG_MAP() @< -#define EMPTY_XMLATTR_MAP() @< -#define BEGIN_XMLTAG_MAP() @< -#define XMLTAG_ENTRY_EX(elementName, elementNamespace, elementFunc) @= -#define XMLTAG_ENTRY(elementName, elementFunc) @= -#define END_XMLTAG_MAP() @> -#define BEGIN_XMLATTR_MAP() @< -#define XMLATTR_ENTRY_EX(elementName, elementNamespace, elementFunc) @= -#define XMLATTR_ENTRY_EX2(elementName, elementNamespace, elementFunc, required) @= -#define XMLATTR_ENTRY(elementName, elementFunc) @= -#define XMLATTR_ENTRY2(elementName, elementFunc, required) @= -#define END_XMLATTR_MAP() @> - -// Linux stl -#define _GLIBCXX_VISIBILITY(arg) - -// Mac stl -#define _GLIBCXX_BEGIN_NAMESPACE(std) namespace std { -#define _GLIBCXX_END_NAMESPACE } - -// Linux C lib -#define __THROW -#define __attribute_pure__ -#define __nonnull(arg) -#define __wur -#define __attribute__(arg) - -// Mac C lib -#define __dead2 -#define __pure2 -#define __result_use_check -#define __swift_unavailable(arg) -#define __scanflike(arg) -#define __printflike(arg) -#define __WATCHOS_PROHIBITED -#define __TVOS_PROHIBITED -#define __DARWIN_ALIAS(arg) -#define __DARWIN_ALIAS_C(arg) -#define __DARWIN_ALIAS_STARTING(arg) -#define __DARWIN_EXTSN(arg) -#define __OSX_AVAILABLE_STARTING(arg) -#define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(arg) - -// QT -#define Q_DECL_NOTHROW -#define Q_REQUIRED_RESULT -#define Q_ATTRIBUTE_FORMAT_PRINTF(arg1, arg2) - -// MinGW stl -#define _GLIBCXX_NOEXCEPT - -// Make sure we end with a newline or there will be a warning +// https://go.microsoft.com/fwlink/?linkid=865984 +#pragma inject_default_hints diff --git a/Extension/cpp_snippets.json b/Extension/cpp_snippets.json index b036af953..ccb7dc811 100644 --- a/Extension/cpp_snippets.json +++ b/Extension/cpp_snippets.json @@ -67,7 +67,7 @@ }, "main": { "prefix": "main", - "body": "\nint main(int argc, char const *argv[])\n{\n\t${1:/* code */}\n\treturn 0;\n}\n", + "body": "main(int argc, char const *argv[])\n{\n\t${1:/* code */}\n\treturn 0;\n}\n", "description": "Code snippet for main()", "scope": "source.c, source.objc, source.c++, source.objc++" }, diff --git a/Extension/package-lock.json b/Extension/package-lock.json index 1fcff16b8..d6af6bceb 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -1,6 +1,6 @@ { "name": "cpptools", - "version": "0.17.6", + "version": "0.17.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/Extension/package.json b/Extension/package.json index ac4ce60c1..c650f928c 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "0.17.6", + "version": "0.17.7", "publisher": "ms-vscode", "preview": true, "icon": "LanguageCCPP_color_128x.png", @@ -250,6 +250,16 @@ "description": "Defines the editor behavior for when the Enter key is pressed inside a multiline or single line comment block.", "scope": "resource" }, + "C_Cpp.configurationWarnings": { + "type": "string", + "enum": [ + "Enabled", + "Disabled" + ], + "default": "Enabled", + "description": "Determines whether pop up notifications will be shown when a configuration provider extension is unable to provide a configuration for a source file.", + "scope": "resource" + }, "C_Cpp.default.includePath": { "type": [ "array", @@ -286,6 +296,16 @@ "description": "The value to use in a configuration if \"macFrameworkPath\" is not specified, or the values to insert if \"${default}\" is present in \"macFrameworkPath\".", "scope": "resource" }, + "C_Cpp.default.windowsSdkVersion": { + "type": [ + "string", + "null" + ], + "default": null, + "description": "Version of the Windows SDK include path to use on Windows, e.g. '10.0.17134.0'.", + "pattern": "^\\d{2}\\.\\d{1}\\.\\d{5}\\.\\d{1}$|^8\\.1$", + "scope": "resource" + }, "C_Cpp.default.compileCommands": { "type": [ "string", @@ -415,6 +435,11 @@ "title": "Select a Configuration...", "category": "C/Cpp" }, + { + "command": "C_Cpp.ConfigurationProviderSelect", + "title": "Change Configuration Provider...", + "category": "C/Cpp" + }, { "command": "C_Cpp.ConfigurationEdit", "title": "Edit Configurations...", @@ -1351,7 +1376,7 @@ "runtimeDependencies": [ { "description": "C/C++ language components (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2003936", + "url": "https://go.microsoft.com/fwlink/?linkid=2004596", "platforms": [ "linux" ], @@ -1365,7 +1390,7 @@ }, { "description": "C/C++ language components (Linux / x86)", - "url": "https://go.microsoft.com/fwlink/?linkid=2003833", + "url": "https://go.microsoft.com/fwlink/?linkid=2004498", "platforms": [ "linux" ], @@ -1381,7 +1406,7 @@ }, { "description": "C/C++ language components (OS X)", - "url": "https://go.microsoft.com/fwlink/?linkid=2003834", + "url": "https://go.microsoft.com/fwlink/?linkid=2004597", "platforms": [ "darwin" ], @@ -1392,7 +1417,7 @@ }, { "description": "C/C++ language components (Windows)", - "url": "https://go.microsoft.com/fwlink/?linkid=2003835", + "url": "https://go.microsoft.com/fwlink/?linkid=2004598", "platforms": [ "win32" ], @@ -1513,4 +1538,4 @@ "binaries": [] } ] -} +} \ No newline at end of file diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 79dd6f9ae..c3af87f00 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -30,6 +30,7 @@ import { getTestHook, TestHook } from '../testHook'; import { getCustomConfigProviders, CustomConfigurationProviderCollection, CustomConfigurationProvider1 } from '../LanguageServer/customProviders'; let ui: UI; +const configProviderTimeout: number = 2000; interface NavigationPayload { navigation: string; @@ -119,6 +120,7 @@ const ChangeCompileCommandsNotification: NotificationType = new NotificationType('cpptools/didChangeSelectedSetting'); const IntervalTimerNotification: NotificationType = new NotificationType('cpptools/onIntervalTimer'); const CustomConfigurationNotification: NotificationType = new NotificationType('cpptools/didChangeCustomConfiguration'); +const ClearCustomConfigurationsNotification: NotificationType = new NotificationType('cpptools/clearCustomConfigurations'); // Notifications from the server const ReloadWindowNotification: NotificationType = new NotificationType('cpptools/reloadWindow'); @@ -175,6 +177,7 @@ export interface Client { pauseParsing(): void; resumeParsing(): void; handleConfigurationSelectCommand(): void; + handleConfigurationProviderSelectCommand(): void; handleShowParsingCommands(): void; handleConfigurationEditCommand(): void; handleAddToIncludePathCommand(path: string): void; @@ -354,7 +357,8 @@ class DefaultClient implements Client { preferredPathSeparator: settings.preferredPathSeparator, default: { systemIncludePath: settings.defaultSystemIncludePath - } + }, + vcpkg_root: util.getVcpkgRoot() }, middleware: createProtocolFilter(this, allClients), // Only send messages directed at this client. errorHandler: { @@ -427,17 +431,18 @@ class DefaultClient implements Client { let folderStr: string = (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 1) ? "the '" + this.Name + "'" : "this"; const message: string = `${provider.name} would like to configure IntelliSense for ${folderStr} folder.`; const allow: string = "Allow"; - const notNow: string = "Not Now"; - const dontAskAgain: string = "Don't Ask Again"; - vscode.window.showInformationMessage(message, allow, notNow, dontAskAgain).then(result => { + const dontAllow: string = "Don't Allow"; + const askLater: string = "Ask Me Later"; + vscode.window.showInformationMessage(message, allow, dontAllow, askLater).then(result => { switch (result) { case allow: { - this.configuration.addCustomConfigurationProvider(provider.extensionId).then(() => { + this.configuration.updateCustomConfigurationProvider(provider.extensionId).then(() => { telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": provider.extensionId }); }); + ask.Value = false; break; } - case dontAskAgain: { + case dontAllow: { ask.Value = false; break; } @@ -450,7 +455,7 @@ class DefaultClient implements Client { } else if (selectedProvider === provider.extensionId) { telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": provider.extensionId }); } else if (selectedProvider === provider.name) { - this.configuration.addCustomConfigurationProvider(provider.extensionId); // update the configurationProvider in c_cpp_properties.json + this.configuration.updateCustomConfigurationProvider(provider.extensionId); // v0 -> v1 upgrade. Update the configurationProvider in c_cpp_properties.json } }); } @@ -472,7 +477,7 @@ class DefaultClient implements Client { let task: () => Thenable = () => { return currentProvider.provideConfigurations(documentUris, tokenSource.token); }; - this.queueTaskWithTimeout(task, 1000, tokenSource).then(configs => this.sendCustomConfigurations(configs)); + this.queueTaskWithTimeout(task, configProviderTimeout, tokenSource).then(configs => this.sendCustomConfigurations(configs)); }); } @@ -505,16 +510,36 @@ class DefaultClient implements Client { return Promise.reject(""); }; - return this.queueTaskWithTimeout(provideConfigurationAsync, 1000, tokenSource).then( + return this.queueTaskWithTimeout(provideConfigurationAsync, configProviderTimeout, tokenSource).then( (configs: SourceFileConfigurationItem[]) => { if (configs && configs.length > 0) { this.sendCustomConfigurations(configs); } }, () => { - vscode.window.showInformationMessage(`'${providerName}' is unable to provide IntelliSense configuration information for '${document.uri.fsPath}'. Settings from the '${configName}' configuration will be used instead.`); + let settings: CppSettings = new CppSettings(this.RootUri); + if (settings.configurationWarnings === "Enabled" && !this.isExternalHeader(document) && !vscode.debug.activeDebugSession) { + const dismiss: string = "Dismiss"; + const disable: string = "Disable Warnings"; + vscode.window.showInformationMessage( + `'${providerName}' is unable to provide IntelliSense configuration information for '${document.uri.fsPath}'. ` + + `Settings from the '${configName}' configuration will be used instead.`, + dismiss, + disable).then(response => { + switch (response) { + case disable: { + settings.toggleSetting("configurationWarnings", "Enabled", "Disabled"); + break; + } + } + }); + } }); } + + private isExternalHeader(document: vscode.TextDocument): boolean { + return util.isHeader(document) && !document.uri.toString().startsWith(this.RootUri.toString()); + } public getCustomConfigurationProviderId(): Thenable { return this.queueTask(() => Promise.resolve(this.configuration.CurrentConfiguration.configurationProvider)); @@ -1022,6 +1047,10 @@ class DefaultClient implements Client { this.notifyWhenReady(() => this.languageClient.sendNotification(CustomConfigurationNotification, params)); } + private clearCustomConfigurations(): void { + this.notifyWhenReady(() => this.languageClient.sendNotification(ClearCustomConfigurationsNotification)); + } + /********************************************* * command handlers *********************************************/ @@ -1037,6 +1066,27 @@ class DefaultClient implements Client { }); } + public handleConfigurationProviderSelectCommand(): void { + this.notifyWhenReady(() => { + ui.showConfigurationProviders() + .then(extensionId => { + if (extensionId === undefined) { + // operation was cancelled. + return; + } + this.configuration.updateCustomConfigurationProvider(extensionId) + .then(() => { + if (extensionId) { + this.updateCustomConfigurations(getCustomConfigProviders().get(extensionId)); + telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": extensionId }); + } else { + this.clearCustomConfigurations(); + } + }); + }); + }); + } + public handleShowParsingCommands(): void { this.notifyWhenReady(() => { ui.showParsingCommands() @@ -1134,6 +1184,7 @@ class NullClient implements Client { pauseParsing(): void {} resumeParsing(): void {} handleConfigurationSelectCommand(): void {} + handleConfigurationProviderSelectCommand(): void {} handleShowParsingCommands(): void {} handleConfigurationEditCommand(): void {} handleAddToIncludePathCommand(path: string): void {} diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 0cd2416c3..3e6f3e598 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -48,6 +48,7 @@ export interface Configuration { cppStandard?: string; includePath?: string[]; macFrameworkPath?: string[]; + windowsSdkVersion?: string; defines?: string[]; intelliSenseMode?: string; compileCommands?: string; @@ -68,6 +69,7 @@ export interface CompilerDefaults { cppStandard: string; includes: string[]; frameworks: string[]; + windowsSdkVersion: string; intelliSenseMode: string; } @@ -85,10 +87,11 @@ export class CppProperties { private defaultCppStandard: string = null; private defaultIncludes: string[] = null; private defaultFrameworks: string[] = null; + private defaultWindowsSdkVersion: string = null; private vcpkgIncludes: string[] = []; private vcpkgPathReady: boolean = false; private defaultIntelliSenseMode: string = null; - private readonly configurationGlobPattern: string = "**/c_cpp_properties.json"; // TODO: probably should be a single file, not all files... + private readonly configurationGlobPattern: string = "c_cpp_properties.json"; private disposables: vscode.Disposable[] = []; private configurationsChanged = new vscode.EventEmitter(); private selectionChanged = new vscode.EventEmitter(); @@ -162,6 +165,7 @@ export class CppProperties { this.defaultCppStandard = compilerDefaults.cppStandard; this.defaultIncludes = compilerDefaults.includes; this.defaultFrameworks = compilerDefaults.frameworks; + this.defaultWindowsSdkVersion = compilerDefaults.windowsSdkVersion; this.defaultIntelliSenseMode = compilerDefaults.intelliSenseMode; // defaultPaths is only used when there isn't a c_cpp_properties.json, but we don't send the configuration changed event @@ -229,6 +233,9 @@ export class CppProperties { if (!settings.defaultMacFrameworkPath && process.platform === 'darwin') { configuration.macFrameworkPath = this.defaultFrameworks; } + if (!settings.defaultWindowsSdkVersion && process.platform === 'win32') { + configuration.windowsSdkVersion = this.defaultWindowsSdkVersion; + } if (!settings.defaultCompilerPath && this.defaultCompilerPath) { configuration.compilerPath = this.defaultCompilerPath; } @@ -247,27 +254,25 @@ export class CppProperties { private async buildVcpkgIncludePath(): Promise { try { - // Check for vcpkg instance and include relevent paths if found. - if (await util.checkFileExists(util.getVcpkgPathDescriptorFile())) { - let vcpkgRoot: string = await util.readFileText(util.getVcpkgPathDescriptorFile()); - vcpkgRoot = vcpkgRoot.trim(); - if (await util.checkDirectoryExists(vcpkgRoot)) { - let vcpkgInstalledPath: string = path.join(vcpkgRoot, "/installed"); - let list: string[] = await util.readDir(vcpkgInstalledPath); - if (list !== undefined) { - // For every *directory* in the list (non-recursive). Each directory is basically a platform. - list.forEach((entry) => { - if (entry !== "vcpkg") { - let pathToCheck: string = path.join(vcpkgInstalledPath, entry); - if (fs.existsSync(pathToCheck)) { - let p: string = path.join(pathToCheck, "include"); - if (fs.existsSync(p)) { - this.vcpkgIncludes.push(p); - } + // Check for vcpkgRoot and include relevent paths if found. + let vcpkgRoot: string = util.getVcpkgRoot(); + if (vcpkgRoot) { + let list: string[] = await util.readDir(vcpkgRoot); + if (list !== undefined) { + // For every *directory* in the list (non-recursive). Each directory is basically a platform. + list.forEach((entry) => { + if (entry !== "vcpkg") { + let pathToCheck: string = path.join(vcpkgRoot, entry); + if (fs.existsSync(pathToCheck)) { + let p: string = path.join(pathToCheck, "include"); + if (fs.existsSync(p)) { + p = p.replace(/\\/g, "/"); + p = p.replace(vcpkgRoot, "${vcpkgRoot}"); + this.vcpkgIncludes.push(p); } } - }); - } + } + }); } } } catch (error) {} finally { @@ -321,13 +326,17 @@ export class CppProperties { }); } - public addCustomConfigurationProvider(providerId: string): Thenable { + public updateCustomConfigurationProvider(providerId: string): Thenable { return new Promise((resolve) => { if (this.propertiesFile) { this.handleConfigurationEditCommand((document: vscode.TextDocument) => { this.parsePropertiesFile(); // Clear out any modifications we may have made internally. let config: Configuration = this.CurrentConfiguration; - config.configurationProvider = providerId; + if (providerId) { + config.configurationProvider = providerId; + } else { + delete config.configurationProvider; + } fs.writeFileSync(this.propertiesFile.fsPath, JSON.stringify(this.configurationJson, null, 4)); this.handleConfigurationChange(); resolve(); @@ -424,6 +433,7 @@ export class CppProperties { configuration.includePath = this.updateConfiguration(configuration.includePath, settings.defaultIncludePath); configuration.defines = this.updateConfiguration(configuration.defines, settings.defaultDefines); configuration.macFrameworkPath = this.updateConfiguration(configuration.macFrameworkPath, settings.defaultMacFrameworkPath); + configuration.windowsSdkVersion = this.updateConfiguration(configuration.windowsSdkVersion, settings.defaultWindowsSdkVersion); configuration.forcedInclude = this.updateConfiguration(configuration.forcedInclude, settings.defaultForcedInclude); configuration.compileCommands = this.updateConfiguration(configuration.compileCommands, settings.defaultCompileCommands); configuration.compilerPath = this.updateConfiguration(configuration.compilerPath, settings.defaultCompilerPath); @@ -495,9 +505,8 @@ export class CppProperties { } else { fs.mkdir(this.configFolder, (e: NodeJS.ErrnoException) => { if (!e || e.code === 'EEXIST') { - let dirPathEscaped: string = this.configFolder.replace("#", "%23"); - let fullPathToFile: string = path.join(dirPathEscaped, "c_cpp_properties.json"); - let filePath: vscode.Uri = vscode.Uri.parse("untitled:" + fullPathToFile); + let fullPathToFile: string = path.join(this.configFolder, "c_cpp_properties.json"); + let filePath: vscode.Uri = vscode.Uri.file(fullPathToFile).with({ scheme: "untitled" }); vscode.workspace.openTextDocument(filePath).then((document: vscode.TextDocument) => { let edit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); if (this.configurationJson) { diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 87d4156c2..da20abe53 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -210,6 +210,7 @@ function registerCommands(): void { disposables.push(vscode.commands.registerCommand('C_Cpp.SwitchHeaderSource', onSwitchHeaderSource)); disposables.push(vscode.commands.registerCommand('C_Cpp.ResetDatabase', onResetDatabase)); disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationSelect', onSelectConfiguration)); + disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationProviderSelect', onSelectConfigurationProvider)); disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationEdit', onEditConfiguration)); disposables.push(vscode.commands.registerCommand('C_Cpp.AddToIncludePath', onAddToIncludePath)); disposables.push(vscode.commands.registerCommand('C_Cpp.ToggleErrorSquiggles', onToggleSquiggles)); @@ -311,7 +312,7 @@ function selectClient(): Thenable { function onResetDatabase(): void { onActivationEvent(); /* need to notify the affected client(s) */ - selectClient().then(client => client.resetDatabase(), rejected => { }); + selectClient().then(client => client.resetDatabase(), rejected => {}); } function onSelectConfiguration(): void { @@ -325,12 +326,21 @@ function onSelectConfiguration(): void { } } +function onSelectConfigurationProvider(): void { + onActivationEvent(); + if (!isFolderOpen()) { + vscode.window.showInformationMessage('Open a folder first to select a configuration provider'); + } else { + selectClient().then(client => client.handleConfigurationProviderSelectCommand(), rejected => {}); + } +} + function onEditConfiguration(): void { onActivationEvent(); if (!isFolderOpen()) { vscode.window.showInformationMessage('Open a folder first to edit configurations'); } else { - selectClient().then(client => client.handleConfigurationEditCommand(), rejected => { }); + selectClient().then(client => client.handleConfigurationEditCommand(), rejected => {}); } } @@ -413,17 +423,17 @@ function onShowReleaseNotes(): void { function onPauseParsing(): void { onActivationEvent(); - selectClient().then(client => client.pauseParsing(), rejected => { }); + selectClient().then(client => client.pauseParsing(), rejected => {}); } function onResumeParsing(): void { onActivationEvent(); - selectClient().then(client => client.resumeParsing(), rejected => { }); + selectClient().then(client => client.resumeParsing(), rejected => {}); } function onShowParsingCommands(): void { onActivationEvent(); - selectClient().then(client => client.handleShowParsingCommands(), rejected => { }); + selectClient().then(client => client.handleShowParsingCommands(), rejected => {}); } function onTakeSurvey(): void { diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 824c2e93a..738f8f402 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -48,10 +48,12 @@ export class CppSettings extends Settings { public get workspaceParsingPriority(): boolean { return super.Section.get("workspaceParsingPriority"); } public get exclusionPolicy(): boolean { return super.Section.get("exclusionPolicy"); } public get commentContinuationPatterns(): (string | CommentPattern)[] { return super.Section.get<(string | CommentPattern)[]>("commentContinuationPatterns"); } + public get configurationWarnings(): string { return super.Section.get("configurationWarnings"); } public get preferredPathSeparator(): string { return super.Section.get("preferredPathSeparator"); } public get defaultIncludePath(): string[] { return super.Section.get("default.includePath"); } public get defaultDefines(): string[] { return super.Section.get("default.defines"); } public get defaultMacFrameworkPath(): string[] { return super.Section.get("default.macFrameworkPath"); } + public get defaultWindowsSdkVersion(): string { return super.Section.get("default.windowsSdkVersion"); } public get defaultCompileCommands(): string { return super.Section.get("default.compileCommands"); } public get defaultForcedInclude(): string[] { return super.Section.get("default.forcedInclude"); } public get defaultIntelliSenseMode(): string { return super.Section.get("default.intelliSenseMode"); } diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index e251b8ee6..72f3ea71b 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -6,6 +6,7 @@ import * as vscode from 'vscode'; import { Client } from './client'; +import { getCustomConfigProviders, CustomConfigurationProviderCollection } from './customProviders'; let ui: UI; @@ -160,12 +161,22 @@ export class UI { items.push({ label: "Edit Configurations...", description: "", index: configurationNames.length }); return vscode.window.showQuickPick(items, options) - .then(selection => { - if (!selection) { - return -1; - } - return selection.index; - }); + .then(selection => (selection) ? selection.index : -1); + } + + public showConfigurationProviders(): Thenable { + let options: vscode.QuickPickOptions = {}; + options.placeHolder = "Select a Configuration Provider..."; + let providers: CustomConfigurationProviderCollection = getCustomConfigProviders(); + + let items: KeyedQuickPickItem[] = []; + providers.forEach(provider => { + items.push({ label: provider.name, description: "", key: provider.extensionId }); + }); + items.push({ label: "(none)", description: "Disable the active configuration provider, if applicable.", key: "" }); + + return vscode.window.showQuickPick(items, options) + .then(selection => (selection) ? selection.key : undefined); } public showCompileCommands(paths: string[]): Thenable { @@ -178,12 +189,7 @@ export class UI { } return vscode.window.showQuickPick(items, options) - .then(selection => { - if (!selection) { - return -1; - } - return selection.index; - }); + .then(selection => (selection) ? selection.index : -1); } public showWorkspaces(workspaceNames: { name: string; key: string }[]): Thenable { @@ -194,12 +200,7 @@ export class UI { workspaceNames.forEach(name => items.push({ label: name.name, description: "", key: name.key })); return vscode.window.showQuickPick(items, options) - .then(selection => { - if (!selection) { - return ""; - } - return selection.key; - }); + .then(selection => (selection) ? selection.key : ""); } public showParsingCommands(): Thenable { @@ -215,12 +216,7 @@ export class UI { } return vscode.window.showQuickPick(items, options) - .then(selection => { - if (!selection) { - return -1; - } - return selection.index; - }); + .then(selection => (selection) ? selection.index : -1); } public dispose(): void { diff --git a/Extension/src/commands.ts b/Extension/src/commands.ts index f36cb5a5b..189096071 100644 --- a/Extension/src/commands.ts +++ b/Extension/src/commands.ts @@ -15,6 +15,7 @@ class TemporaryCommandRegistrar { private commandsToRegister: string[] = [ "C_Cpp.ConfigurationEdit", "C_Cpp.ConfigurationSelect", + "C_Cpp.ConfigurationProviderSelect", "C_Cpp.SwitchHeaderSource", "C_Cpp.Navigate", "C_Cpp.GoToDeclaration", diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 4d24ec83e..4a7c613d5 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -57,6 +57,32 @@ export function getVcpkgPathDescriptorFile(): string { } } +let vcpkgRoot: string; +export function getVcpkgRoot(): string { + if (!vcpkgRoot && vcpkgRoot !== "") { + vcpkgRoot = ""; + // Check for vcpkg instance. + if (fs.existsSync(getVcpkgPathDescriptorFile())) { + let vcpkgRootTemp: string = fs.readFileSync(getVcpkgPathDescriptorFile()).toString(); + vcpkgRootTemp = vcpkgRootTemp.trim(); + if (fs.existsSync(vcpkgRootTemp)) { + vcpkgRoot = path.join(vcpkgRootTemp, "/installed").replace(/\\/g, "/"); + } + } + } + return vcpkgRoot; +} + +/** + * This is a fuzzy determination of whether a uri represents a header file. + * For the purposes of this function, a header file has no extension, or an extension that begins with the letter 'h'. + * @param document The document to check. + */ +export function isHeader(document: vscode.TextDocument): boolean { + let ext: string = path.extname(document.uri.fsPath); + return !ext || ext.startsWith(".h") || ext.startsWith(".H"); +} + // Extension is ready if install.lock exists and debugAdapters folder exist. export async function isExtensionReady(): Promise { const doesInstallLockFileExist: boolean = await checkInstallLockFile(); diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 53ebefe77..fa13d1b3b 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -311,6 +311,7 @@ function rewriteManifest(): Promise { "onCommand:extension.pickRemoteNativeProcess", "onCommand:C_Cpp.ConfigurationEdit", "onCommand:C_Cpp.ConfigurationSelect", + "onCommand:C_Cpp.ConfigurationProviderSelect", "onCommand:C_Cpp.SwitchHeaderSource", "onCommand:C_Cpp.Navigate", "onCommand:C_Cpp.GoToDeclaration", diff --git a/launch.md b/launch.md index d49a5a7c0..6e27cafcd 100644 --- a/launch.md +++ b/launch.md @@ -101,6 +101,9 @@ You can change the behavior of GDB or LLDB by setting the following options. * #### `miDebuggerPath` The path to the debugger (such as gdb). When only the executable is specified, it will search the operating system's PATH variable for a debugger (GDB on Linux and Windows, LLDB on OS X). + +* #### `miDebuggerArgs` + Additional arguments to pass to the debugger (such as gdb). * #### `stopAtEntry` If set to true, the debugger should stop at the entry-point of the target (ignored on attach). Default value is `false`.