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 #define STLSOFT_INCL_STLSOFT_H_STLSOFT
00046 #define STLSOFT_INCL_H_STLSOFT
00048 #if defined(__STLSOFT_DOCUMENTATION_SKIP_SECTION) && \
00049 !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00050 # define STLSOFT_DOCUMENTATION_SKIP_SECTION
00051 #endif
00052
00053
00054 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00055 # define STLSOFT_VER_STLSOFT_H_STLSOFT_MAJOR 3
00056 # define STLSOFT_VER_STLSOFT_H_STLSOFT_MINOR 22
00057 # define STLSOFT_VER_STLSOFT_H_STLSOFT_REVISION 4
00058 # define STLSOFT_VER_STLSOFT_H_STLSOFT_EDIT 405
00059 #else
00060
00061 #endif
00062
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00121 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00122 # define _STLSOFT_VER_1_0_1 0x00010001
00123 # define _STLSOFT_VER_1_0_2 0x00010002
00124 # define _STLSOFT_VER_1_1_1 0x00010101
00125 # define _STLSOFT_VER_1_1_2 0x00010102
00126 # define _STLSOFT_VER_1_1_3 0x00010103
00127 # define _STLSOFT_VER_1_2_1 0x00010201
00128 # define _STLSOFT_VER_1_3_1 0x00010301
00129 # define _STLSOFT_VER_1_3_2 0x00010302
00130 # define _STLSOFT_VER_1_4_1 0x00010401
00131 # define _STLSOFT_VER_1_4_2 0x00010402
00132 # define _STLSOFT_VER_1_4_3 0x00010403
00133 # define _STLSOFT_VER_1_4_4 0x00010404
00134 # define _STLSOFT_VER_1_4_5 0x00010405
00135 # define _STLSOFT_VER_1_4_6 0x00010406
00136 # define _STLSOFT_VER_1_5_1 0x00010501
00137 # define _STLSOFT_VER_1_5_2 0x00010502
00138 # define _STLSOFT_VER_1_6_1 0x00010601
00139 # define _STLSOFT_VER_1_6_2 0x00010602
00140 # define _STLSOFT_VER_1_6_3 0x00010603
00141 # define _STLSOFT_VER_1_6_4 0x00010604
00142 # define _STLSOFT_VER_1_6_5 0x00010605
00143 # define _STLSOFT_VER_1_6_6 0x00010606
00144 # define _STLSOFT_VER_1_7_1 0x00010701
00145 # define _STLSOFT_VER_1_7_2 0x00010702
00146 # define _STLSOFT_VER_1_8_1 0x00010801
00147 # define _STLSOFT_VER_1_8_2 0x00010802
00148 # define _STLSOFT_VER_1_8_3 0x00010803
00149 # define _STLSOFT_VER_1_8_4 0x00010804
00150 # define _STLSOFT_VER_1_8_5 0x00010805
00151 # define _STLSOFT_VER_1_8_6 0x00010806
00152 # define _STLSOFT_VER_1_8_7 0x00010807
00153 # define _STLSOFT_VER_1_8_8 0x00010808
00154 # define _STLSOFT_VER_1_8_9 0x00010809
00155 # define _STLSOFT_VER_1_9_1_B13 0x0109010d
00156 # define _STLSOFT_VER_1_9_1_B20 0x01090114
00157 # define _STLSOFT_VER_1_9_1_B22 0x01090116
00158 # define _STLSOFT_VER_1_9_1_B28 0x0109011c
00159 # define _STLSOFT_VER_1_9_1_B29 0x0109011d
00160 # define _STLSOFT_VER_1_9_1_B33 0x01090121
00161 # define _STLSOFT_VER_1_9_1_B34 0x01090122
00162 # define _STLSOFT_VER_1_9_1_B37 0x01090125
00163 # define _STLSOFT_VER_1_9_1_B40 0x01090128
00164 # define _STLSOFT_VER_1_9_1_B41 0x01090129
00165 # define _STLSOFT_VER_1_9_1_B42 0x0109012a
00166 # define _STLSOFT_VER_1_9_1_B45 0x0109012d
00167 # define _STLSOFT_VER_1_9_1_B47 0x0109012f
00168 # define _STLSOFT_VER_1_9_1_B48 0x01090130
00169 # define _STLSOFT_VER_1_9_1 0x010901ff
00170 # define _STLSOFT_VER_1_9_2 0x010902ff
00171 # define _STLSOFT_VER_1_9_3 0x010903ff
00172 # define _STLSOFT_VER_1_9_4 0x010904ff
00173 # define _STLSOFT_VER_1_9_5 0x010905ff
00174 # define _STLSOFT_VER_1_9_6 0x010906ff
00175 # define _STLSOFT_VER_1_9_7 0x010907ff
00176 # define _STLSOFT_VER_1_9_8 0x010908ff
00177 # define _STLSOFT_VER_1_9_9 0x010909ff
00178 # define _STLSOFT_VER_1_9_10 0x01090aff
00179 # define _STLSOFT_VER_1_9_11 0x01090bff
00180 # define _STLSOFT_VER_1_9_12 0x01090cff
00181 # define _STLSOFT_VER_1_9_13 0x01090dff
00182 # define _STLSOFT_VER_1_9_14 0x01090eff
00183 # define _STLSOFT_VER_1_9_15 0x01090fff
00184 # define _STLSOFT_VER_1_9_16 0x010910ff
00185 # define _STLSOFT_VER_1_9_17 0x010911ff
00186 # define _STLSOFT_VER_1_9_18 0x010912ff
00187 # define _STLSOFT_VER_1_9_19 0x010913ff
00188 # define _STLSOFT_VER_1_9_20 0x010914ff
00189 # define _STLSOFT_VER_1_9_21 0x010915ff
00190 # define _STLSOFT_VER_1_9_22 0x010916ff
00191 # define _STLSOFT_VER_1_9_23 0x010917ff
00192 # define _STLSOFT_VER_1_9_24 0x010918ff
00193 # define _STLSOFT_VER_1_9_25 0x010919ff
00194 # define _STLSOFT_VER_1_9_26 0x01091aff
00195 # define _STLSOFT_VER_1_9_27 0x01091bff
00196 # define _STLSOFT_VER_1_9_28 0x01091cff
00197 # define _STLSOFT_VER_1_9_29 0x01091dff
00198 # define _STLSOFT_VER_1_9_30 0x01091eff
00199 # define _STLSOFT_VER_1_9_31 0x01091fff
00200 # define _STLSOFT_VER_1_9_32 0x010920ff
00201 # define _STLSOFT_VER_1_9_33 0x010921ff
00202 # define _STLSOFT_VER_1_9_34 0x010922ff
00203 # define _STLSOFT_VER_1_9_35 0x010923ff
00204 # define _STLSOFT_VER_1_9_36 0x010924ff
00205 # define _STLSOFT_VER_1_9_37 0x010925ff
00206 # define _STLSOFT_VER_1_9_38 0x010926ff
00207 # define _STLSOFT_VER_1_9_39 0x010927ff
00208 # define _STLSOFT_VER_1_9_40 0x010928ff
00209 # define _STLSOFT_VER_1_9_41 0x010929ff
00210 # define _STLSOFT_VER_1_9_42 0x01092aff
00211 # define _STLSOFT_VER_1_9_43 0x01092bff
00212 # define _STLSOFT_VER_1_9_44 0x01092cff
00213 # define _STLSOFT_VER_1_9_45 0x01092dff
00214 # define _STLSOFT_VER_1_9_46 0x01092eff
00215 # define _STLSOFT_VER_1_9_48 0x010930ff
00216 # define _STLSOFT_VER_1_9_49 0x010931ff
00217 # define _STLSOFT_VER_1_9_50 0x010932ff
00218 # define _STLSOFT_VER_1_9_51 0x010933ff
00219 # define _STLSOFT_VER_1_9_52 0x010934ff
00220 # define _STLSOFT_VER_1_9_53 0x010935ff
00221 # define _STLSOFT_VER_1_9_54 0x010936ff
00222 # define _STLSOFT_VER_1_9_55 0x010937ff
00223 # define _STLSOFT_VER_1_9_56 0x010938ff
00224 # define _STLSOFT_VER_1_9_57 0x010939ff
00225 # define _STLSOFT_VER_1_9_58 0x01093aff
00226 # define _STLSOFT_VER_1_9_59 0x01093bff
00227 # define _STLSOFT_VER_1_9_60 0x01093cff
00228 # define _STLSOFT_VER_1_9_62 0x01093eff
00229 # define _STLSOFT_VER_1_9_63 0x01093fff
00230 # define _STLSOFT_VER_1_9_64 0x010940ff
00231 # define _STLSOFT_VER_1_9_65 0x010941ff
00232 # define _STLSOFT_VER_1_9_66 0x010942ff
00233 # define _STLSOFT_VER_1_9_67 0x010943ff
00234 # define _STLSOFT_VER_1_9_68 0x010944ff
00235 # define _STLSOFT_VER_1_9_69 0x010945ff
00236 # define _STLSOFT_VER_1_9_70 0x010946ff
00237 # define _STLSOFT_VER_1_9_71 0x010947ff
00238 # define _STLSOFT_VER_1_9_72 0x010948ff
00239 # define _STLSOFT_VER_1_9_73 0x010949ff
00240 # define _STLSOFT_VER_1_9_74 0x01094aff
00241 # define _STLSOFT_VER_1_9_75 0x01094bff
00242 # define _STLSOFT_VER_1_9_76 0x01094cff
00243 # define _STLSOFT_VER_1_9_77 0x01094dff
00244 # define _STLSOFT_VER_1_9_78 0x01094eff
00245 # define _STLSOFT_VER_1_9_79 0x01094fff
00246 # define _STLSOFT_VER_1_9_80 0x010950ff
00247 # define _STLSOFT_VER_1_9_81 0x010951ff
00248 # define _STLSOFT_VER_1_9_82 0x010952ff
00249 # define _STLSOFT_VER_1_9_83 0x010953ff
00250 # define _STLSOFT_VER_1_9_84 0x010954ff
00251 # define _STLSOFT_VER_1_9_85 0x010955ff
00252 # define _STLSOFT_VER_1_9_86 0x010956ff
00253 # define _STLSOFT_VER_1_9_87 0x010957ff
00254 # define _STLSOFT_VER_1_9_88 0x010958ff
00255 # define _STLSOFT_VER_1_9_89 0x010959ff
00256 # define _STLSOFT_VER_1_9_90 0x01095aff
00257 # define _STLSOFT_VER_1_9_91 0x01095bff
00258 # define _STLSOFT_VER_1_9_92 0x01095cff
00259 # define _STLSOFT_VER_1_9_93 0x01095dff
00260 # define _STLSOFT_VER_1_9_95 0x01095fff
00261 # define _STLSOFT_VER_1_9_96 0x010960ff
00262 # define _STLSOFT_VER_1_9_97 0x010961ff
00263 # define _STLSOFT_VER_1_9_98 0x010962ff
00264 #endif
00265
00266 #define _STLSOFT_VER_MAJOR 1
00267 #define _STLSOFT_VER_MINOR 9
00268 #define _STLSOFT_VER_REVISION 98
00269 #define _STLSOFT_VER _STLSOFT_VER_1_9_98
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00282
00283 # define STLSOFT_STRINGIZE_a_(x) #x
00284 # define STLSOFT_STRINGIZE_a(x) STLSOFT_STRINGIZE_a_(x)
00285
00286 # if defined(__BORLANDC__) || \
00287 defined(__SUNPRO_C)
00288 # define STLSOFT_STRINGIZE_w_(x) L"" ## STLSOFT_STRINGIZE_a(x)
00289 # else
00290 # define STLSOFT_STRINGIZE_w_(x) L ## #x
00291 # endif
00292 # define STLSOFT_STRINGIZE_w(x) STLSOFT_STRINGIZE_w_(x)
00293
00294 # define STLSOFT_STRINGIZE(x) STLSOFT_STRINGIZE_a(x)
00295
00296
00297 # define STLSOFT_MACRO_INDIRECT(x) x
00298
00299
00300 # define STLSOFT_PP_PASTE_2_TOKENS(t1, t2) t1 ## t2
00301 # define STLSOFT_PP_PASTE_3_TOKENS(t1, t2, t3) t1 ## t2 ## t3
00302
00303 #endif
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325 #ifdef STLSOFT_COMPILER_IS_UNKNOWN
00326 # undef STLSOFT_COMPILER_IS_UNKNOWN
00327 #endif
00328
00329 #ifdef STLSOFT_COMPILER_IS_BORLAND
00330 # undef STLSOFT_COMPILER_IS_BORLAND
00331 #endif
00332
00333 #ifdef STLSOFT_COMPILER_IS_COMO
00334 # undef STLSOFT_COMPILER_IS_COMO
00335 #endif
00336
00337 #ifdef STLSOFT_COMPILER_IS_DMC
00338 # undef STLSOFT_COMPILER_IS_DMC
00339 #endif
00340
00341 #ifdef STLSOFT_COMPILER_IS_GCC
00342 # undef STLSOFT_COMPILER_IS_GCC
00343 #endif
00344
00345 #ifdef STLSOFT_COMPILER_IS_INTEL
00346 # undef STLSOFT_COMPILER_IS_INTEL
00347 #endif
00348
00349 #ifdef STLSOFT_COMPILER_IS_MSVC
00350 # undef STLSOFT_COMPILER_IS_MSVC
00351 #endif
00352
00353 #ifdef STLSOFT_COMPILER_IS_MWERKS
00354 # undef STLSOFT_COMPILER_IS_MWERKS
00355 #endif
00356
00357 #ifdef STLSOFT_COMPILER_IS_SUNPRO
00358 # undef STLSOFT_COMPILER_IS_SUNPRO
00359 #endif
00360
00361 #ifdef STLSOFT_COMPILER_IS_VECTORC
00362 # undef STLSOFT_COMPILER_IS_VECTORC
00363 #endif
00364
00365 #ifdef STLSOFT_COMPILER_IS_WATCOM
00366 # undef STLSOFT_COMPILER_IS_WATCOM
00367 #endif
00368
00369
00370
00371
00372 #if defined(_STLSOFT_STRICT) && \
00373 !defined(STLSOFT_STRICT)
00374 # define STLSOFT_STRICT
00375 #endif
00376
00377
00378
00379
00380
00381 #ifdef _MSC_VER
00382 # if defined(__BORLANDC__) || \
00383 defined(__COMO__) || \
00384 defined(__DMC__) || \
00385 defined(__GNUC__) || \
00386 defined(__INTEL_COMPILER) || \
00387 defined(__MWERKS__) || \
00388 defined(__SUNPRO_C) || \
00389 defined(__SUNPRO_CC) || \
00390 defined(__VECTORC) || \
00391 defined(__WATCOMC__)
00392
00393 # if defined(_STLSOFT_NO_MSC_VER_SUPPORT) || \
00394 ( defined(STLSOFT_STRICT) && \
00395 !defined(_STLSOFT_MSC_VER_SUPPORT))
00396 # undef _MSC_VER
00397 # endif
00398 # endif
00399 #endif
00400
00401 #if defined(_STLSOFT_FORCE_CUSTOM_COMPILER)
00402 # define STLSOFT_COMPILER_LABEL_STRING "Custom (forced) compiler"
00403 # define STLSOFT_COMPILER_VERSION_STRING "Custom (forced) compiler"
00404 # define STLSOFT_COMPILER_IS_CUSTOM
00405 # ifndef __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME
00406 # error When using the custom compiler option you must define the symbol __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME, e.g. #define __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME <stlsoft/internal/cccap/my_compiler.h>
00407 # endif
00408
00409 #elif defined(__COMO__)
00410
00411 # define STLSOFT_COMPILER_IS_COMO
00412 # define STLSOFT_COMPILER_LABEL_STRING "Comeau C++"
00413 # if __COMO_VERSION__ < 4300
00414 # error Only versions 4.3.0.1 and later of Comeau C++ compiler is supported by the STLSoft libraries
00415 # elif (__COMO_VERSION__ == 4300)
00416 # define STLSOFT_COMPILER_VERSION_STRING "Comeau C++ 4.3.0.1"
00417 # elif (__COMO_VERSION__ == 4303)
00418 # define STLSOFT_COMPILER_VERSION_STRING "Comeau C++ 4.3.3"
00419 # else
00420 # define STLSOFT_COMPILER_VERSION_STRING "Unknown version of Comeau C++"
00421 # endif
00422
00423 #elif defined(__BORLANDC__)
00424
00425 # define STLSOFT_COMPILER_IS_BORLAND
00426 # define STLSOFT_COMPILER_LABEL_STRING "Borland C/C++"
00427 # if 0
00428 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 4.52"
00429 # elif 0
00430 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.5"
00431 # elif (__BORLANDC__ == 0x0551)
00432 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.51"
00433 # elif (__BORLANDC__ == 0x0560)
00434 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.6"
00435 # elif (__BORLANDC__ == 0x0564)
00436 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.6.4 (C++ BuilderX)"
00437 # elif (__BORLANDC__ == 0x0582)
00438 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.82 (Turbo C++)"
00439 # elif (0x0590 == (__BORLANDC__ & 0xfff0))
00440 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 5.9.x"
00441 # elif (0x0610 == (__BORLANDC__ & 0xfff0))
00442 # define STLSOFT_COMPILER_VERSION_STRING "Borland C++ 6.1.x (C++ Builder)"
00443 # else
00444 # error Currently only versions 5.51, 5.6, 5.6.4, 5.8.2, 5.9.x, and 6.1.x of the Borland C++ compiler are supported by the STLSoft libraries
00445 # endif
00446
00447 #elif defined(__DMC__)
00448
00449 # define STLSOFT_COMPILER_IS_DMC
00450 # define STLSOFT_COMPILER_LABEL_STRING "Digital Mars C/C++"
00451 # if (__DMC__ < 0x0826)
00452 # error Only versions 8.26 and later of the Digital Mars C/C++ compilers are supported by the STLSoft libraries
00453 # else
00454 # if __DMC__ >= 0x0832
00455 # define STLSOFT_COMPILER_VERSION_STRING __DMC_VERSION_STRING__
00456 # elif (__DMC__ == 0x0826)
00457 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.26"
00458 # elif (__DMC__ == 0x0827)
00459 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.27"
00460 # elif (__DMC__ == 0x0828)
00461 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.28"
00462 # elif (__DMC__ == 0x0829)
00463 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.29"
00464 # elif (__DMC__ == 0x0830)
00465 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.30"
00466 # elif (__DMC__ == 0x0831)
00467 # define STLSOFT_COMPILER_VERSION_STRING "Digital Mars C/C++ 8.31"
00468 # endif
00469 # endif
00470
00471 #elif defined(__GNUC__)
00472
00473 # define STLSOFT_COMPILER_IS_GCC
00474 # define STLSOFT_COMPILER_LABEL_STRING "GNU C/C++"
00475 # if __GNUC__ != 2 && \
00476 __GNUC__ != 3 && \
00477 __GNUC__ != 4
00478 # error GNU C/C++ compilers whose major version is not 2, 3 or 4 are not currently supported by the STLSoft libraries
00479 # elif __GNUC__ == 2
00480 # if __GNUC_MINOR__ < 95
00481 # error Currently only version 2.95 and above of the GNU C/C++ compiler is supported by the STLSoft libraries
00482 # elif __GNUC_MINOR__ == 95
00483 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 2.95"
00484 # elif __GNUC_MINOR__ == 96
00485 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 2.96"
00486 # else
00487 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ >2.96 - you should be aware that this version may not be supported correctly"
00488 # endif
00489 # elif __GNUC__ == 3
00490 # if __GNUC_MINOR__ == 2
00491 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 3.2"
00492 # elif __GNUC_MINOR__ == 3
00493 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 3.3"
00494 # elif __GNUC_MINOR__ == 4
00495 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 3.4"
00496 # else
00497 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ >3.4 - you should be aware that this version may not be supported correctly"
00498 # endif
00499 # elif __GNUC__ == 0
00500 # if __GNUC_MINOR__ == 0
00501 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ 4.0"
00502 # else
00503 # define STLSOFT_COMPILER_VERSION_STRING "GNU C/C++ >4.0 - you should be aware that this version may not be supported correctly"
00504 # endif
00505 # endif
00506
00507 #elif defined(__INTEL_COMPILER)
00508
00509 # define STLSOFT_COMPILER_IS_INTEL
00510 # define STLSOFT_COMPILER_LABEL_STRING "Intel C/C++"
00511 # if (__INTEL_COMPILER == 600)
00512 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 6.0"
00513 # elif (__INTEL_COMPILER == 700)
00514 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 7.0"
00515 # elif (__INTEL_COMPILER == 800)
00516 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 8.0"
00517 # elif (__INTEL_COMPILER == 900)
00518 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 9.0"
00519 # elif (__INTEL_COMPILER == 1000)
00520 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 10.0"
00521 # elif (__INTEL_COMPILER == 1100)
00522 # define STLSOFT_COMPILER_VERSION_STRING "Intel C/C++ 11.0"
00523 # else
00524 # error Only Intel C++ Compiler versions 6.0, 7.0(/7.1), 8.0, 9.0, 10.0 and 11.0 currently supported by the STLSoft libraries
00525 # endif
00526
00527 #elif defined(__MWERKS__)
00528
00529 # define STLSOFT_COMPILER_IS_MWERKS
00530 # define STLSOFT_COMPILER_LABEL_STRING "Metrowerks CodeWarrior C/C++"
00531 # if ((__MWERKS__ & 0xFF00) == 0x2400)
00532 # define STLSOFT_COMPILER_VERSION_STRING "Metrowerks CodeWarrior C/C++ 2.4"
00533 # elif ((__MWERKS__ & 0xFF00) == 0x3000)
00534 # define STLSOFT_COMPILER_VERSION_STRING "Metrowerks CodeWarrior C/C++ 3.0"
00535 # elif ((__MWERKS__ & 0xFF00) == 0x3200)
00536 # define STLSOFT_COMPILER_VERSION_STRING "Metrowerks CodeWarrior C/C++ 3.2"
00537 # else
00538 # error Only Metrowerks C++ Compiler 2.4 (CodeWarrior 7), 3.0 (CodeWarrior 8) and 3.2 (CodeWarrior 9) currently supported by the STLSoft libraries
00539 # endif
00540
00541 #elif defined(__SUNPRO_C) || \
00542 defined(__SUNPRO_CC)
00543
00544
00545 # ifdef __cplusplus
00546 # ifdef __SUNPRO_C
00547 # error __SUNPRO_C should not be defined by the Sun C compiler in C++ compilation
00548 # endif
00549 # ifndef __SUNPRO_CC
00550 # error __SUNPRO_CC should be defined by the Sun C++ compiler in C++ compilation
00551 # endif
00552 # else
00553 # ifndef __SUNPRO_C
00554 # error __SUNPRO_C should be defined by the Sun C compiler in C compilation
00555 # endif
00556 # ifdef __SUNPRO_CC
00557 # error __SUNPRO_CC should not be defined by the Sun C++ compiler in C compilation
00558 # endif
00559 # endif
00560
00561 # define STLSOFT_COMPILER_IS_SUNPRO
00562 # ifdef __cplusplus
00563 # define STLSOFT_COMPILER_LABEL_STRING "Sun Pro C++"
00564 # if (0x0590 == (__SUNPRO_CC & 0xFFF0))
00565 # define STLSOFT_COMPILER_VERSION_STRING "Sun Pro C++ v5.9"
00566 # else
00567 # error Currently only version v5.9 of the Sun Pro C++ compiler is supported by the STLSoft libraries
00568 # endif
00569 # else
00570 # define STLSOFT_COMPILER_LABEL_STRING "Sun Pro C"
00571 # if (0x0590 == (__SUNPRO_C & 0xFFF0))
00572 # define STLSOFT_COMPILER_VERSION_STRING "Sun Pro C v5.9"
00573 # else
00574 # error Currently only version v5.9 of the Sun Pro C compiler is supported by the STLSoft libraries
00575 # endif
00576 # endif
00577
00578 #elif defined(__VECTORC)
00579
00580 # define STLSOFT_COMPILER_IS_VECTORC
00581 # define STLSOFT_COMPILER_LABEL_STRING "CodePlay VectorC C/C++"
00582 # if (__VECTORC == 1)
00583 # define STLSOFT_COMPILER_VERSION_STRING "CodePlay VectorC C/C++"
00584 # else
00585 # error Currently only versions of the CodePlay Vector C/C++ compiler defining __VECTORC == 1 are supported by the STLSoft libraries
00586 # endif
00587
00588 #elif defined(__WATCOMC__)
00589
00590 # define STLSOFT_COMPILER_IS_WATCOM
00591 # define STLSOFT_COMPILER_LABEL_STRING "Watcom C/C++"
00592
00593 # if (__WATCOMC__ == 1200)
00594 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.0"
00595 # elif (__WATCOMC__ == 1210)
00596 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.1"
00597 # elif (__WATCOMC__ == 1220)
00598 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.2"
00599 # elif (__WATCOMC__ == 1230)
00600 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.3"
00601 # elif (__WATCOMC__ == 1240)
00602 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.4"
00603 # elif (__WATCOMC__ == 1250)
00604 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.5"
00605 # elif (__WATCOMC__ == 1260)
00606 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.6"
00607 # elif (__WATCOMC__ == 1270)
00608 # define STLSOFT_COMPILER_VERSION_STRING "Open Watcom C/C++ 1.7"
00609 # else
00610 # error Currently only versions 1.0-1.7 of Open Watcom C/C++ are recognised by the STLSoft libraries
00611 # endif
00612
00613 #elif defined(_MSC_VER)
00614
00615 # define STLSOFT_COMPILER_IS_MSVC
00616 # define STLSOFT_COMPILER_LABEL_STRING "Visual C++"
00617 # if defined(STLSOFT_FORCE_MSVC_4_2) && (_MSC_VER == 1020)
00618 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 4.2"
00619 # elif (_MSC_VER == 1100)
00620 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 5.0"
00621 # elif (_MSC_VER == 1200)
00622 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 6.0"
00623 # elif (_MSC_VER == 1300)
00624 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 7.0"
00625 # elif (_MSC_VER == 1310)
00626 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 7.1"
00627 # elif (_MSC_VER == 1400)
00628 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 8.0"
00629 # elif (_MSC_VER == 1500)
00630 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 9.0"
00631 # elif (_MSC_VER == 1600)
00632 # define STLSOFT_COMPILER_VERSION_STRING "Visual C++ 10.0"
00633 # else
00634 # error Currently only versions 5.0, 6.0, 7.0, 7.1, 8.0, 9.0 and 10.0 of the Visual C++ compiler are supported by the STLSoft libraries
00635 # endif
00636
00637 #else
00638
00639 # if defined(_STLSOFT_FORCE_UNKNOWN_COMPILER) || \
00640 defined(_STLSOFT_FORCE_ANY_COMPILER)
00641 # define STLSOFT_COMPILER_LABEL_STRING "Unknown (forced) compiler"
00642 # define STLSOFT_COMPILER_VERSION_STRING "Unknown (forced) compiler"
00643 # define STLSOFT_COMPILER_IS_UNKNOWN
00644 # else
00645 # error Compiler is not recognised.
00646 # error Currently only Borland C++, Comeau C++, Digital Mars C/C++, GNU C/C++,
00647 # error Intel C/C++, Metrowerks CodeWarrior, Visual C++ and Watcom C/C++
00648 # error compilers are supported by the STLSoft libraries
00649 # error If you want to use the libraries with your compiler, you may specify the
00650 # error _STLSOFT_FORCE_CUSTOM_COMPILER or _STLSOFT_FORCE_ANY_COMPILER pre-processor
00651 # error symbols.
00652 # error _STLSOFT_FORCE_ANY_COMPILER assumes that your compiler can support all
00653 # error modern C++ compiler features, and causes the inclusion of the compiler
00654 # error features file stlsoft/internal/cccap/unknown.h, which is provided by STLSoft.
00655 # error _STLSOFT_FORCE_CUSTOM_COMPILER requires that you specify the name of the
00656 # error compiler features file in __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME.
00657 # error The idea is to use _STLSOFT_FORCE_ANY_COMPILER, to determine what language
00658 # error features your compiler can support, and then copy, edit and use that file
00659 # error via _STLSOFT_FORCE_CUSTOM_COMPILER and __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME.
00660 # endif
00661
00662 #endif
00663
00664 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
00665
00668 # define STLSOFT_COMPILER_LABEL_STRING "Acme Compiler"
00669
00672 # define STLSOFT_COMPILER_VERSION_STRING "Acme Compiler v1.0"
00673 #else
00674 # define __STLSOFT_COMPILER_LABEL_STRING STLSOFT_COMPILER_LABEL_STRING
00675 # define __STLSOFT_COMPILER_VERSION_STRING STLSOFT_COMPILER_VERSION_STRING
00676 #endif
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687 #if defined(_STLSOFT_INCLUDE_UNDEFS) || \
00688 ( defined(STLSOFT_STRICT) && \
00689 !defined(STLSOFT_NO_UNDEFS))
00690 # include <stlsoft/internal/_undefs.h>
00691 #endif
00692
00693
00694
00695 #if defined(STLSOFT_COMPILER_IS_CUSTOM)
00696 # include __STLSOFT_CF_CUSTOM_COMPILER_INCLUDE_NAME
00697 #elif defined(STLSOFT_COMPILER_IS_UNKNOWN)
00698 # include <stlsoft/internal/cccap/unknown.h>
00699 #elif defined(STLSOFT_COMPILER_IS_BORLAND)
00700 # include <stlsoft/internal/cccap/borland.h>
00701 #elif defined(STLSOFT_COMPILER_IS_COMO)
00702 # include <stlsoft/internal/cccap/como.h>
00703 #elif defined(STLSOFT_COMPILER_IS_DMC)
00704 # include <stlsoft/internal/cccap/dmc.h>
00705 #elif defined(STLSOFT_COMPILER_IS_GCC)
00706 # include <stlsoft/internal/cccap/gcc.h>
00707 #elif defined(STLSOFT_COMPILER_IS_INTEL)
00708 # include <stlsoft/internal/cccap/intel.h>
00709 #elif defined(STLSOFT_COMPILER_IS_MSVC)
00710 # include <stlsoft/internal/cccap/msvc.h>
00711 #elif defined(STLSOFT_COMPILER_IS_MWERKS)
00712 # include <stlsoft/internal/cccap/mwerks.h>
00713 #elif defined(STLSOFT_COMPILER_IS_SUNPRO)
00714 # include <stlsoft/internal/cccap/sunpro.h>
00715 #elif defined(STLSOFT_COMPILER_IS_VECTORC)
00716 # include <stlsoft/internal/cccap/vectorc.h>
00717 #elif defined(STLSOFT_COMPILER_IS_WATCOM)
00718 # include <stlsoft/internal/cccap/watcom.h>
00719 #else
00720 # error Compiler not correctly discriminated
00721 #endif
00722
00723 #if defined(_STLSOFT_COMPILE_VERBOSE) && \
00724 !defined(STLSOFT_CF_PRAGMA_MESSAGE_SUPPORT)
00725 # undef _STLSOFT_COMPILE_VERBOSE
00726 #endif
00727
00728 #if defined(STLSOFT_NO_COMPILE_VERBOSE) && \
00729 defined(_STLSOFT_COMPILE_VERBOSE)
00730 # undef _STLSOFT_COMPILE_VERBOSE
00731 #endif
00732
00733 #ifdef _STLSOFT_COMPILE_VERBOSE
00734 # pragma message(STLSOFT_COMPILER_VERSION_STRING)
00735 #endif
00736
00737
00738
00739
00748 #if defined(STLSOFT_CF_FUNCTION_SYMBOL_SUPPORT)
00749 # define STLSOFT_FUNCTION_SYMBOL __FUNCTION__
00750 #elif defined(STLSOFT_CF_func_SYMBOL_SUPPORT)
00751 # define STLSOFT_FUNCTION_SYMBOL __func__
00752 #endif
00753
00754
00755
00756
00757
00758
00759
00760 #ifndef _STLSOFT_SIZEOF_CHAR
00761 # error _STLSOFT_SIZEOF_CHAR not defined
00762 #endif
00763
00764 #ifndef _STLSOFT_SIZEOF_SHORT
00765 # error _STLSOFT_SIZEOF_SHORT not defined
00766 #endif
00767
00768 #ifndef _STLSOFT_SIZEOF_INT
00769 # error _STLSOFT_SIZEOF_INT not defined
00770 #endif
00771
00772 #ifndef _STLSOFT_SIZEOF_LONG
00773 # error _STLSOFT_SIZEOF_LONG not defined
00774 #endif
00775
00776 #ifdef STLSOFT_CF_BUILTIN_long_long_SUPPORT
00777 # ifndef _STLSOFT_SIZEOF_LONG_LONG
00778 # error _STLSOFT_SIZEOF_LONG_LONG not defined
00779 # endif
00780 #endif
00781
00782
00783
00784
00785
00786
00787
00788 #if defined(__cplusplus) && \
00789 !defined(STLSOFT_CF_TEMPLATE_SUPPORT)
00790 # error Template support not detected. STLSoft libraries are template-based and require this support.
00791 #endif
00792
00793
00794
00795 #if !defined(STLSOFT_CF_64BIT_INT_SUPPORT) && \
00796 ( defined(STLSOFT_CF_64BIT_INT_IS___int64) || \
00797 defined(STLSOFT_CF_64BIT_INT_IS_long_long))
00798 # error Definition for 64-bit support is not correct. STLSOFT_CF_64BIT_INT_SUPPORT must be defined for 64-bit support
00799 #endif
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826 # if defined(__STLSOFT_CF_EXCEPTION_SUPPORT) && \
00827 !defined(STLSOFT_CF_EXCEPTION_SUPPORT)
00828 # error Configuration error: deprecated symbol __STLSOFT_CF_EXCEPTION_SUPPORT is defined when STLSOFT_CF_EXCEPTION_SUPPORT is not!
00829 # else
00830 # ifdef STLSOFT_CF_EXCEPTION_SUPPORT
00831 # define __STLSOFT_CF_EXCEPTION_SUPPORT
00832 # endif
00833 # endif
00834
00835
00836
00837 # if defined(__STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT) && \
00838 !defined(STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT)
00839 # error Configuration error: deprecated symbol __STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT is defined when STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT is not!
00840 # else
00841 # ifdef STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT
00842 # define __STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT
00843 # endif
00844 # endif
00845
00846 #ifndef STLSOFT_CF_EXCEPTION_SUPPORT
00847
00852 # define STLSOFT_CF_NOTHROW_BAD_ALLOC
00853 #endif
00854
00855 #ifdef STLSOFT_CF_NOTHROW_BAD_ALLOC
00856 # ifdef STLSOFT_CF_THROW_BAD_ALLOC
00857 # undef STLSOFT_CF_THROW_BAD_ALLOC
00858 # endif
00859 #else
00860
00861 #endif
00862
00863
00864
00865
00866
00871 #ifdef STLSOFT_TEMPLATE_SPECIALISATION
00872 # undef STLSOFT_TEMPLATE_SPECIALISATION
00873 #endif
00874
00875 #ifdef STLSOFT_CF_TEMPLATE_SPECIALISATION_SYNTAX
00876 # define STLSOFT_TEMPLATE_SPECIALISATION template <>
00877 #else
00878 # define STLSOFT_TEMPLATE_SPECIALISATION
00879 #endif
00880
00881
00882
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897 #ifdef _STLSOFT_FORCE_ALL_KEYWORDS
00898 # define _STLSOFT_FORCE_KEYWORD_EXPLICIT
00899 # define _STLSOFT_FORCE_KEYWORD_MUTABLE
00900 # define _STLSOFT_FORCE_KEYWORD_TYPENAME
00901 #endif
00902
00903 #if !defined(STLSOFT_CF_EXPLICIT_KEYWORD_SUPPORT) && \
00904 defined(_STLSOFT_FORCE_KEYWORD_EXPLICIT)
00905 # define STLSOFT_CF_EXPLICIT_KEYWORD_SUPPORT
00906 #endif
00907
00908 #if !defined(STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT) && \
00909 defined(_STLSOFT_FORCE_KEYWORD_MUTABLE)
00910 # define STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT
00911 #endif
00912
00913 #if !defined(STLSOFT_CF_TYPENAME_PARAM_KEYWORD_SUPPORT) && \
00914 defined(_STLSOFT_FORCE_KEYWORD_TYPENAME)
00915 # define STLSOFT_CF_TYPENAME_PARAM_KEYWORD_SUPPORT
00916 #endif
00917
00918 #if !defined(STLSOFT_CF_TYPENAME_TYPE_KEYWORD_SUPPORT) && \
00919 defined(_STLSOFT_FORCE_KEYWORD_TYPENAME)
00920 # define STLSOFT_CF_TYPENAME_TYPE_KEYWORD_SUPPORT
00921 #endif
00922
00923 #if !defined(STLSOFT_CF_TYPENAME_TYPE_DEF_KEYWORD_SUPPORT) && \
00924 defined(_STLSOFT_FORCE_KEYWORD_TYPENAME)
00925 # define STLSOFT_CF_TYPENAME_TYPE_DEF_KEYWORD_SUPPORT
00926 #endif
00927
00928 #if !defined(STLSOFT_CF_TYPENAME_TYPE_MIL_KEYWORD_SUPPORT) && \
00929 defined(_STLSOFT_FORCE_KEYWORD_TYPENAME)
00930 # define STLSOFT_CF_TYPENAME_TYPE_MIL_KEYWORD_SUPPORT
00931 #endif
00932
00933 #if !defined(STLSOFT_CF_TYPENAME_TYPE_RET_KEYWORD_SUPPORT) && \
00934 defined(_STLSOFT_FORCE_KEYWORD_TYPENAME)
00935 # define STLSOFT_CF_TYPENAME_TYPE_RET_KEYWORD_SUPPORT
00936 #endif
00937
00938
00939
00940
00941
00942
00943
00944 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
00945
00949 # define STLSOFT_CF_CDECL_SUPPORTED
00950
00954 # define STLSOFT_CF_FASTCALL_SUPPORTED
00955
00959 # define STLSOFT_CF_STDCALL_SUPPORTED
00960
00961 #endif
00962
00963
00964
00965
00971 #if !defined(STLSOFT_CDECL)
00972 # define STLSOFT_CDECL
00973 #endif
00974
00979 #if !defined(STLSOFT_FASTCALL)
00980 # if defined(STLSOFT_CF_FASTCALL_SUPPORTED)
00981 # error Compiler discrimination must define STLSOFT_FASTCALL if STLSOFT_CF_FASTCALL_SUPPORTED is defined
00982 # else
00983 # define STLSOFT_FASTCALL
00984 # endif
00985 #endif
00986
00991 #if !defined(STLSOFT_STDCALL)
00992 # if defined(STLSOFT_CF_STDCALL_SUPPORTED)
00993 # error Compiler discrimination must define STLSOFT_STDCALL if STLSOFT_CF_STDCALL_SUPPORTED is defined
00994 # else
00995 # define STLSOFT_STDCALL
00996 # endif
00997 #endif
00998
00999
01000
01001
01002 #if defined(STLSOFT_CF_CDECL_SUPPORTED)
01003 # define STLSOFT_CDECL_VALUE (1)
01004 #endif
01005
01006 #if defined(STLSOFT_CF_FASTCALL_SUPPORTED)
01007 # define STLSOFT_FASTCALL_VALUE (2)
01008 #endif
01009
01010 #if defined(STLSOFT_CF_STDCALL_SUPPORTED)
01011 # define STLSOFT_STDCALL_VALUE (3)
01012 #endif
01013
01014
01015
01016
01017
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048 #if !defined(STLSOFT_CF_OPERATOR_BOOL_AS_OPERATOR_POINTER_TO_MEMBER_SUPPORT) && \
01049 defined(STLSOFT_CF_OPERATOR_NOT_VIA_OPERATOR_POINTER_TO_MEMBER_SUPPORT)
01050 # error Cannot rely on use of boolean as pointer to member for operator !
01051 # error Undefine STLSOFT_CF_OPERATOR_NOT_VIA_OPERATOR_POINTER_TO_MEMBER_SUPPORT when
01052 # error STLSOFT_CF_OPERATOR_BOOL_AS_OPERATOR_POINTER_TO_MEMBER_SUPPORT is not defined
01053 #endif
01054
01055
01056
01057
01058
01059
01060
01061
01062
01063
01064
01065
01066 #if ( defined(_ATLSTL_VER) && \
01067 _ATLSTL_VER <= 0x00010204) || \
01068 ( defined(_COMSTL_VER) && \
01069 _COMSTL_VER <= 0x00010201) || \
01070 ( defined(_MFCSTL_VER) && \
01071 _MFCSTL_VER <= 0x00010202) || \
01072 ( defined(_UNIXSTL_VER) && \
01073 _UNIXSTL_VER <= 0x00000901) || \
01074 ( defined(_WINSTL_VER) && \
01075 _WINSTL_VER <= 0x00010201)
01076 # ifdef STLSOFT_STRICT
01077 # error You are using an old version of one or more of ATLSTL, COMSTL, MFCSTL, UNIXSTL and WinSTL. Please upgrade all dependent projects in line with the STLSoft version you are using
01078 # else
01079 # ifdef STLSOFT_CF_PRAGMA_MESSAGE_SUPPORT
01080 # pragma message("You are using an old version of one or more of ATLSTL, COMSTL, MFCSTL, UNIXSTL and WinSTL. _STLSOFT_INCLUDE_OBSOLETE will be defined (but is not guaranteed to work!)")
01081 # endif
01082 # ifndef _STLSOFT_INCLUDE_OBSOLETE
01083 # define _STLSOFT_INCLUDE_OBSOLETE
01084 # endif
01085 # endif
01086 #endif
01087
01088
01089
01090
01091
01092 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
01093 # ifdef _STLSOFT_NO_STD_INCLUDES
01094 # undef _STLSOFT_NO_STD_INCLUDES
01095 # endif
01096 #endif
01097
01098 #ifndef _STLSOFT_NO_STD_INCLUDES
01099 # ifndef STLSOFT_INCL_H_STDDEF
01100 # define STLSOFT_INCL_H_STDDEF
01101 # include <stddef.h>
01102 # endif
01103 # ifndef STLSOFT_INCL_H_STDLIB
01104 # define STLSOFT_INCL_H_STDLIB
01105 # include <stdlib.h>
01106 # endif
01107 #endif
01108
01109
01110
01111
01112
01113
01114
01121 #if defined(_STLSOFT_NO_ASSERT) && \
01122 defined(STLSOFT_CF_ASSERT_SUPPORT)
01123 # undef STLSOFT_CF_ASSERT_SUPPORT
01124 #endif
01125
01139 #if defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01140 # define STLSOFT_ASSERT(ex) assert(ex)
01141 #elif defined(STLSOFT_CF_ASSERT_SUPPORT)
01142 # ifdef __STLSOFT_CF_USE_cassert
01143
01144 # ifdef __cplusplus
01145 # include <cassert>
01146 # else
01147 # include <assert.h>
01148 # endif
01149 # define STLSOFT_ASSERT(ex) assert(ex)
01150 # else
01151
01152
01153
01154 # ifndef __STLSOFT_CF_ASSERT_INCLUDE_NAME
01155 # error Must supply an assert include filename with custom or proprietary assertion mechanism
01156 # else
01157 # include __STLSOFT_CF_ASSERT_INCLUDE_NAME
01158 # endif
01159 # endif
01160 # if !defined(STLSOFT_ASSERT) && \
01161 defined(stlsoft_assert)
01162 # define STLSOFT_ASSERT stlsoft_assert
01163 # elif defined(STLSOFT_ASSERT) && \
01164 defined(stlsoft_assert)
01165 # error Your compiler discrimination file cannot define both STLSOFT_ASSERT and stlsoft_assert. The former is the new version, and replaces the latter
01166 # endif
01167 # ifndef STLSOFT_ASSERT
01168 # error If your compiler discrimination file supports assertions, it must define STLSOFT_ASSERT() (taking a single parameter)
01169 # endif
01170 #endif
01171
01172
01173 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
01174 # undef stlsoft_assert
01175 #endif
01176
01187 #ifndef stlsoft_assert
01188 # define stlsoft_assert(ex) STLSOFT_ASSERT(ex)
01189 #endif
01190
01191
01198 #if defined(STLSOFT_CF_ASSERT_SUPPORT)
01199 # if defined(__WATCOMC__)
01200 # define STLSOFT_MESSAGE_ASSERT(msg, ex) STLSOFT_ASSERT(ex)
01201 # elif defined(__COMO__) || \
01202 defined(__GNUC__) || \
01203 defined(__MWERKS__)
01204 # define STLSOFT_MESSAGE_ASSERT(msg, ex) STLSOFT_ASSERT((msg && (ex)))
01205 # else
01206 # define STLSOFT_MESSAGE_ASSERT(msg, ex) STLSOFT_ASSERT((msg, ex))
01207 # endif
01208 #else
01209 # define STLSOFT_MESSAGE_ASSERT(msg, ex)
01210 #endif
01211
01223 #define stlsoft_message_assert(msg, ex) STLSOFT_MESSAGE_ASSERT(msg, ex)
01224
01225
01232 #if defined(STLSOFT_CF_STATIC_ASSERT_SUPPORT)
01233 # if defined(STLSOFT_COMPILER_IS_GCC) || \
01234 defined(STLSOFT_COMPILER_IS_INTEL)
01235 # define STLSOFT_STATIC_ASSERT(ex) do { typedef int ai[(ex) ? 1 : -1]; } while(0)
01236 # else
01237 # define STLSOFT_STATIC_ASSERT(ex) do { typedef int ai[(ex) ? 1 : 0]; } while(0)
01238 # endif
01239 #else
01240 # define STLSOFT_STATIC_ASSERT(ex) STLSOFT_MESSAGE_ASSERT("Static assertion failed: ", (ex))
01241 #endif
01242
01253 #define stlsoft_static_assert(ex) STLSOFT_STATIC_ASSERT(ex)
01254
01257
01258
01259
01260
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273
01274
01275 #if !defined(__cplusplus)
01276 # if !defined(_STLSOFT_NO_NAMESPACES)
01277 # define _STLSOFT_NO_NAMESPACES
01278 # endif
01279 #endif
01280
01281
01282 #if defined(_STLSOFT_NO_NAMESPACES)
01283 # if !defined(_STLSOFT_NO_NAMESPACE)
01284 # define _STLSOFT_NO_NAMESPACE
01285 # endif
01286 #endif
01287
01288 #ifndef _STLSOFT_NO_NAMESPACE
01289
01310 namespace stlsoft
01311 {
01312 #endif
01313
01322 #if !defined(_STLSOFT_NO_NAMESPACE) || \
01323 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01324 # define stlsoft_ns_qual(x) ::stlsoft::x
01325 # define stlsoft_ns_using(x) using ::stlsoft::x;
01326 #else
01327 # define stlsoft_ns_qual(x) x
01328 # define stlsoft_ns_using(x)
01329 #endif
01330
01339 #if defined(STLSOFT_CF_std_NAMESPACE) || \
01340 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01341 # define stlsoft_ns_qual_std(x) ::std::x
01342 # define stlsoft_ns_qual_std_(x) std::x
01343 # define stlsoft_ns_using_std(x) using ::std::x;
01344 #else
01345 # define stlsoft_ns_qual_std(x) x
01346 # define stlsoft_ns_using_std(x)
01347 #endif
01348
01353 #if defined(__cplusplus) || \
01354 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01355 # define STLSOFT_NS_GLOBAL(x) ::x
01356 #else
01357 # define STLSOFT_NS_GLOBAL(x) x
01358 #endif
01359
01360
01361
01362
01363 #if !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION) && \
01364 !defined(_STLSOFT_NO_NAMESPACES)
01365 # define STLSOFT_OPEN_WORKER_NS_(ns) namespace ns {
01366 # define STLSOFT_CLOSE_WORKER_NS_(ns) }
01367 # define STLSOFT_WORKER_NS_QUAL_(ns, x) ns::x
01368 #else
01369 # define STLSOFT_OPEN_WORKER_NS_(ns)
01370 # define STLSOFT_CLOSE_WORKER_NS_(ns)
01371 # define STLSOFT_WORKER_NS_QUAL_(ns, x) x
01372 #endif
01373
01374
01375
01376
01377
01378 #if defined(STLSOFT_COMPILER_IS_MSVC) && \
01379 _MSC_VER >= 1310 && \
01380 !defined(_WIN64) && \
01381 defined(_Wp64)
01382 # define STLSOFT_WARN_64 __w64
01383 #else
01384 # define STLSOFT_WARN_64
01385 #endif
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
01397
01398
01399
01400 # if defined(__STLSOFT_CF_NATIVE_BOOL_SUPPORT) && \
01401 !defined(STLSOFT_CF_NATIVE_BOOL_SUPPORT)
01402 # error Configuration error: deprecated symbol __STLSOFT_CF_NATIVE_BOOL_SUPPORT is defined when STLSOFT_CF_NATIVE_BOOL_SUPPORT is not!
01403 # else
01404 # ifdef STLSOFT_CF_NATIVE_BOOL_SUPPORT
01405 # define __STLSOFT_CF_NATIVE_BOOL_SUPPORT
01406 # endif
01407 # endif
01408
01409
01410
01411 # if defined(__STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT) && \
01412 !defined(STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT)
01413 # error Configuration error: deprecated symbol __STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT is defined when STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT is not!
01414 # else
01415 # ifdef STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT
01416 # define __STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT
01417 # endif
01418 # endif
01419
01420
01421
01422 # if defined(__STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT) && \
01423 !defined(STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT)
01424 # error Configuration error: deprecated symbol __STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT is defined when STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT is not!
01425 # else
01426 # ifdef STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT
01427 # define __STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT
01428 # endif
01429 # endif
01430
01431
01432
01433 # if ( defined(STLSOFT_CF_INT_DISTINCT_TYPE) || \
01434 defined(__STLSOFT_CF_INT_DISTINCT_TYPE)) && \
01435 !defined(STLSOFT_CF_INT_DISTINCT_INT_TYPE)
01436 # error Configuration error: one or both of the deprecated symbols STLSOFT_CF_INT_DISTINCT_TYPE or __STLSOFT_CF_INT_DISTINCT_TYPE is defined when STLSOFT_CF_INT_DISTINCT_INT_TYPE is not!
01437 # else
01438 # ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
01439 # define STLSOFT_CF_INT_DISTINCT_TYPE
01440 # define __STLSOFT_CF_INT_DISTINCT_TYPE
01441 # endif
01442 # endif
01443
01444
01445
01446 # if ( defined(STLSOFT_CF_LONG_DISTINCT_TYPE) || \
01447 defined(__STLSOFT_CF_LONG_DISTINCT_TYPE)) && \
01448 !defined(STLSOFT_CF_LONG_DISTINCT_INT_TYPE)
01449 # error Configuration error: one or both of the deprecated symbols STLSOFT_CF_LONG_DISTINCT_TYPE or __STLSOFT_CF_LONG_DISTINCT_TYPE is defined when STLSOFT_CF_LONG_DISTINCT_INT_TYPE is not!
01450 # else
01451 # ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
01452 # define STLSOFT_CF_LONG_DISTINCT_TYPE
01453 # define __STLSOFT_CF_LONG_DISTINCT_TYPE
01454 # endif
01455 # endif
01456
01457
01458
01459
01460
01461
01462
01463
01464 #ifdef STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT
01465
01466 # ifndef STLSOFT_NATIVE_WCHAR_T
01467
01468 # define STLSOFT_WCHAR_T_BASE_TYPE_ wchar_t
01469 # else
01470
01471 # define STLSOFT_WCHAR_T_BASE_TYPE_ STLSOFT_NATIVE_WCHAR_T
01472 # endif
01473 #elif defined(STLSOFT_CF_TYPEDEF_WCHAR_T_SUPPORT)
01474 # define STLSOFT_WCHAR_T_BASE_TYPE_ wchar_t
01475 #else
01476
01477 # ifndef _STLSOFT_NO_STD_INCLUDES
01478 # define STLSOFT_WCHAR_T_BASE_TYPE_ wchar_t
01479 # else
01480 # define STLSOFT_WCHAR_T_BASE_TYPE_ unsigned short
01481 # endif
01482 #endif
01483
01484
01485 #ifdef STLSOFT_CF_8BIT_INT_SUPPORT
01486 typedef STLSOFT_SI08_T_BASE_TYPE STLSOFT_I_08_T_BASE_TYPE_;
01487 typedef STLSOFT_SI08_T_BASE_TYPE STLSOFT_SI08_T_BASE_TYPE_;
01488 typedef STLSOFT_UI08_T_BASE_TYPE STLSOFT_UI08_T_BASE_TYPE_;
01489 #else
01490 # error STLSoft requires 8-bit integer support
01491 #endif
01492
01493
01494 #ifdef STLSOFT_CF_16BIT_INT_SUPPORT
01495 typedef STLSOFT_SI16_T_BASE_TYPE STLSOFT_I_16_T_BASE_TYPE_;
01496 typedef STLSOFT_SI16_T_BASE_TYPE STLSOFT_SI16_T_BASE_TYPE_;
01497 typedef STLSOFT_UI16_T_BASE_TYPE STLSOFT_UI16_T_BASE_TYPE_;
01498 #else
01499 # error STLSoft requires 16-bit integer support
01500 #endif
01501
01502
01503 #ifdef STLSOFT_CF_32BIT_INT_SUPPORT
01504 typedef STLSOFT_SI32_T_BASE_TYPE STLSOFT_I_32_T_BASE_TYPE_;
01505 typedef STLSOFT_SI32_T_BASE_TYPE STLSOFT_SI32_T_BASE_TYPE_;
01506 typedef STLSOFT_UI32_T_BASE_TYPE STLSOFT_UI32_T_BASE_TYPE_;
01507 #else
01508 # error STLSoft requires 32-bit integer support
01509 #endif
01510
01511
01512 #ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01513 typedef STLSOFT_SI64_T_BASE_TYPE STLSOFT_I_64_T_BASE_TYPE_;
01514 typedef STLSOFT_SI64_T_BASE_TYPE STLSOFT_SI64_T_BASE_TYPE_;
01515 typedef STLSOFT_UI64_T_BASE_TYPE STLSOFT_UI64_T_BASE_TYPE_;
01516 #endif
01517
01518 #endif
01519
01520
01521
01522 typedef char ss_char_a_t;
01523 typedef STLSOFT_WCHAR_T_BASE_TYPE_ ss_char_w_t;
01524 typedef STLSOFT_I_08_T_BASE_TYPE_ ss_int8_t;
01525 typedef STLSOFT_SI08_T_BASE_TYPE_ ss_sint8_t;
01526 typedef STLSOFT_UI08_T_BASE_TYPE_ ss_uint8_t;
01527 typedef STLSOFT_I_16_T_BASE_TYPE_ ss_int16_t;
01528 typedef STLSOFT_SI16_T_BASE_TYPE_ ss_sint16_t;
01529 typedef STLSOFT_UI16_T_BASE_TYPE_ ss_uint16_t;
01530 typedef STLSOFT_I_32_T_BASE_TYPE_ ss_int32_t;
01531 typedef STLSOFT_SI32_T_BASE_TYPE_ ss_sint32_t;
01532 typedef STLSOFT_UI32_T_BASE_TYPE_ ss_uint32_t;
01533 #ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01534 typedef STLSOFT_I_64_T_BASE_TYPE_ ss_int64_t;
01535 typedef STLSOFT_SI64_T_BASE_TYPE_ ss_sint64_t;
01536 typedef STLSOFT_UI64_T_BASE_TYPE_ ss_uint64_t;
01537 #endif
01538 typedef short ss_short_t;
01539 typedef int STLSOFT_WARN_64 ss_int_t;
01540 typedef signed int STLSOFT_WARN_64 ss_sint_t;
01541 typedef unsigned int STLSOFT_WARN_64 ss_uint_t;
01542 typedef long STLSOFT_WARN_64 ss_long_t;
01543 typedef unsigned long STLSOFT_WARN_64 ss_ulong_t;
01544 typedef ss_uint8_t ss_byte_t;
01545 #if defined(__cplusplus)
01546 # ifdef STLSOFT_CF_NATIVE_BOOL_SUPPORT
01547 typedef bool ss_bool_t;
01548 # else
01549 typedef unsigned int ss_bool_t;
01550 # endif
01551 #endif
01552 #ifndef _STLSOFT_NO_STD_INCLUDES
01553 typedef ptrdiff_t ss_ptrdiff_t;
01554 typedef size_t STLSOFT_WARN_64 ss_size_t;
01555 #else
01556 typedef unsigned int STLSOFT_WARN_64 ss_size_t;
01557 typedef int ss_ptrdiff_t;
01558 #endif
01559 typedef long ss_streampos_t;
01560 typedef long ss_streamoff_t;
01562 #ifndef _STLSOFT_NO_NAMESPACE
01563 typedef ss_char_a_t char_a_t;
01564 typedef ss_char_w_t char_w_t;
01565 typedef ss_int8_t int8_t;
01566 typedef ss_sint8_t sint8_t;
01567 typedef ss_uint8_t uint8_t;
01568 typedef ss_int16_t int16_t;
01569 typedef ss_sint16_t sint16_t;
01570 typedef ss_uint16_t uint16_t;
01571 typedef ss_int32_t int32_t;
01572 typedef ss_sint32_t sint32_t;
01573 typedef ss_uint32_t uint32_t;
01574 # ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01575 typedef ss_int64_t int64_t;
01576 typedef ss_sint64_t sint64_t;
01577 typedef ss_uint64_t uint64_t;
01578 # endif
01579 typedef ss_short_t short_t;
01580 typedef ss_int_t STLSOFT_WARN_64 int_t;
01581 typedef ss_sint_t STLSOFT_WARN_64 sint_t;
01582 typedef ss_uint_t STLSOFT_WARN_64 uint_t;
01583 typedef ss_long_t STLSOFT_WARN_64 long_t;
01584 typedef ss_byte_t byte_t;
01585 #if defined(__cplusplus)
01586 typedef ss_bool_t bool_t;
01587 #endif
01588 # if !defined(STLSOFT_COMPILER_IS_DMC)
01589 typedef ss_streampos_t streampos_t;
01590 typedef ss_streamoff_t streamoff_t;
01591 # endif
01592 #endif
01593
01594
01595 #if 0
01596 template <ss_size_t N>
01597 struct uintp_traits;
01598
01599 STLSOFT_GEN_TRAIT_SPECIALISATION
01600 struct uintp_traits<1>
01601 {
01602 typedef uint8_t unsigned_type;
01603 }
01604
01605 typedef size_traits<sizeof(void*)>::signed_type sintp_t;
01606 typedef size_traits<sizeof(void*)>::unsigned_type uintp_t;
01607
01608 #endif
01609
01610
01611
01612 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
01613 # if defined(__cplusplus)
01614
01615 struct native_wchar_t_checker
01616 {
01617
01618
01619 void check(char)
01620 {}
01621 #ifdef STLSOFT_CF_NATIVE_WCHAR_T_SUPPORT
01622 void check(wchar_t)
01623 {}
01624 #endif
01625
01626
01627
01628 void check(ss_sint8_t)
01629 {}
01630 void check(ss_uint8_t)
01631 {}
01632 void check(ss_sint16_t)
01633 {}
01634 void check(ss_uint16_t)
01635 {}
01636 void check(ss_sint32_t)
01637 {}
01638 void check(ss_uint32_t)
01639 {}
01640 #ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01641 void check(ss_sint64_t)
01642 {}
01643 void check(ss_uint64_t)
01644 {}
01645 #endif
01646
01647
01648
01649 #ifdef STLSOFT_CF_CHAR_DISTINCT_INT_TYPE
01650 void check(signed char)
01651 {}
01652 void check(unsigned char)
01653 {}
01654 #endif
01655
01656 #ifdef STLSOFT_CF_SHORT_DISTINCT_INT_TYPE
01657 void check(signed short)
01658 {}
01659 void check(unsigned short)
01660 {}
01661 #endif
01662
01663 #ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
01664 void check(signed int)
01665 {}
01666 void check(unsigned int)
01667 {}
01668 #endif
01669
01670 #ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
01671 void check(signed long)
01672 {}
01673 void check(unsigned long)
01674 {}
01675 #endif
01676
01677 ~native_wchar_t_checker()
01678 {
01679
01680 check(char());
01681 check(wchar_t());
01682
01683
01684 check(ss_sint8_t());
01685 check(ss_uint8_t());
01686 check(ss_sint16_t());
01687 check(ss_uint16_t());
01688 check(ss_sint32_t());
01689 check(ss_uint32_t());
01690 #ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01691 check(ss_sint64_t());
01692 check(ss_uint64_t());
01693 #endif
01694
01695
01696 check(static_cast<signed char>(0));
01697 check(static_cast<unsigned char>(0));
01698 check(static_cast<signed short>(0));
01699 check(static_cast<unsigned short>(0));
01700 check(static_cast<signed int>(0));
01701 check(static_cast<unsigned int>(0));
01702 check(static_cast<signed long>(0));
01703 check(static_cast<unsigned long>(0));
01704 }
01705 };
01706
01707 struct stlsoft_size_checker
01708 {
01709 # ifdef STLSOFT_COMPILER_IS_GCC
01710 protected:
01711 # else
01712 private:
01713 # endif
01714 stlsoft_size_checker();
01715 ~stlsoft_size_checker()
01716 {
01717
01718 STLSOFT_STATIC_ASSERT(sizeof(ss_char_a_t) >= 1);
01719 STLSOFT_STATIC_ASSERT(sizeof(ss_char_w_t) >= 2);
01720
01721 STLSOFT_STATIC_ASSERT(sizeof(ss_int8_t) == 1);
01722 STLSOFT_STATIC_ASSERT(sizeof(ss_sint8_t) == sizeof(ss_int8_t));
01723 STLSOFT_STATIC_ASSERT(sizeof(ss_uint8_t) == sizeof(ss_int8_t));
01724
01725 STLSOFT_STATIC_ASSERT(sizeof(ss_int16_t) == 2);
01726 STLSOFT_STATIC_ASSERT(sizeof(ss_sint16_t) == sizeof(ss_int16_t));
01727 STLSOFT_STATIC_ASSERT(sizeof(ss_uint16_t) == sizeof(ss_int16_t));
01728
01729 STLSOFT_STATIC_ASSERT(sizeof(ss_int32_t) == 4);
01730 STLSOFT_STATIC_ASSERT(sizeof(ss_sint32_t) == sizeof(ss_int32_t));
01731 STLSOFT_STATIC_ASSERT(sizeof(ss_uint32_t) == sizeof(ss_int32_t));
01732
01733 # ifdef STLSOFT_CF_64BIT_INT_SUPPORT
01734 STLSOFT_STATIC_ASSERT(sizeof(ss_int64_t) == 8);
01735 STLSOFT_STATIC_ASSERT(sizeof(ss_sint64_t) == sizeof(ss_int64_t));
01736 STLSOFT_STATIC_ASSERT(sizeof(ss_uint64_t) == sizeof(ss_int64_t));
01737 # endif
01738
01739 STLSOFT_STATIC_ASSERT(sizeof(ss_int_t) >= 1);
01740 STLSOFT_STATIC_ASSERT(sizeof(ss_sint_t) == sizeof(ss_int_t));
01741 STLSOFT_STATIC_ASSERT(sizeof(ss_uint_t) == sizeof(ss_int_t));
01742 STLSOFT_STATIC_ASSERT(sizeof(ss_long_t) >= sizeof(ss_int_t));
01743
01744 STLSOFT_STATIC_ASSERT(sizeof(ss_byte_t) == 1);
01745
01746 STLSOFT_STATIC_ASSERT(sizeof(ss_bool_t) >= 1);
01747
01748 STLSOFT_STATIC_ASSERT(sizeof(ss_size_t) >= 1);
01749 STLSOFT_STATIC_ASSERT(sizeof(ss_ptrdiff_t) >= 1);
01750 STLSOFT_STATIC_ASSERT(sizeof(ss_streampos_t) >= 1);
01751 STLSOFT_STATIC_ASSERT(sizeof(ss_streamoff_t) >= 1);
01752 }
01753 };
01754 # endif
01755 #endif
01756
01757
01758
01759
01760
01761
01762
01763
01764
01765
01766
01767
01768
01769
01770
01771
01772
01773
01784 #if defined(STLSOFT_CF_EXPLICIT_KEYWORD_SUPPORT) || \
01785 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01786 # define ss_explicit_k explicit
01787 #else
01788 # define ss_explicit_k
01789 #endif
01790
01795 #if defined(STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT) || \
01796 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01797 # define ss_mutable_k mutable
01798 #else
01799 # define ss_mutable_k
01800 #endif
01801
01808 #if defined(STLSOFT_CF_TYPENAME_PARAM_KEYWORD_SUPPORT) || \
01809 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01810 # define ss_typename_param_k typename
01811 #else
01812 # define ss_typename_param_k class
01813 #endif
01814
01821 #if defined(STLSOFT_CF_TYPENAME_TYPE_KEYWORD_SUPPORT) || \
01822 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01823 # define ss_typename_type_k typename
01824 #else
01825 # define ss_typename_type_k
01826 #endif
01827
01835 #if defined(STLSOFT_CF_TYPENAME_TYPE_DEF_KEYWORD_SUPPORT) || \
01836 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01837 # define ss_typename_type_def_k typename
01838 #else
01839 # define ss_typename_type_def_k
01840 #endif
01841
01849 #if defined(STLSOFT_CF_TYPENAME_TYPE_MIL_KEYWORD_SUPPORT) || \
01850 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01851 # define ss_typename_type_mil_k typename
01852 #else
01853 # define ss_typename_type_mil_k
01854 #endif
01855
01863 #if defined(STLSOFT_CF_TYPENAME_TYPE_RET_KEYWORD_SUPPORT) || \
01864 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01865 # define ss_typename_type_ret_k typename
01866 #else
01867 # define ss_typename_type_ret_k
01868 #endif
01869
01874 #if defined(STLSOFT_CF_TEMPLATE_QUALIFIER_KEYWORD_SUPPORT) || \
01875 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
01876 # define ss_template_qual_k template
01877 #else
01878 # define ss_template_qual_k
01879 #endif
01880
01883
01884
01885
01886
01887
01888
01889
01890
01891 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
01892
01893 #ifdef STLSOFT_CF_NATIVE_BOOL_SUPPORT
01894 # define ss_true_v (true)
01895 # define ss_false_v (false)
01896 #else
01897 # define ss_true_v (1)
01898 # define ss_false_v (0)
01899 #endif
01900
01901 #endif
01902
01903
01904
01905
01906 #ifdef __cplusplus
01907
01915 # if defined(STLSOFT_COMPILER_IS_BORLAND)
01916
01917 template <ss_typename_param_k X>
01918 inline void throw_x(X const& x)
01919 {
01920 X x2(x);
01921
01922 throw x2;
01923 }
01924
01925 # define STLSOFT_THROW_X(x) stlsoft_ns_qual(throw_x)(x)
01926
01927 # else
01928
01929 template <ss_typename_param_k X>
01930 inline void throw_x(X const& x)
01931 # if defined(STLSOFT_COMPILER_IS_MSVC) && \
01932 _MSC_VER < 1200
01933 {
01934 X const* px = &x;
01935
01936 throw *px;
01937 }
01938 # else
01939 {
01940 throw x;
01941 }
01942 # endif
01943
01944 # define STLSOFT_THROW_X(x) stlsoft_ns_qual(throw_x)(x)
01945
01946 # endif
01947
01948 #endif
01949
01985
01986 #if !defined(STLSOFT_NO_USE_EXCEPTION_SPECIFICATIONS) && \
01987 !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION) && \
01988 ( defined(STLSOFT_USE_EXCEPTION_SPECIFICATIONS) || \
01989 defined(STLSOFT_CF_EXCEPTION_SIGNATURE_SUPPORT))
01990 # ifndef STLSOFT_USE_EXCEPTION_SPECIFICATIONS
01991 # define STLSOFT_USE_EXCEPTION_SPECIFICATIONS
01992 # endif
01993 # define stlsoft_throw_0() throw ()
01994 # define stlsoft_throw_1(x1) throw (x1)
01995 # define stlsoft_throw_2(x1, x2) throw (x1, x2)
01996 # define stlsoft_throw_3(x1, x2, x3) throw (x1, x2, x3)
01997 # define stlsoft_throw_4(x1, x2, x3, x4) throw (x1, x2, x3, x4)
01998 # define stlsoft_throw_5(x1, x2, x3, x4, x5) throw (x1, x2, x3, x4, x5)
01999 # define stlsoft_throw_6(x1, x2, x3, x4, x5, x6) throw (x1, x2, x3, x4, x5, x6)
02000 # define stlsoft_throw_7(x1, x2, x3, x4, x5, x6, x7) throw (x1, x2, x3, x4, x5, x6, x7)
02001 # define stlsoft_throw_8(x1, x2, x3, x4, x5, x6, x7, x8) throw (x1, x2, x3, x4, x5, x6, x7, x8)
02002 #else
02003 # ifdef STLSOFT_USE_EXCEPTION_SPECIFICATIONS
02004 # undef STLSOFT_USE_EXCEPTION_SPECIFICATIONS
02005 # endif
02006 # define stlsoft_throw_0()
02007 # define stlsoft_throw_1(x1)
02008 # define stlsoft_throw_2(x1, x2)
02009 # define stlsoft_throw_3(x1, x2, x3)
02010 # define stlsoft_throw_4(x1, x2, x3, x4)
02011 # define stlsoft_throw_5(x1, x2, x3, x4, x5)
02012 # define stlsoft_throw_6(x1, x2, x3, x4, x5, x6)
02013 # define stlsoft_throw_7(x1, x2, x3, x4, x5, x6, x7)
02014 # define stlsoft_throw_8(x1, x2, x3, x4, x5, x6, x7, x8)
02015 #endif
02016
02017
02018
02019
02020
02048 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02049 # define STLSOFT_NUM_ELEMENTS_(ar) (sizeof(ar) / sizeof(0[(ar)]))
02050
02051 # if defined(__cplusplus) && \
02052 defined(STLSOFT_CF_STATIC_ARRAY_SIZE_DETERMINATION_SUPPORT)
02053 # if 0
02054 # pragma pack(push, 1)
02055 template <int N>
02056 struct ss_array_size_struct
02057 {
02058 ss_byte_t c[N];
02059 };
02060 # pragma pack(pop)
02061
02062 template <class T, int N>
02063 ss_array_size_struct<N> const& ss_static_array_size(T (&)[N]);
02064
02065 # define STLSOFT_NUM_ELEMENTS(ar) sizeof(stlsoft_ns_qual(ss_static_array_size)(ar))
02066 # else
02067 template <int N>
02068 struct ss_array_size_struct
02069 {
02070 ss_byte_t c[N];
02071 };
02072
02073 template <class T, int N>
02074 ss_array_size_struct<N> const& ss_static_array_size(T (&)[N]);
02075
02076 #if defined(STLSOFT_COMPILER_IS_VECTORC)
02077 template <class T, int N>
02078 ss_array_size_struct<N> const& ss_static_array_size(T const (&)[N]);
02079 #endif
02080
02081
02082 # define STLSOFT_NUM_ELEMENTS(ar) sizeof(stlsoft_ns_qual(ss_static_array_size)(ar).c)
02083 # endif
02084 # else
02085 # define STLSOFT_NUM_ELEMENTS(ar) STLSOFT_NUM_ELEMENTS_(ar)
02086 # endif
02087 #else
02088 # define STLSOFT_NUM_ELEMENTS(ar)
02089 #endif
02090
02101 #define stlsoft_num_elements(ar) STLSOFT_NUM_ELEMENTS(ar)
02102
02103 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02104 # define stlsoft_num_elements_(ar) STLSOFT_NUM_ELEMENTS_(ar)
02105 #endif
02106
02107
02108
02109
02110
02111 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02112 # define STLSOFT_RAW_OFFSETOF_1(S, M) \
02113 \
02114 stlsoft_static_cast( \
02115 \
02116 stlsoft_ns_qual(ss_size_t), \
02117 \
02118 stlsoft_reinterpret_cast( \
02119 stlsoft_ns_qual(ss_ptrdiff_t), \
02120 stlsoft_reinterpret_cast(char const*, \
02121 & \
02122 ( stlsoft_reinterpret_cast(S*, stlsoft_static_cast(char*, 1)) \
02123 + 1) \
02124 ->M) \
02125 ) \
02126 - \
02127 stlsoft_reinterpret_cast( \
02128 stlsoft_ns_qual(ss_ptrdiff_t), \
02129 stlsoft_reinterpret_cast(char const*, \
02130 ( stlsoft_reinterpret_cast(S*, stlsoft_static_cast(char*, 1)) \
02131 + 1)) \
02132 ) \
02133 )
02134
02135 # define STLSOFT_RAW_OFFSETOF_2(S, M) \
02136 \
02137 (reinterpret_cast<stlsoft_ns_qual(ss_size_t)>(&reinterpret_cast<S*>(1)->M) - 1)
02138
02139 #endif
02140
02141
02149 #if defined(RECLS_COMPILER_IS_GCC)
02150 # define STLSOFT_RAW_OFFSETOF(S, M) STLSOFT_RAW_OFFSETOF_2(S, M)
02151 #elif defined(_STLSOFT_NO_STD_INCLUDES)
02152 # define STLSOFT_RAW_OFFSETOF(S, M) offsetof(S, M)
02153 #else
02154 # define STLSOFT_RAW_OFFSETOF(S, M) stlsoft_reinterpret_cast(stlsoft_ns_qual(ss_size_t), &stlsoft_static_cast(S*, 0)->M)
02155 #endif
02156
02165 #define stlsoft_raw_offsetof(s, m) STLSOFT_RAW_OFFSETOF(s, m)
02166
02167
02168 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02169
02170 # ifdef STLSOFT_CF_USE_RAW_OFFSETOF_IN_STATIC_ASSERT
02171 # undef STLSOFT_CF_USE_RAW_OFFSETOF_IN_STATIC_ASSERT
02172 # endif
02173
02174 # if !defined(STLSOFT_COMPILER_IS_COMO) && \
02175 !defined(STLSOFT_COMPILER_IS_GCC) && \
02176 !defined(STLSOFT_COMPILER_IS_INTEL) && \
02177 !defined(STLSOFT_COMPILER_IS_WATCOM)
02178 # define STLSOFT_CF_USE_RAW_OFFSETOF_IN_STATIC_ASSERT
02179 # endif
02180
02181 #endif
02182
02183
02184
02185
02186
02187
02188 #if defined(__cplusplus)
02189
02190 # ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02191 template <ss_typename_param_k T>
02192 inline void stlsoft_destroy_instance_fn(T *p)
02193 {
02194 p->~T();
02195
02196
02197
02198
02199
02200 #if defined(STLSOFT_COMPILER_IS_WATCOM)
02201 p = p;
02202 #else
02203 static_cast<void>(p);
02204 #endif
02205 }
02206 # endif
02207
02216 # if defined(STLSOFT_DOCUMENTATION_SKIP_SECTION) || \
02217 defined(STLSOFT_COMPILER_IS_DMC)
02218 # define STLSOFT_DESTROY_INSTANCE(T1, T2, P) do { (P)->~T1(); } while(0)
02219 # else
02220 # define STLSOFT_DESTROY_INSTANCE(T1, T2, P) stlsoft_ns_qual(stlsoft_destroy_instance_fn)((P))
02221 # endif
02222 #endif
02223
02232 #define stlsoft_destroy_instance(T1, T2, P) STLSOFT_DESTROY_INSTANCE(T1, T2, P)
02233
02234
02235
02236
02237
02250 #define STLSOFT_GEN_OPAQUE(type) typedef struct __stlsoft_htype##type{ int i;} const* type;
02251
02260 #define stlsoft_gen_opaque(Type) STLSOFT_GEN_OPAQUE(Type)
02261
02262
02263
02264
02265
02287 #if defined(STLSOFT_DOCUMENTATION_SKIP_SECTION) || \
02288 defined(STLSOFT_COMPILER_IS_BORLAND) || \
02289 defined(STLSOFT_COMPILER_IS_COMO) || \
02290 defined(STLSOFT_COMPILER_IS_DMC) || \
02291 ( defined(STLSOFT_COMPILER_IS_GCC) && \
02292 __GNUC__ < 3) || \
02293 defined(STLSOFT_COMPILER_IS_INTEL) || \
02294 defined(STLSOFT_COMPILER_IS_MSVC) || \
02295 defined(STLSOFT_COMPILER_IS_VECTORC) || \
02296 defined(STLSOFT_COMPILER_IS_SUNPRO) || \
02297 defined(STLSOFT_COMPILER_IS_WATCOM)
02298 # define STLSOFT_DECLARE_TEMPLATE_PARAM_AS_FRIEND(T) friend T
02299 #elif defined(STLSOFT_COMPILER_IS_MWERKS)
02300 # define STLSOFT_DECLARE_TEMPLATE_PARAM_AS_FRIEND(T) friend class T
02301 #elif defined(STLSOFT_COMPILER_IS_GCC) && \
02302 __GNUC__ >= 3
02303
02304 # if __GNUC__ >= 4 || \
02305 ( __GNUC__ == 3 && \
02306 __GNUC_MINOR__ >= 3 && \
02307 !defined(__APPLE__))
02308
02309
02310
02311
02312
02313 # define STLSOFT_DECLARE_TEMPLATE_PARAM_AS_FRIEND(T) \
02314 \
02315 struct friend_maker \
02316 { \
02317 typedef T T2; \
02318 }; \
02319 \
02320 friend class friend_maker::T2
02321
02322 # else
02323
02324 # define STLSOFT_DECLARE_TEMPLATE_PARAM_AS_FRIEND(T) \
02325 \
02326 struct friend_maker \
02327 { \
02328 typedef T T2; \
02329 }; \
02330 \
02331 typedef typename friend_maker::T2 friend_type; \
02332 \
02333 friend friend_type
02334
02335 # endif
02336
02337 #else
02338 # error Compiler not discriminated
02339 #endif
02340
02341
02342
02343
02344
02345
02351 #if defined(__cplusplus) && \
02352 ( defined(STLSOFT_COMPILER_IS_COMO) || \
02353 \
02354 ( defined(STLSOFT_COMPILER_IS_GCC) && \
02355 __GNUC__ >= 3) || \
02356 defined(STLSOFT_COMPILER_IS_INTEL) || \
02357 defined(STLSOFT_COMPILER_IS_WATCOM))
02358 template<ss_typename_param_k T>
02359 inline void suppress_unused_func(T const volatile &)
02360 {}
02361
02362 # if defined(STLSOFT_CF_CDECL_SUPPORTED)
02363 template<ss_typename_param_k R>
02364 inline void suppress_unused_func(R (STLSOFT_CDECL *)())
02365 {}
02366 template<ss_typename_param_k R, ss_typename_param_k A0>
02367 inline void suppress_unused_func(R (STLSOFT_CDECL *)(A0))
02368 {}
02369 # endif
02370 # if defined(STLSOFT_CF_FASTCALL_SUPPORTED)
02371 template<ss_typename_param_k R>
02372 inline void suppress_unused_func(R (STLSOFT_FASTCALL *)())
02373 {}
02374 template<ss_typename_param_k R, ss_typename_param_k A0>
02375 inline void suppress_unused_func(R (STLSOFT_FASTCALL *)(A0))
02376 {}
02377 # endif
02378 # if defined(STLSOFT_CF_STDCALL_SUPPORTED)
02379 template<ss_typename_param_k R>
02380 inline void suppress_unused_func(R (STLSOFT_STDCALL *)())
02381 {}
02382 template<ss_typename_param_k R, ss_typename_param_k A0>
02383 inline void suppress_unused_func(R (STLSOFT_STDCALL *)(A0))
02384 {}
02385 # endif
02386
02387 # define STLSOFT_SUPPRESS_UNUSED(x) stlsoft_ns_qual(suppress_unused_func)(x)
02388 #else
02389 # ifdef __cplusplus
02390 # define STLSOFT_SUPPRESS_UNUSED(x) (static_cast<void>(x))
02391 # else
02392 # define STLSOFT_SUPPRESS_UNUSED(x) ((void)(x))
02393 # endif
02394 #endif
02395
02401 #if defined(__cplusplus) && \
02402 !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
02403 # define STLSOFT_UNNAMED_PARAM(p)
02404 #else
02405 # define STLSOFT_UNNAMED_PARAM(p) p
02406 #endif
02407
02413 #if defined(__cplusplus) && \
02414 !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
02415 # define STLSOFT_SUPPRESS_UNNAMED_PARAM(p)
02416 #else
02417 # define STLSOFT_SUPPRESS_UNNAMED_PARAM(p) ((void)p);
02418 #endif
02419
02422
02423
02424
02425
02436 #define stlsoft_c_cast(T, E) ((T)(E))
02437
02458 #if defined(__cplusplus)
02459 # define stlsoft_static_cast(T, E) static_cast< T>(E)
02460 #else
02461 # define stlsoft_static_cast(T, E) stlsoft_c_cast(T, E)
02462 #endif
02463
02464 #if defined(__cplusplus)
02465 # define stlsoft_const_cast(T, E) const_cast< T>(E)
02466 #else
02467 # define stlsoft_const_cast(T, E) stlsoft_c_cast(T, E)
02468 #endif
02469
02470 #if defined(__cplusplus)
02471 # define stlsoft_volatile_cast(T, E) const_cast< T>(E)
02472 #else
02473 # define stlsoft_volatile_cast(T, E) stlsoft_c_cast(T, E)
02474 #endif
02475
02476 #if defined(__cplusplus)
02477 # define stlsoft_reinterpret_cast(T, E) reinterpret_cast< T>(E)
02478 #else
02479 # define stlsoft_reinterpret_cast(T, E) stlsoft_c_cast(T, E)
02480 #endif
02481
02482 #if defined(__cplusplus)
02483 # define stlsoft_dynamic_cast(T, E) dynamic_cast< T>(E)
02484 #else
02485 # define stlsoft_dynamic_cast(T, E) stlsoft_c_cast(T, E)
02486 #endif
02487
02490
02491
02492
02493
02507 #if defined(__cplusplus)
02508 # define STLSOFT_INLINE inline
02509 #else
02510 # if defined(STLSOFT_CF_C99_INLINE)
02511 # define STLSOFT_INLINE inline
02512 # elif defined(STLSOFT_CUSTOM_C_INLINE)
02513 # define STLSOFT_INLINE STLSOFT_CUSTOM_C_INLINE
02514 # else
02515 # define STLSOFT_INLINE static
02516 # endif
02517 #endif
02518
02521
02522
02523
02524
02525
02526
02527
02528 #ifdef STLSOFT_CF_STATIC_ASSERT_SUPPORT
02529 # ifdef __cplusplus
02530 namespace internal_gcc
02531 {
02532 # endif
02533
02534 # if defined(__cplusplus)
02535
02536 STLSOFT_INLINE void _stlsoft_internal_verify_integral_type_sizes(void)
02537 {
02538 STLSOFT_STATIC_ASSERT(_STLSOFT_SIZEOF_CHAR == sizeof(char));
02539 STLSOFT_STATIC_ASSERT(_STLSOFT_SIZEOF_SHORT == sizeof(short));
02540 STLSOFT_STATIC_ASSERT(_STLSOFT_SIZEOF_INT == sizeof(int));
02541 STLSOFT_STATIC_ASSERT(_STLSOFT_SIZEOF_LONG == sizeof(long));
02542 # ifdef STLSOFT_CF_BUILTIN_long_long_SUPPORT
02543 STLSOFT_STATIC_ASSERT(_STLSOFT_SIZEOF_LONG_LONG == sizeof(long long));
02544 # endif
02545
02546 STLSOFT_STATIC_ASSERT(1 == sizeof(ss_sint8_t));
02547 STLSOFT_STATIC_ASSERT(1 == sizeof(ss_uint8_t));
02548 STLSOFT_STATIC_ASSERT(2 == sizeof(ss_sint16_t));
02549 STLSOFT_STATIC_ASSERT(2 == sizeof(ss_uint16_t));
02550 STLSOFT_STATIC_ASSERT(4 == sizeof(ss_sint32_t));
02551 STLSOFT_STATIC_ASSERT(4 == sizeof(ss_uint32_t));
02552 # ifdef STLSOFT_CF_64BIT_INT_SUPPORT
02553 STLSOFT_STATIC_ASSERT(8 == sizeof(ss_sint64_t));
02554 STLSOFT_STATIC_ASSERT(8 == sizeof(ss_uint64_t));
02555 # endif
02556 }
02557
02558 # endif
02559
02560 # ifdef __cplusplus
02561 }
02562 # endif
02563 #endif
02564
02565
02566
02567
02568
02581 #if defined(__cplusplus)
02582
02583 template <ss_typename_param_k T>
02584 inline void const* ptr_byte_offset(T const p, ss_ptrdiff_t n)
02585 {
02586 # if 0
02587 # if !defined(STLSOFT_COMPILER_IS_BORLAND) && \
02588 ( !defined(STLSOFT_COMPILER_IS_MSVC) || \
02589 _MSC_VER > 1200)
02590 struct InternalPointerChecker
02591 {
02592 public:
02593 static void check(void mutable *)
02594 {}
02595 static void check(void const mutable *)
02596 {}
02597 template <ss_typename_param_k T2>
02598 static void check(T2 p)
02599 {
02600 ss_size_t n = sizeof(p[0]);
02601
02602 STLSOFT_SUPPRESS_UNUSED(n);
02603 }
02604 };
02605
02606
02607 InternalPointerChecker::check(p);
02608 # endif
02609 # endif
02610
02611 void const* p1 = static_cast<void const*>(p);
02612 ss_byte_t const* p2 = static_cast<ss_byte_t const*>(p1);
02613 ss_byte_t const* p3 = p2 + n;
02614 void const* p4 = static_cast<void const*>(p3);
02615 void const* p5 = static_cast<void const*>(p);
02616
02617 STLSOFT_ASSERT((static_cast<char const*>(p4) - static_cast<char const*>(p5)) == n);
02618
02619 STLSOFT_SUPPRESS_UNUSED(p5);
02620
02621 return p4;
02622 }
02623
02630 template <ss_typename_param_k T>
02631 inline T const* ptr_offset(T const* p, ss_ptrdiff_t n)
02632 {
02633 return p + n;
02634 }
02635
02638 template <ss_typename_param_k T1, ss_typename_param_k T2>
02639 inline ss_ptrdiff_t ptr_byte_diff(T1 const* p1, T2 const* p2)
02640 {
02641 return static_cast<ss_byte_t const*>(static_cast<void const*>(p1)) - static_cast<ss_byte_t const*>(static_cast<void const*>(p2));
02642 }
02643
02646 template <ss_typename_param_k T1, ss_typename_param_k T2>
02647 inline ss_ptrdiff_t ptr_diff(T1 const* p1, T2 const* p2)
02648 {
02649 return p1 - p2;
02650 }
02651
02652 #endif
02653
02656
02657
02658
02659
02666 #if defined(__cplusplus)
02667
02673 template <ss_typename_param_k T>
02674 inline T& remove_const(T const& t)
02675 {
02676 return const_cast<T&>(t);
02677 }
02678
02681 template <ss_typename_param_k T>
02682 inline T const& apply_const(T& t)
02683 {
02684 return t;
02685 }
02686
02687
02688 # ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02689 template <ss_typename_param_k T>
02690 # ifdef STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT
02691 inline T& mutable_access(T& t)
02692 # else
02693 inline T& mutable_access(T const& t)
02694 # endif
02695 {
02696 # ifdef STLSOFT_CF_MUTABLE_KEYWORD_SUPPORT
02697 return t;
02698 # else
02699 return const_cast<T&>(t);
02700 # endif
02701 }
02702 # endif
02703
02704
02705 # ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
02706
02707 # ifdef STLSOFT_CF_MOVE_CONSTRUCTOR_SUPPORT
02708 # define stlsoft_define_move_rhs_type(t) t &
02709 # else
02710 # define stlsoft_define_move_rhs_type(t) t const&
02711 # endif
02712
02713 template <ss_typename_param_k T>
02714 inline T& move_lhs_from_rhs(stlsoft_define_move_rhs_type(T) t)
02715 {
02716 # ifdef STLSOFT_CF_MOVE_CONSTRUCTOR_SUPPORT
02717 return t;
02718 # else
02719 return const_cast<T&>(t);
02720 # endif
02721 }
02722
02723 # endif
02724
02732 template <ss_typename_param_k T>
02733 inline T const* address(T const& t)
02734 {
02735 return &t;
02736 }
02737
02738 #endif
02739
02742
02743
02744
02745
02746 #if defined(__cplusplus)
02747
02748
02749
02750
02751
02752
02753
02754 #ifndef new
02755 # ifdef _STLSOFT_NO_NAMESPACE
02756 # if defined(STLSOFT_COMPILER_IS_BORLAND) && \
02757 __BORLANDC__ < 0x0550
02758 # include <new.h>
02759 # else
02760 # include <new>
02761 # endif
02762 # else
02763 # if ( defined(STLSOFT_COMPILER_IS_DMC) && \
02764 __DMC__ < 0x0833) || \
02765 ( defined(STLSOFT_COMPILER_IS_MSVC) && \
02766 _MSC_VER < 1300)
02767 inline void *operator new(ss_size_t , void *pv)
02768 {
02769 return pv;
02770 }
02771 # endif
02772 # endif
02773 #endif
02774
02775 #endif
02776
02777
02778
02779 #ifndef _STLSOFT_NO_NAMESPACE
02780 }
02781 #endif
02782
02783
02784
02785
02786
02787 #ifdef STLSOFT_CF_PRAGMA_ONCE_SUPPORT
02788 # pragma once
02789 #endif
02790
02791
02792
02793
02794
02795 #ifdef STLSOFT_UNITTEST
02796
02797 # ifndef STLSOFT_INCL_UNITTEST_HPP_UNITTEST
02798 # include <unittest/unittest.hpp>
02799 # endif
02800
02801 # if defined(STLSOFT_COMPILER_IS_MSVC) && \
02802 _MSC_VER == 1200
02803 # include <stlsoft/synch/concepts.hpp>
02804 # endif
02805
02806 #endif
02807
02808
02809
02810 #endif
02811
02812