00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
00045 # error This file must not be included independently of stlsoft/stlsoft.h
00046 #endif
00047
00054 #ifdef STLSOFT_INCL_H_STLSOFT_CCCAP_MSVC
00055 # error This file cannot be included more than once in any compilation unit
00056 #endif
00057
00058 #ifndef STLSOFT_COMPILER_IS_MSVC
00059 # error This file has been erroneously included for a compiler other than Visual C++
00060 #endif
00061
00062
00063
00064 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00065 # define STLSOFT_VER_H_STLSOFT_CCCAP_MSVC_MAJOR 3
00066 # define STLSOFT_VER_H_STLSOFT_CCCAP_MSVC_MINOR 22
00067 # define STLSOFT_VER_H_STLSOFT_CCCAP_MSVC_REVISION 2
00068 # define STLSOFT_VER_H_STLSOFT_CCCAP_MSVC_EDIT 117
00069 #endif
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 #define STLSOFT_PPF_pragma_message_SUPPORT
00112
00113 #if _MSC_VER >= 900
00114 # define STLSOFT_PPF_pragma_once_SUPPORT
00115 #endif
00116
00117 #if _MSC_VER >= 1300
00118 # define STLSOFT_PPF_COUNTER_SYMBOL_SUPPORT
00119 #endif
00120
00121 #if _MSC_VER >= 1300
00122 # define STLSOFT_PPF_FUNCTION_SYMBOL_SUPPORT
00123 #endif
00124
00125 #if _MSC_VER >= 1400
00126 # define STLSOFT_PPF_VARIADIC_MACROS_SUPPORT
00127 #endif
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 #ifdef __BOOL_DEFINED
00143 # define STLSOFT_CF_BUILTIN_bool_SUPPORT
00144 #endif
00145
00146 #ifdef _NATIVE_WCHAR_T_DEFINED
00147 # define STLSOFT_CF_BUILTIN_wchar_t_SUPPORT
00148 #endif
00149
00150
00151
00152
00153
00154 #define STLSOFT_CF_BUILTIN___int8_SUPPORT
00155
00156 #define STLSOFT_CF_BUILTIN___int16_SUPPORT
00157
00158 #define STLSOFT_CF_BUILTIN___int32_SUPPORT
00159
00160 #if _MSC_VER >= 1020
00161 # define STLSOFT_CF_BUILTIN___int64_SUPPORT
00162 #endif
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173 #ifdef _CHAR_UNSIGNED
00174 # define STLSOFT_CF_char_IS_UNSIGNED
00175 #endif
00176
00177 #if !defined(STLSOFT_CF_BUILTIN_wchar_t_SUPPORT) && \
00178 defined(_WCHAR_T_DEFINED)
00179 # define STLSOFT_CF_wchar_t_IS_SYNTHESISED
00180 #endif
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192 #if _MSC_VER >= 1600
00193 # define STLSOFT_CF_BUILTIN_nullptr_SUPPORT
00194 #endif
00195
00196 #if _MSC_VER >= 1300
00197 # define STLSOFT_CF_return_void_SUPPORT
00198 #endif
00199
00200 #define STLSOFT_CF_STATIC_ASSERT_SUPPORT
00201
00202 #define STLSOFT_CF_ANONYMOUS_UNION_SUPPORT
00203
00204 #define STLSOFT_CF_NEGATIVE_MODULUS_POSITIVE_GIVES_NEGATIVE_RESULT
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216 #define STLSOFT_CUSTOM_C_INLINE __inline
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250 #ifdef _CPPUNWIND
00251 # define STLSOFT_CF_EXCEPTION_SUPPORT
00252 # if _MSC_VER >= 1100
00253 # define STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT
00254 # endif
00255
00256
00257
00258 # if _MSC_VER >= 1300
00259 # define STLSOFT_CF_EXCEPTION_OPERATOR_NEW_THROWS_BAD_ALLOC
00260 # endif
00261 #endif
00262
00263 #ifdef _CPPRTTI
00264 # define STLSOFT_CF_RTTI_SUPPORT
00265 #endif
00266
00267 #ifdef __cplusplus
00268 # if _MSC_VER >= 1020
00269 # define STLSOFT_CF_NAMESPACE_SUPPORT
00270 # endif
00271 #endif
00272
00273 #if _MSC_VER < 1100
00274
00275
00276
00277
00278 # define _STLSOFT_NO_NAMESPACES
00279 #endif
00280
00281 #if _MSC_VER >= 1300
00282 # define STLSOFT_CF_MEMBER_CONSTANT_SUPPORT
00283 #endif
00284
00285 #if _MSC_VER >= 1100
00286 # define STLSOFT_CF_EXPLICIT_KEYWORD_SUPPORT
00287 #endif
00288
00289 #if _MSC_VER >= 1100
00290 # define STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT
00291 #endif
00292
00293 #if _MSC_VER >= 1300
00294 # define STLSOFT_CF_TEMPLATE_QUALIFIER_KEYWORD_SUPPORT
00295 #endif
00296
00297 #if _MSC_VER >= 1100
00298 # define STLSOFT_CF_TYPENAME_PARAM_KEYWORD_SUPPORT
00299 #endif
00300
00301 #if _MSC_VER >= 1200
00302 # define STLSOFT_CF_TYPENAME_TYPE_KEYWORD_SUPPORT
00303 #endif
00304
00305 #if _MSC_VER >= 1300
00306 # define STLSOFT_CF_TYPENAME_TYPE_DEF_KEYWORD_SUPPORT
00307 #endif
00308
00309
00310
00311
00312
00313 #if _MSC_VER >= 1300
00314 # define STLSOFT_CF_TYPENAME_TYPE_RET_KEYWORD_SUPPORT
00315 #endif
00316
00317 #if _MSC_VER >= 1310
00318 # define STLSOFT_CF_ADL_SUPPORT
00319 #endif
00320
00321 #if _MSC_VER >= 1300
00322 # define STLSOFT_CF_STATIC_ARRAY_SIZE_DETERMINATION_SUPPORT
00323 #endif
00324
00325 #if defined(_MSC_EXTENSIONS) && \
00326 _MSC_VER < 1310
00327 # define STLSOFT_CF_MOVE_CONSTRUCTOR_SUPPORT
00328 #endif
00329
00330 #if _MSC_VER >= 1300
00331 # define STLSOFT_CF_OPERATOR_BOOL_AS_OPERATOR_POINTER_TO_MEMBER_SUPPORT
00332 # define STLSOFT_CF_OPERATOR_NOT_VIA_OPERATOR_POINTER_TO_MEMBER_SUPPORT
00333 #endif
00334
00335 #if _MSC_VER <= 1200
00336 # define STLSOFT_CF_REQUIRE_RETURN_ALWAYS
00337 #endif
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366 #if _MSC_VER >= 1100
00367 # define STLSOFT_CF_TEMPLATE_SUPPORT
00368 #endif
00369
00370 #if _MSC_VER >= 1100
00371 # define STLSOFT_CF_TEMPLATE_SPECIALISATION_SYNTAX_SUPPORT
00372 #endif
00373
00374 #if _MSC_VER >= 1310
00375 # define STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT
00376 #endif
00377
00378 #if _MSC_VER >= 1100
00379 # define STLSOFT_CF_TEMPLATE_FUNCTION_TEMPLATE_SUPPORT
00380 #endif
00381
00382 #if _MSC_VER >= 1100
00383 # define STLSOFT_CF_TEMPLATE_CLASS_TEMPLATE_SUPPORT
00384 #endif
00385
00386 #if _MSC_VER >= 1100
00387 # define STLSOFT_CF_TEMPLATE_MEMBER_CLASS_TEMPLATE_SUPPORT
00388 #endif
00389
00390 #if _MSC_VER >= 1100
00391 # define STLSOFT_CF_TEMPLATE_MEMBER_FUNCTION_TEMPLATE_SUPPORT
00392 #endif
00393
00394 #if _MSC_VER >= 1200
00395 # define STLSOFT_CF_TEMPLATE_MEMBER_RANGE_FUNCTION_TEMPLATE_SUPPORT
00396 #endif
00397
00398
00399
00400
00401 #if _MSC_VER > 1100
00402 # define STLSOFT_CF_TEMPLATE_CTOR_TEMPLATE_SUPPORT
00403 #endif
00404
00405 #if _MSC_VER >= 1300
00406 # define STLSOFT_CF_TEMPLATE_TEMPLATE_SUPPORT
00407 #endif
00408
00409 #if _MSC_VER >= 1100
00410 # define STLSOFT_CF_TEMPLATE_FUNDAMENTAL_PARAMETER_SUPPORT
00411 #endif
00412
00413 #if _MSC_VER >= 1100
00414 # define STLSOFT_CF_TEMPLATE_TYPE_PARAMETER_SUPPORT
00415 #endif
00416
00417 #if _MSC_VER >= 1310
00418 # define STLSOFT_CF_TEMPLATE_MEMBER_FUNCTION_PARAMETER_SUPPORT
00419 #endif
00420
00421 #if _MSC_VER >= 1100
00422 # define STLSOFT_CF_TEMPLATE_DEFAULT_FUNDAMENTAL_PARAMETER_SUPPORT
00423 #endif
00424
00425
00426
00427
00428 #if _MSC_VER >= 1100
00429 # define STLSOFT_CF_TEMPLATE_DEFAULT_TYPE_PARAMETER_SUPPORT
00430 #endif
00431
00432 #if _MSC_VER < 1100
00433 # define STLSOFT_CF_TEMPLATE_FUNCTION_TEMPLATE_REQUIRES_TEMPLATE_PARAMETERS_IN_FUNCTION_PARAMETER_LIST
00434 #endif
00435
00436 #if _MSC_VER >= 1300
00437 # define STLSOFT_CF_TEMPLATE_MEMBER_FUNCTION_TEMPLATE_OVERLOAD_DISCRIMINATED_AGAINST_NON_TEMPLATE_MEMBER_FUNCTION
00438 #endif
00439
00440 #if _MSC_VER >= 1310
00441 # define STLSOFT_CF_TEMPLATE_CONSTRUCTOR_TEMPLATE_OVERLOAD_DISCRIMINATED_AGAINST_NON_TEMPLATE_CONSTRUCTOR
00442 #endif
00443
00444
00445
00446
00447 #if _MSC_VER >= 1300
00448 # define STLSOFT_CF_TEMPLATE_COPY_CONSTRUCTOR_TEMPLATE_OVERLOAD_DISCRIMINATED_AGAINST_NON_TEMPLATE_COPY_CONSTRUCTOR
00449 #endif
00450
00451
00452
00453
00454
00455 #if defined(_M_IX86)
00456 # define STSLSOFT_INLINE_ASM_SUPPORTED
00457 # define STSLSOFT_ASM_IN_INLINE_SUPPORTED
00458 #elif defined(_M_IA64) || \
00459 defined(_M_X64)
00460
00461 #endif
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475 #define STLSOFT_CF_THISCALL_SUPPORTED
00476
00477 #if defined(_M_IX86)
00478
00479 # define STLSOFT_CF_CDECL_SUPPORTED
00480 # ifndef _MANAGED
00481 # define STLSOFT_CF_FASTCALL_SUPPORTED
00482 # endif
00483 # define STLSOFT_CF_STDCALL_SUPPORTED
00484
00485 # define STLSOFT_CDECL __cdecl
00486 # ifndef _MANAGED
00487 # define STLSOFT_FASTCALL __fastcall
00488 # endif
00489 # define STLSOFT_STDCALL __stdcall
00490
00491 #elif defined(_M_IA64) || \
00492 defined(_M_X64)
00493
00494 # define STLSOFT_CF_CDECL_SUPPORTED
00495
00496 # define STLSOFT_CDECL
00497
00498 #else
00499 # error Only defined for the Intel x86, IA64 and x64 architectures
00500 #endif
00501
00502
00503
00504
00505
00506 #define _STLSOFT_SIZEOF_CHAR (1)
00507 #define _STLSOFT_SIZEOF_SHORT (2)
00508 #define _STLSOFT_SIZEOF_INT (4)
00509 #define _STLSOFT_SIZEOF_LONG (4)
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534 #define STLSOFT_CF_8BIT_INT_SUPPORT
00535 #if _MSC_VER >= 1020
00536 # define STLSOFT_SI08_T_BASE_TYPE signed __int8
00537 # define STLSOFT_UI08_T_BASE_TYPE unsigned __int8
00538 # if _MSC_VER == 1200
00539 # define STLSOFT_CF_CHAR_DISTINCT_INT_TYPE
00540 # endif
00541 #else
00542 # define STLSOFT_SI08_T_BASE_TYPE signed char
00543 # define STLSOFT_UI08_T_BASE_TYPE unsigned char
00544 #endif
00545
00546
00547 #define STLSOFT_CF_16BIT_INT_SUPPORT
00548 #if _MSC_VER >= 1020
00549 # define STLSOFT_SI16_T_BASE_TYPE signed __int16
00550 # define STLSOFT_UI16_T_BASE_TYPE unsigned __int16
00551 # if _MSC_VER == 1200
00552 # define STLSOFT_CF_SHORT_DISTINCT_INT_TYPE
00553 # endif
00554 #else
00555 # define STLSOFT_SI16_T_BASE_TYPE signed short
00556 # define STLSOFT_UI16_T_BASE_TYPE unsigned short
00557 #endif
00558
00559
00560 #define STLSOFT_CF_32BIT_INT_SUPPORT
00561 #if _MSC_VER >= 1020
00562 # define STLSOFT_SI32_T_BASE_TYPE signed __int32
00563 # define STLSOFT_UI32_T_BASE_TYPE unsigned __int32
00564 # if _MSC_VER == 1200
00565 # define STLSOFT_CF_INT_DISTINCT_INT_TYPE
00566 # endif
00567 # define STLSOFT_CF_LONG_DISTINCT_INT_TYPE
00568 #else
00569 # define STLSOFT_SI32_T_BASE_TYPE signed long
00570 # define STLSOFT_UI32_T_BASE_TYPE unsigned long
00571 # define STLSOFT_CF_INT_DISTINCT_INT_TYPE
00572 #endif
00573
00574
00575 #if _MSC_VER >= 1020
00576 # define STLSOFT_CF_64BIT_INT_SUPPORT
00577 # define STLSOFT_CF_64BIT_INT_IS___int64
00578 # define STLSOFT_SI64_T_BASE_TYPE signed __int64
00579 # define STLSOFT_UI64_T_BASE_TYPE unsigned __int64
00580 #endif
00581
00582
00583
00584
00585
00586
00587 #if _MSC_VER >= 1300
00588
00589
00590
00591
00592
00593
00594 # ifdef _NATIVE_WCHAR_T_DEFINED
00595 # define STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT
00596
00597 # elif defined(_WCHAR_T_DEFINED)
00598 # define STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT
00599 # else
00600
00601 # define STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT
00602 # endif
00603 #else
00604
00605
00606
00607 # if defined(_WCHAR_T_DEFINED)
00608 # define STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT
00609 # endif
00610 #endif
00611
00612
00613 #if ( _MSC_VER >= 1100 && \
00614 _MSC_VER < 1310) || \
00615 _MSC_VER >= 1500
00616 # define STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
00617 #endif
00618
00619 #if _MSC_VER >= 1100
00620 # define STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
00621 #else
00622
00623 # ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
00624 # undef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
00625 # endif
00626 #endif
00627
00628
00629 #if _MSC_VER >= 1100
00630 # define STLSOFT_CF_std_NAMESPACE
00631 #endif
00632
00633 #define STLSOFT_CF_std_char_traits_AVAILABLE
00634
00635 #if _MSC_VER >= 1100
00636 # define STLSOFT_CF_PARENT_TYPES_CAN_BE_USED_IN_NON_TEMPLATE
00637 # define STLSOFT_CF_PARENT_TYPES_CAN_BE_USED_IN_TEMPLATE
00638 #endif
00639
00640
00641
00642 #define STLSOFT_CF_VENEER_SUPPORT
00643
00644 #if !defined(_ATL_MIN_CRT)
00645 # define STLSOFT_CF_ALLOCATOR_BASE_EXPENSIVE
00646 #endif
00647
00648
00649
00650
00651
00652 #if _MSC_VER < 1100
00653 # define STLSOFT_CF_TEMPLATE_SHIMS_NOT_SUPPORTED
00654 #endif
00655
00656
00657
00658
00659
00660
00661 #if defined(_STLSOFT_CUSTOM_ASSERT)
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684 # define __STLSOFT_CF_ASSERT_SUPPORT
00685 # define STLSOFT_CF_ASSERT_SUPPORT
00686 # define STLSOFT_ASSERT(_x) _STLSOFT_CUSTOM_ASSERT(_x)
00687 # if defined(_STLSOFT_CUSTOM_ASSERT_INCLUDE)
00688 # define __STLSOFT_CF_ASSERT_INCLUDE_NAME _STLSOFT_CUSTOM_ASSERT_INCLUDE
00689 # else
00690 # error You must define _STLSOFT_CUSTOM_ASSERT_INCLUDE along with _STLSOFT_CUSTOM_ASSERT()
00691 # endif
00692 #else
00693 # define __STLSOFT_CF_ASSERT_SUPPORT
00694 # define STLSOFT_CF_ASSERT_SUPPORT
00695
00696 # define __STLSOFT_CF_ASSERT_INCLUDE_NAME <crtdbg.h>
00697 # define STLSOFT_ASSERT(_x) _ASSERTE(_x)
00698 #endif
00699
00700
00701
00702
00703
00704
00705 #pragma warning(disable : 4042)
00706
00707
00708 #pragma warning(disable : 4097)
00709
00710
00711 #pragma warning(disable : 4127)
00712
00713
00714 #pragma warning(disable : 4181)
00715
00716
00717 #if _MSC_VER < 1200
00718 # pragma warning(disable : 4190)
00719 #endif
00720
00721
00722 #pragma warning(disable : 4201)
00723
00724
00725 #if _MSC_VER < 1100
00726 # pragma warning(disable : 4237)
00727 #endif
00728
00729
00730 #if _MSC_VER < 1300
00731 # pragma warning(disable : 4284)
00732 #endif
00733
00734
00735 #pragma warning(disable : 4290)
00736
00737 #if defined(_MSC_EXTENSIONS)
00738
00739 # pragma warning(disable : 4239)
00740 #endif
00741
00742
00743 #pragma warning(disable : 4503)
00744
00745 #if _MSC_VER < 1300 && \
00746 !defined(STLSOFT_STRICT)
00747 # pragma warning(disable : 4512)
00748 #endif
00749
00750
00751 #pragma warning(disable : 4514)
00752
00753 #if _MSC_VER >= 1310
00754
00755 # pragma warning(disable : 4548)
00756
00757
00758 # pragma warning(disable: 4619)
00759 #endif
00760
00761
00762 #if _MSC_VER < 1310
00763 # pragma warning(disable : 4663)
00764 #endif
00765
00766
00767 #if _MSC_VER >= 1310
00768 # pragma warning(disable : 4675)
00769 #endif
00770
00771
00772 #pragma warning(disable : 4710)
00773
00774
00775 #pragma warning(disable : 4786)
00776
00777 #if _MSC_VER >= 1310
00778
00779 # pragma warning(disable : 4820)
00780 #endif
00781
00782 #if _MSC_VER < 1300
00783 # ifdef __cplusplus
00784 # include <functional>
00785 # endif
00786 # pragma warning(disable : 4663)
00787 # ifdef __cplusplus
00788 # include <utility>
00789 # endif
00790 # pragma warning(disable : 4284)
00791 #endif
00792
00793 #if _MSC_VER < 1300 && \
00794 defined(__cplusplus) && \
00795 defined(_DEBUG)
00796 # include <cstddef>
00797 # ifdef _XSTDDEF_
00798 # undef _TRY_BEGIN
00799 # define _TRY_BEGIN if(1) {
00800 # undef _CATCH
00801 # define _CATCH(x) } else {
00802 # undef _CATCH_ALL
00803 # define _CATCH_ALL } else {
00804 # undef _CATCH_END
00805 # define _CATCH_END }
00806 # endif
00807 #endif
00808
00809
00810
00811
00812
00813 #include <stlsoft/internal/cccap/obsolete.h>
00814
00815