added some development tools
[windows-sources.git] / developer / VSSDK / VisualStudioIntegration / Common / Source / CPP / VSL / Include / VSLComparison.h
blobb75b627659c052530f5828172e08ea0e43469af0
1 /***************************************************************************
3 Copyright (c) Microsoft Corporation. All rights reserved.
4 This code is licensed under the Visual Studio SDK license terms.
5 THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
6 ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
7 IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
8 PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
10 This code is a part of the Visual Studio Library.
12 ***************************************************************************/
14 #ifndef VSLCOMPARISON_H_10C49CA1_2F46_11D3_A504_00C04F5E0BA5
15 #define VSLCOMPARISON_H_10C49CA1_2F46_11D3_A504_00C04F5E0BA5
17 #if _MSC_VER > 1000
18 #pragma once
19 #endif
21 #include <VSL.h>
23 namespace VSL
26 #define _VSL_BINARY_COMPARE(type) \
27 inline bool operator==(const type& rLeft, const type& rRight) \
28 { \
29 return (0 == ::memcmp(&rLeft, &rRight, sizeof(type))); \
30 } \
32 // Common System Types
34 #ifndef VSL_VARIANT_EQUIVALENCE_DISP_E_BADVARTYPE_RETURN
35 #define VSL_VARIANT_EQUIVALENCE_DISP_E_BADVARTYPE_RETURN false
36 #endif
38 inline bool operator==(const VARIANT& rLeft, const VARIANT& rRight)
40 HRESULT hr = ::VarCmp(const_cast<VARIANT*>(&rLeft), const_cast<VARIANT*>(&rRight), LOCALE_USER_DEFAULT, 0);
41 if(DISP_E_BADVARTYPE == hr)
43 if(rLeft.vt == rRight.vt)
45 if(rLeft.vt == VT_UNKNOWN)
47 CComPtr<IUnknown> pIUnknown = rLeft.punkVal;
48 return pIUnknown.IsEqualObject(rRight.punkVal);
50 // REVIEW - what other cases are needed?
52 return VSL_VARIANT_EQUIVALENCE_DISP_E_BADVARTYPE_RETURN;
54 return (VARCMP_EQ == static_cast<int>(hr));
57 _VSL_BINARY_COMPARE(ULARGE_INTEGER)
58 _VSL_BINARY_COMPARE(LARGE_INTEGER)
59 _VSL_BINARY_COMPARE(CY)
60 _VSL_BINARY_COMPARE(POINTS)
61 _VSL_BINARY_COMPARE(POINT)
62 _VSL_BINARY_COMPARE(POINTL)
63 _VSL_BINARY_COMPARE(SIZE)
64 _VSL_BINARY_COMPARE(SYSTEMTIME)
65 _VSL_BINARY_COMPARE(OLECMDTEXT)
66 _VSL_BINARY_COMPARE(RECT)
67 _VSL_BINARY_COMPARE(DISPPARAMS)
68 _VSL_BINARY_COMPARE(LOGFONTW)
69 _VSL_BINARY_COMPARE(CUSTDATA)
70 _VSL_BINARY_COMPARE(EXCEPINFO)
71 _VSL_BINARY_COMPARE(BINDPTR)
72 _VSL_BINARY_COMPARE(STATSTG)
73 _VSL_BINARY_COMPARE(CAUUID)
74 _VSL_BINARY_COMPARE(FILETIME)
75 _VSL_BINARY_COMPARE(RPCOLEMESSAGE)
76 _VSL_BINARY_COMPARE(QACONTROL)
77 _VSL_BINARY_COMPARE(PROPPAGEINFO)
78 _VSL_BINARY_COMPARE(PROPBAG2)
79 _VSL_BINARY_COMPARE(STGMEDIUM)
80 _VSL_BINARY_COMPARE(CALPOLESTR)
81 _VSL_BINARY_COMPARE(CADWORD)
82 _VSL_BINARY_COMPARE(POINTF)
83 _VSL_BINARY_COMPARE(CONTROLINFO)
84 _VSL_BINARY_COMPARE(MULTI_QI)
85 _VSL_BINARY_COMPARE(TEXTMETRICW)
86 _VSL_BINARY_COMPARE(FORMATETC)
87 _VSL_BINARY_COMPARE(LICINFO)
88 _VSL_BINARY_COMPARE(BIND_OPTS)
89 _VSL_BINARY_COMPARE(STATDATA)
90 _VSL_BINARY_COMPARE(TLIBATTR)
91 _VSL_BINARY_COMPARE(MSG)
92 _VSL_BINARY_COMPARE(OLECMD)
93 _VSL_BINARY_COMPARE(OLEVERB)
94 _VSL_BINARY_COMPARE(CONNECTDATA)
95 _VSL_BINARY_COMPARE(StorageLayout)
96 _VSL_BINARY_COMPARE(TYPEATTR)
97 _VSL_BINARY_COMPARE(FUNCDESC)
98 _VSL_BINARY_COMPARE(VARDESC)
99 _VSL_BINARY_COMPARE(QACONTAINER)
100 _VSL_BINARY_COMPARE(LOGPALETTE)
101 _VSL_BINARY_COMPARE(TYPEDESC)
103 #ifdef _IMM_
104 _VSL_BINARY_COMPARE(CANDIDATEFORM)
105 #endif // _IMM_
107 #ifdef __olecm_h__
108 _VSL_BINARY_COMPARE(OLECRINFO)
109 _VSL_BINARY_COMPARE(OLECHOSTINFO)
110 #endif // __olecm_h__
112 // Common Visaul Studio Types
113 _VSL_BINARY_COMPARE(VSSAVETREEITEM)
114 _VSL_BINARY_COMPARE(VSOPENFILENAMEW)
115 _VSL_BINARY_COMPARE(VSSAVEFILENAMEW)
116 _VSL_BINARY_COMPARE(VSBROWSEINFOW)
117 _VSL_BINARY_COMPARE(VSSWATCHMETRICS)
118 _VSL_BINARY_COMPARE(VsPropertyBrowserState)
119 _VSL_BINARY_COMPARE(VSPROPSHEETPAGE)
120 _VSL_BINARY_COMPARE(VSTREEDISPLAYDATA)
121 _VSL_BINARY_COMPARE(VSOBNAVIGATIONINFO2)
122 _VSL_BINARY_COMPARE(FontInfo)
123 _VSL_BINARY_COMPARE(ColorableItemInfo)
124 _VSL_BINARY_COMPARE(AllColorableItemInfo)
125 _VSL_BINARY_COMPARE(VSITEMSELECTION)
126 _VSL_BINARY_COMPARE(TBXITEMINFO)
127 _VSL_BINARY_COMPARE(VSTASKCOLUMN)
128 _VSL_BINARY_COMPARE(VSCOMPONENTSELECTORDATA)
129 _VSL_BINARY_COMPARE(VSOBNAVIGATIONINFO3)
130 _VSL_BINARY_COMPARE(TextSpan)
131 _VSL_BINARY_COMPARE(VSOBSEARCHCRITERIA2)
132 _VSL_BINARY_COMPARE(OLEMENUID)
133 _VSL_BINARY_COMPARE(VSOBJCLIPFORMAT)
134 _VSL_BINARY_COMPARE(VSTREELISTITEMCHANGE)
135 _VSL_BINARY_COMPARE(VSDEFAULTPREVIEWER)
136 _VSL_BINARY_COMPARE(TSHELL_CMD)
137 _VSL_BINARY_COMPARE(NewSyntheticRegion)
138 _VSL_BINARY_COMPARE(VSBROWSECONTAINER)
139 _VSL_BINARY_COMPARE(SYMBOL_DESCRIPTION_NODE)
140 _VSL_BINARY_COMPARE(VsDebugTargetInfo2)
141 _VSL_BINARY_COMPARE(NewOutlineRegion)
142 _VSL_BINARY_COMPARE(NewHiddenRegion)
143 _VSL_BINARY_COMPARE(VsDebugTargetInfo)
144 _VSL_BINARY_COMPARE(VSCOMPONENTSELECTORTABINIT)
145 _VSL_BINARY_COMPARE(COMREFERENCE)
146 _VSL_BINARY_COMPARE(VSNSEBROWSEINFOW)
147 _VSL_BINARY_COMPARE(VSDRAWITEMSTRUCT)
148 _VSL_BINARY_COMPARE(VSSWATCHRENDER)
149 _VSL_BINARY_COMPARE(VSOBNAVNAMEINFONODE2)
150 _VSL_BINARY_COMPARE(VSOBSEARCHCRITERIA)
151 _VSL_BINARY_COMPARE(VSOBNAVNAMEINFONODE)
152 _VSL_BINARY_COMPARE(VSOBJECTINFO)
153 _VSL_BINARY_COMPARE(MEINIT)
154 _VSL_BINARY_COMPARE(VsTextPos)
156 #ifdef __customfind_h__
157 _VSL_BINARY_COMPARE(VSBROWSESCOPEW)
158 #endif
160 #ifdef __dte_h__
161 _VSL_BINARY_COMPARE(VxDTE::Project)
162 #endif // __dte_h__
164 #ifdef __encbuild_h__
165 _VSL_BINARY_COMPARE(ENC_EXCEPTION_SPAN)
166 _VSL_BINARY_COMPARE(ENC_ACTIVE_STATEMENT)
167 #endif // __encbuild_h__
169 #ifdef __IVsQueryEditQuerySave2_h__
170 _VSL_BINARY_COMPARE(VSQEQS_FILE_ATTRIBUTE_DATA)
171 #endif // __IVsQueryEditQuerySave2_h__
173 #ifdef __msdbg_h__
174 _VSL_BINARY_COMPARE(BSTR_ARRAY)
175 _VSL_BINARY_COMPARE(AD_PROCESS_ID)
176 _VSL_BINARY_COMPARE(TEXT_POSITION)
177 _VSL_BINARY_COMPARE(BP_CONDITION)
178 _VSL_BINARY_COMPARE(BP_PASSCOUNT)
179 _VSL_BINARY_COMPARE(WATCH_COOKIE)
180 _VSL_BINARY_COMPARE(PROCESS_LAUNCH_INFO)
181 _VSL_BINARY_COMPARE(RESUME_COOKIE)
182 _VSL_BINARY_COMPARE(CONST_GUID_ARRAY)
183 _VSL_BINARY_COMPARE(COMPUTER_INFO)
184 _VSL_BINARY_COMPARE(THREADPROPERTIES)
185 _VSL_BINARY_COMPARE(FRAMEINFO)
186 _VSL_BINARY_COMPARE(DEBUG_PROPERTY_INFO)
187 _VSL_BINARY_COMPARE(ENUMERATED_PROCESS_ARRAY)
188 _VSL_BINARY_COMPARE(REMOTE_PROCESS_INFO)
189 _VSL_BINARY_COMPARE(DEBUG_REFERENCE_INFO)
190 _VSL_BINARY_COMPARE(PROVIDER_PROCESS_DATA)
191 _VSL_BINARY_COMPARE(GUID_ARRAY)
192 _VSL_BINARY_COMPARE(PROCESS_INFO)
193 _VSL_BINARY_COMPARE(BP_ERROR_RESOLUTION_INFO)
194 _VSL_BINARY_COMPARE(PENDING_BP_STATE_INFO)
195 _VSL_BINARY_COMPARE(NATIVE_EXCEPTION_INFO)
196 _VSL_BINARY_COMPARE(MODULE_SYMBOL_SEARCH_INFO)
197 _VSL_BINARY_COMPARE(MACHINE_INFO)
198 _VSL_BINARY_COMPARE(MODULE_INFO)
199 _VSL_BINARY_COMPARE(CONTEXT_INFO)
200 _VSL_BINARY_COMPARE(EXCEPTION_INFO)
201 _VSL_BINARY_COMPARE(BP_RESOLUTION_INFO)
202 _VSL_BINARY_COMPARE(BP_REQUEST_INFO2)
203 _VSL_BINARY_COMPARE(BP_REQUEST_INFO)
204 _VSL_BINARY_COMPARE(CHECKSUM_DATA)
205 _VSL_BINARY_COMPARE(DEBUG_CUSTOM_VIEWER)
206 _VSL_BINARY_COMPARE(JMC_CODE_SPEC)
207 _VSL_BINARY_COMPARE(CODE_PATH)
208 _VSL_BINARY_COMPARE(DisassemblyData)
209 #endif // __msdbg_h__
211 #ifdef __textmgr_h__
212 _VSL_BINARY_COMPARE(TextAddress)
213 _VSL_BINARY_COMPARE(TIPSIZEDATA)
214 _VSL_BINARY_COMPARE(LINEDATAEX)
215 _VSL_BINARY_COMPARE(SELECTIONSTATE)
216 _VSL_BINARY_COMPARE(VIEWPREFERENCES)
217 _VSL_BINARY_COMPARE(FRAMEPREFERENCES)
218 _VSL_BINARY_COMPARE(LANGPREFERENCES)
219 _VSL_BINARY_COMPARE(FONTCOLORPREFERENCES)
220 _VSL_BINARY_COMPARE(MARKERDATA)
221 _VSL_BINARY_COMPARE(LINEDATA)
222 _VSL_BINARY_COMPARE(TabStop)
223 _VSL_BINARY_COMPARE(ChangeInput)
224 _VSL_BINARY_COMPARE(BUFFERINITEX)
225 #endif // __textmgr_h__
227 #ifdef __singlefileeditor_h__
228 _VSL_BINARY_COMPARE(ExternalError)
229 _VSL_BINARY_COMPARE(NewSpanMapping)
230 _VSL_BINARY_COMPARE(TextSpanAndCookie)
231 #endif // __singlefileeditor_h__
233 #ifdef __textmgr2_h__
234 _VSL_BINARY_COMPARE(FRAMEPREFERENCES2)
235 _VSL_BINARY_COMPARE(LANGPREFERENCES2)
236 _VSL_BINARY_COMPARE(FONTCOLORPREFERENCES2)
237 _VSL_BINARY_COMPARE(SMARTTAGSIZEDATA)
238 _VSL_BINARY_COMPARE(VIEWPREFERENCES2)
239 _VSL_BINARY_COMPARE(NewHiddenRegionEx)
240 #endif // __textmgr2_h__
242 // NOTE - this can not be an operator <, as one parameter must be of class type for that operatore
243 inline bool IsStringLessThen(_In_ wchar_t* szIsLessThen, _In_ wchar_t* szThis)
245 return (0 > ::wcscmp(szIsLessThen, szThis));
248 } // namespace VSL
250 #endif VSLCOMPARISON_H_10C49CA1_2F46_11D3_A504_00C04F5E0BA5