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
26 #define _VSL_BINARY_COMPARE(type) \
27 inline bool operator==(const type& rLeft, const type& rRight) \
29 return (0 == ::memcmp(&rLeft, &rRight, sizeof(type))); \
32 // Common System Types
34 #ifndef VSL_VARIANT_EQUIVALENCE_DISP_E_BADVARTYPE_RETURN
35 #define VSL_VARIANT_EQUIVALENCE_DISP_E_BADVARTYPE_RETURN false
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
)
104 _VSL_BINARY_COMPARE(CANDIDATEFORM
)
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
)
161 _VSL_BINARY_COMPARE(VxDTE::Project
)
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__
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__
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
));
250 #endif VSLCOMPARISON_H_10C49CA1_2F46_11D3_A504_00C04F5E0BA5