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
00047 #ifndef XCONTRACT_INCL_XCONTRACT_H_XCONTRACT
00048 #define XCONTRACT_INCL_XCONTRACT_H_XCONTRACT
00049
00050 #ifndef XCONTRACT_DOCUMENTATION_SKIP_SECTION
00051 # define XCONTRACT_VER_XCONTRACT_H_XCONTRACT_MAJOR 2
00052 # define XCONTRACT_VER_XCONTRACT_H_XCONTRACT_MINOR 4
00053 # define XCONTRACT_VER_XCONTRACT_H_XCONTRACT_REVISION 1
00054 # define XCONTRACT_VER_XCONTRACT_H_XCONTRACT_EDIT 177
00055 #endif
00056
00057
00058
00059
00060
00075 #define XCONTRACT_VER_MAJOR 0
00076 #define XCONTRACT_VER_MINOR 3
00077 #define XCONTRACT_VER_REVISION 3
00078
00079 #define XCONTRACT_VER 0x000303ff
00080
00081
00082
00083
00084
00085 #ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
00086 # include <stlsoft/stlsoft.h>
00087 #endif
00088
00089 #ifdef __cplusplus
00090 # if defined(UNIX) || \
00091 defined(unix) || \
00092 defined(unix__) || \
00093 defined(__unix) || \
00094 defined(__unix__)
00095
00096
00097
00098
00099
00100 # include <unixstl/synch/util/features.h>
00101 # endif
00102 # if defined(STLSOFT_CF_EXCEPTION_SUPPORT)
00103 # include <new>
00104 # include <stdexcept>
00105 # endif
00106 #endif
00107
00108
00109
00110
00111
00112 #if _STLSOFT_VER < 0x010937ff
00113 # error xContract requires version 1.9.55 (or later) of STLSoft; download from www.stlsoft.org
00114 #endif
00115
00116
00117
00118
00119
00120 #if defined(_STLSOFT_NO_NAMESPACE)
00121 # define _XCONTRACT_NO_NAMESPACE
00122 #endif
00123
00124 #ifndef _XCONTRACT_NO_NAMESPACE
00125
00129 namespace xcontract
00130 {
00131 #endif
00132
00133
00134
00135
00136
00156
00157
00158
00159
00160 #ifndef XCONTRACT_DOCUMENTATION_SKIP_SECTION
00161
00162 # if !defined(XCONTRACT_DECLSPEC)
00163 # define XCONTRACT_DECLSPEC
00164 # endif
00165
00166 # if defined(__cplusplus) || \
00167 defined(XCONTRACT_DOCUMENTATION_SKIP_SECTION)
00168 # define XCONTRACT_EXTERN_C extern "C"
00169 # else
00170 # define XCONTRACT_EXTERN_C extern
00171 # endif
00172
00173 # if !defined(XCONTRACT_CALLCONV)
00174 # define XCONTRACT_CALLCONV
00175 # endif
00176
00177 # define XCONTRACT_CALL(rt) XCONTRACT_DECLSPEC XCONTRACT_EXTERN_C rt XCONTRACT_CALLCONV
00178
00179 # ifdef STLSOFT_CF_FUNCTION_SYMBOL_SUPPORT
00180 # define XCONTRACT_GET_FUNCTION_() __FUNCTION__
00181 # else
00182 # define XCONTRACT_GET_FUNCTION_() stlsoft_static_cast(char const*, 0)
00183 # endif
00184
00185 # ifndef _XCONTRACT_NO_NAMESPACE
00186 # define XCONTRACT_NS_QUAL(sym) xcontract::sym
00187 # else
00188 # define XCONTRACT_NS_QUAL(sym) sym
00189 # endif
00190
00191
00192 # if defined(STLSOFT_COMPILER_IS_MSVC) && \
00193 _MSC_VER >= 1200
00194 # define XCONTRACT_NORETURN __declspec(noreturn)
00195 # else
00196 # define XCONTRACT_NORETURN
00197 # endif
00198
00199 #endif
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
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
00251
00252
00253
00254
00255
00256
00257
00258 #if !defined(XCONTRACT_NO_STOCK_MODES) && \
00259 !defined(XCONTRACT_DOCUMENTATION_SKIP_SECTION)
00260
00261 # if !defined(XCONTRACT_MODE_DEBUG) && \
00262 !defined(XCONTRACT_MODE_TEST) && \
00263 !defined(XCONTRACT_MODE_RELEASE) && \
00264 !defined(XCONTRACT_MODE_OFF)
00265
00266
00267
00268 # if !defined(NDEBUG)
00269 # define XCONTRACT_MODE_DEBUG
00270 # else
00271 # define XCONTRACT_MODE_RELEASE
00272 # endif
00273 # endif
00274
00275 # if defined(XCONTRACT_MODE_DEBUG)
00276
00277 # define XCONTRACT_ENFORCING_UNEXPECTED_CONDITION (1)
00278 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_0 (1)
00279 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_1 (1)
00280 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_2 (1)
00281 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_3 (1)
00282 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_4 (1)
00283 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_0 (1)
00284 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_1 (1)
00285 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_2 (1)
00286 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_3 (1)
00287 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_4 (1)
00288 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_0 (1)
00289 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_1 (1)
00290 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_2 (1)
00291 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_3 (1)
00292 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_4 (1)
00293 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_0 (1)
00294 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_1 (1)
00295 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_2 (1)
00296 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_3 (1)
00297 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_4 (1)
00298 # define XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_0 (1)
00299 # define XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_1 (1)
00300 # define XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_2 (1)
00301 # define XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_3 (1)
00302 # define XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_4 (1)
00303 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_0 (1)
00304 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_1 (1)
00305 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_2 (1)
00306 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_3 (1)
00307 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_4 (1)
00308 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_0 (1)
00309 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_1 (1)
00310 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_2 (1)
00311 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_3 (1)
00312 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_4 (1)
00313 # define XCONTRACT_ENFORCING_STATIC_DATA_0 (1)
00314 # define XCONTRACT_ENFORCING_STATIC_DATA_1 (1)
00315 # define XCONTRACT_ENFORCING_STATIC_DATA_2 (1)
00316 # define XCONTRACT_ENFORCING_STATIC_DATA_3 (1)
00317 # define XCONTRACT_ENFORCING_STATIC_DATA_4 (1)
00318 # define XCONTRACT_ENFORCING_ASSUMPTION_0 (1)
00319 # define XCONTRACT_ENFORCING_ASSUMPTION_1 (1)
00320 # define XCONTRACT_ENFORCING_ASSUMPTION_2 (1)
00321 # define XCONTRACT_ENFORCING_ASSUMPTION_3 (1)
00322 # define XCONTRACT_ENFORCING_ASSUMPTION_4 (1)
00323 # endif
00324
00325 # if defined(XCONTRACT_MODE_TEST)
00326
00327 # define XCONTRACT_ENFORCING_UNEXPECTED_CONDITION (1)
00328 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_0 (1)
00329 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_1 (1)
00330 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_2 (1)
00331 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_3 (1)
00332 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_4 (1)
00333 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_0 (1)
00334 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_1 (1)
00335 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_2 (1)
00336 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_3 (1)
00337 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_4 (1)
00338 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_0 (1)
00339 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_1 (1)
00340 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_2 (1)
00341 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_3 (1)
00342 # define XCONTRACT_ENFORCING_POSTCONDITION_RETURN_4 (1)
00343 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_0 (1)
00344 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_1 (1)
00345 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_2 (1)
00346 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_3 (1)
00347 # define XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_4 (1)
00348 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_0 (1)
00349 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_1 (1)
00350 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_2 (1)
00351 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_3 (1)
00352 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_4 (1)
00353 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_0 (1)
00354 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_1 (1)
00355 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_2 (1)
00356 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_3 (1)
00357 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_4 (1)
00358 # define XCONTRACT_ENFORCING_STATIC_DATA_0 (1)
00359 # define XCONTRACT_ENFORCING_STATIC_DATA_1 (1)
00360 # define XCONTRACT_ENFORCING_STATIC_DATA_2 (1)
00361 # define XCONTRACT_ENFORCING_STATIC_DATA_3 (1)
00362 # define XCONTRACT_ENFORCING_STATIC_DATA_4 (1)
00363 # define XCONTRACT_ENFORCING_ASSUMPTION_0 (1)
00364 # define XCONTRACT_ENFORCING_ASSUMPTION_1 (1)
00365 # define XCONTRACT_ENFORCING_ASSUMPTION_2 (1)
00366 # define XCONTRACT_ENFORCING_ASSUMPTION_3 (1)
00367 # define XCONTRACT_ENFORCING_ASSUMPTION_4 (1)
00368 # endif
00369
00370 # if defined(XCONTRACT_MODE_RELEASE)
00371
00372 # define XCONTRACT_ENFORCING_UNEXPECTED_CONDITION (1)
00373 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_0 (1)
00374 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_1 (1)
00375 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_2 (1)
00376 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_3 (1)
00377 # define XCONTRACT_ENFORCING_PRECONDITION_LOGIC_4 (1)
00378 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_0 (1)
00379 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_1 (1)
00380 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_2 (1)
00381 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_3 (1)
00382 # define XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_4 (1)
00383 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_0 (1)
00384 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_1 (1)
00385 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_2 (1)
00386 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_3 (1)
00387 # define XCONTRACT_ENFORCING_CLASS_INVARIANT_4 (1)
00388 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_0 (1)
00389 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_1 (1)
00390 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_2 (1)
00391 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_3 (1)
00392 # define XCONTRACT_ENFORCING_GLOBAL_INVARIANT_4 (1)
00393 # define XCONTRACT_ENFORCING_STATIC_DATA_0 (1)
00394 # define XCONTRACT_ENFORCING_STATIC_DATA_1 (1)
00395 # define XCONTRACT_ENFORCING_STATIC_DATA_2 (1)
00396 # define XCONTRACT_ENFORCING_STATIC_DATA_3 (1)
00397 # define XCONTRACT_ENFORCING_STATIC_DATA_4 (1)
00398 # endif
00399
00400 # if defined(XCONTRACT_MODE_OFF)
00401
00402 # endif
00403
00404
00405 #endif
00406
00407
00408
00409
00410
00415 enum xContract_violation_type_t
00416 {
00417 xContract_unexpectedCondition
00418 , xContract_precondition_logic
00419 , xContract_precondition_parameters
00420 , xContract_postcondition_returnValue
00421 , xContract_postcondition_logic
00422 , xContract_postcondition_parameters
00423 , xContract_invariant_class
00424 , xContract_invariant_global
00425 , xContract_staticData
00426 , xContract_intermediateAssumption
00428 , xContract_maximum_value
00429 };
00430 #ifndef __cplusplus
00431 typedef enum xContract_violation_type_t xContract_violation_type_t;
00432 #endif
00433 #ifndef _XCONTRACT_NO_NAMESPACE
00434
00436 typedef enum xContract_violation_type_t violation_type_t;
00437 #endif
00438
00441 typedef void (XCONTRACT_CALLCONV *xContract_violationReport_fn_t)( char const* file
00442 , unsigned line
00443 , char const* function
00444 , char const* expression
00445 , char const* message
00446 , char const* qualifier
00447 , xContract_violation_type_t type
00448 , int level);
00449
00450 #ifndef _XCONTRACT_NO_NAMESPACE
00451
00453 typedef xContract_violationReport_fn_t violationReport_fn_t;
00454 #endif
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467 #ifndef XCONTRACT_DOCUMENTATION_SKIP_SECTION
00468
00469 # ifdef XCONTRACT_VERIFY_CONDITION_AT_RUNTIME
00470 # define XCONTRACT_ENFORCE_CONDITION_VERIFIER_(type, level, expr, msg) XCONTRACT_NS_QUAL(xContract_isConditionVerified)(type, level, __FILE__, __LINE__, XCONTRACT_GET_FUNCTION_(), expr)
00471 # else
00472 # define XCONTRACT_ENFORCE_CONDITION_VERIFIER_(type, level, expr, msg) (1)
00473 # endif
00474
00475 # ifndef XCONTRACT_CUSTOM_REPORTER
00476 # define XCONTRACT_CUSTOM_REPORTER XCONTRACT_NS_QUAL(xContract_violationReport)
00477 # endif
00478
00479 # define XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(type, level, expr, msg) \
00480 \
00481 (((0 == XCONTRACT_ENFORCE_CONDITION_VERIFIER_(type, level, #expr, msg)) || (expr)) \
00482 ? stlsoft_static_cast(void, 0) \
00483 : XCONTRACT_NS_QUAL(xContract_contract_violation2)(__FILE__, __LINE__, XCONTRACT_GET_FUNCTION_(), #expr, msg, NULL, type, level, XCONTRACT_CUSTOM_REPORTER))
00484
00485 #endif
00486
00487
00488
00489
00498 #ifdef XCONTRACT_ENFORCING_UNEXPECTED_CONDITION
00499 # define XCONTRACT_ENFORCE_UNEXPECTED_CONDITION(msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_unexpectedCondition), 0, NULL, msg)
00500 #else
00501 # define XCONTRACT_ENFORCE_UNEXPECTED_CONDITION(msg) ((void)0)
00502 #endif
00503
00504
00505
00506
00507 #if 0
00508 # ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_LEVEL > 0
00509 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC(expr, msg, level) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 0, expr, msg)
00510 # else
00511 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC(expr, msg, level) ((void)0)
00512 # endif
00513 #endif
00514
00524 #ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_0
00525 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 0, expr, msg)
00526 #else
00527 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_0(expr, msg) ((void)0)
00528 #endif
00529
00539 #ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_1
00540 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 1, expr, msg)
00541 #else
00542 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_1(expr, msg) ((void)0)
00543 #endif
00544
00554 #ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_2
00555 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 2, expr, msg)
00556 #else
00557 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_2(expr, msg) ((void)0)
00558 #endif
00559
00569 #ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_3
00570 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 3, expr, msg)
00571 #else
00572 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_3(expr, msg) ((void)0)
00573 #endif
00574
00584 #ifdef XCONTRACT_ENFORCING_PRECONDITION_LOGIC_4
00585 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_logic), 4, expr, msg)
00586 #else
00587 # define XCONTRACT_ENFORCE_PRECONDITION_LOGIC_4(expr, msg) ((void)0)
00588 #endif
00589
00590
00591
00592
00602 #ifdef XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_0
00603 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_parameters), 0, expr, msg)
00604 #else
00605 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_0(expr, msg) ((void)0)
00606 #endif
00607
00617 #ifdef XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_1
00618 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_parameters), 1, expr, msg)
00619 #else
00620 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_1(expr, msg) ((void)0)
00621 #endif
00622
00632 #ifdef XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_2
00633 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_parameters), 2, expr, msg)
00634 #else
00635 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_2(expr, msg) ((void)0)
00636 #endif
00637
00647 #ifdef XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_3
00648 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_parameters), 3, expr, msg)
00649 #else
00650 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_3(expr, msg) ((void)0)
00651 #endif
00652
00662 #ifdef XCONTRACT_ENFORCING_PRECONDITION_PARAMETERS_4
00663 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_precondition_parameters), 4, expr, msg)
00664 #else
00665 # define XCONTRACT_ENFORCE_PRECONDITION_PARAMETERS_4(expr, msg) ((void)0)
00666 #endif
00667
00668
00669
00670
00680 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_RETURN_0
00681 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_returnValue), 0, expr, msg)
00682 #else
00683 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_0(expr, msg) ((void)0)
00684 #endif
00685
00695 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_RETURN_1
00696 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_returnValue), 1, expr, msg)
00697 #else
00698 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_1(expr, msg) ((void)0)
00699 #endif
00700
00710 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_RETURN_2
00711 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_returnValue), 2, expr, msg)
00712 #else
00713 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_2(expr, msg) ((void)0)
00714 #endif
00715
00725 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_RETURN_3
00726 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_returnValue), 3, expr, msg)
00727 #else
00728 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_3(expr, msg) ((void)0)
00729 #endif
00730
00740 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_RETURN_4
00741 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_returnValue), 4, expr, msg)
00742 #else
00743 # define XCONTRACT_ENFORCE_POSTCONDITION_RETURN_4(expr, msg) ((void)0)
00744 #endif
00745
00746
00747
00748
00758 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_0
00759 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_logic), 0, expr, msg)
00760 #else
00761 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_0(expr, msg) ((void)0)
00762 #endif
00763
00773 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_1
00774 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_logic), 1, expr, msg)
00775 #else
00776 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_1(expr, msg) ((void)0)
00777 #endif
00778
00788 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_2
00789 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_logic), 2, expr, msg)
00790 #else
00791 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_2(expr, msg) ((void)0)
00792 #endif
00793
00803 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_3
00804 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_logic), 3, expr, msg)
00805 #else
00806 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_3(expr, msg) ((void)0)
00807 #endif
00808
00818 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_LOGIC_4
00819 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_logic), 4, expr, msg)
00820 #else
00821 # define XCONTRACT_ENFORCE_POSTCONDITION_LOGIC_4(expr, msg) ((void)0)
00822 #endif
00823
00824
00825
00826
00836 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_0
00837 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_parameters), 0, expr, msg)
00838 #else
00839 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_0(expr, msg) ((void)0)
00840 #endif
00841
00851 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_1
00852 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_parameters), 1, expr, msg)
00853 #else
00854 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_1(expr, msg) ((void)0)
00855 #endif
00856
00866 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_2
00867 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_parameters), 2, expr, msg)
00868 #else
00869 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_2(expr, msg) ((void)0)
00870 #endif
00871
00881 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_3
00882 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_parameters), 3, expr, msg)
00883 #else
00884 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_3(expr, msg) ((void)0)
00885 #endif
00886
00896 #ifdef XCONTRACT_ENFORCING_POSTCONDITION_PARAMETERS_4
00897 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_postcondition_parameters), 4, expr, msg)
00898 #else
00899 # define XCONTRACT_ENFORCE_POSTCONDITION_PARAMETERS_4(expr, msg) ((void)0)
00900 #endif
00901
00902
00903
00904
00914 #ifdef XCONTRACT_ENFORCING_CLASS_INVARIANT_0
00915 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_class), 0, expr, msg)
00916 #else
00917 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_0(expr, msg) ((void)0)
00918 #endif
00919
00929 #ifdef XCONTRACT_ENFORCING_CLASS_INVARIANT_1
00930 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_class), 1, expr, msg)
00931 #else
00932 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_1(expr, msg) ((void)0)
00933 #endif
00934
00944 #ifdef XCONTRACT_ENFORCING_CLASS_INVARIANT_2
00945 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_class), 2, expr, msg)
00946 #else
00947 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_2(expr, msg) ((void)0)
00948 #endif
00949
00959 #ifdef XCONTRACT_ENFORCING_CLASS_INVARIANT_3
00960 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_class), 3, expr, msg)
00961 #else
00962 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_3(expr, msg) ((void)0)
00963 #endif
00964
00974 #ifdef XCONTRACT_ENFORCING_CLASS_INVARIANT_4
00975 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_class), 4, expr, msg)
00976 #else
00977 # define XCONTRACT_ENFORCE_CLASS_INVARIANT_4(expr, msg) ((void)0)
00978 #endif
00979
00980
00981
00982
00992 #ifdef XCONTRACT_ENFORCING_GLOBAL_INVARIANT_0
00993 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_global), 0, expr, msg)
00994 #else
00995 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_0(expr, msg) ((void)0)
00996 #endif
00997
01007 #ifdef XCONTRACT_ENFORCING_GLOBAL_INVARIANT_1
01008 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_global), 1, expr, msg)
01009 #else
01010 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_1(expr, msg) ((void)0)
01011 #endif
01012
01022 #ifdef XCONTRACT_ENFORCING_GLOBAL_INVARIANT_2
01023 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_global), 2, expr, msg)
01024 #else
01025 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_2(expr, msg) ((void)0)
01026 #endif
01027
01037 #ifdef XCONTRACT_ENFORCING_GLOBAL_INVARIANT_3
01038 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_global), 3, expr, msg)
01039 #else
01040 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_3(expr, msg) ((void)0)
01041 #endif
01042
01052 #ifdef XCONTRACT_ENFORCING_GLOBAL_INVARIANT_4
01053 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_invariant_global), 4, expr, msg)
01054 #else
01055 # define XCONTRACT_ENFORCE_GLOBAL_INVARIANT_4(expr, msg) ((void)0)
01056 #endif
01057
01058
01059
01060
01070 #ifdef XCONTRACT_ENFORCING_STATIC_DATA_0
01071 # define XCONTRACT_ENFORCE_STATIC_DATA_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_staticData), 0, expr, msg)
01072 #else
01073 # define XCONTRACT_ENFORCE_STATIC_DATA_0(expr, msg) ((void)0)
01074 #endif
01075
01085 #ifdef XCONTRACT_ENFORCING_STATIC_DATA_1
01086 # define XCONTRACT_ENFORCE_STATIC_DATA_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_staticData), 1, expr, msg)
01087 #else
01088 # define XCONTRACT_ENFORCE_STATIC_DATA_1(expr, msg) ((void)0)
01089 #endif
01090
01100 #ifdef XCONTRACT_ENFORCING_STATIC_DATA_2
01101 # define XCONTRACT_ENFORCE_STATIC_DATA_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_staticData), 2, expr, msg)
01102 #else
01103 # define XCONTRACT_ENFORCE_STATIC_DATA_2(expr, msg) ((void)0)
01104 #endif
01105
01115 #ifdef XCONTRACT_ENFORCING_STATIC_DATA_3
01116 # define XCONTRACT_ENFORCE_STATIC_DATA_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_staticData), 3, expr, msg)
01117 #else
01118 # define XCONTRACT_ENFORCE_STATIC_DATA_3(expr, msg) ((void)0)
01119 #endif
01120
01130 #ifdef XCONTRACT_ENFORCING_STATIC_DATA_4
01131 # define XCONTRACT_ENFORCE_STATIC_DATA_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_staticData), 4, expr, msg)
01132 #else
01133 # define XCONTRACT_ENFORCE_STATIC_DATA_4(expr, msg) ((void)0)
01134 #endif
01135
01136
01137
01138
01148 #ifdef XCONTRACT_ENFORCING_ASSUMPTION_0
01149 # define XCONTRACT_ENFORCE_ASSUMPTION_0(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_intermediateAssumption), 0, expr, msg)
01150 #else
01151 # define XCONTRACT_ENFORCE_ASSUMPTION_0(expr, msg) ((void)0)
01152 #endif
01153
01163 #ifdef XCONTRACT_ENFORCING_ASSUMPTION_1
01164 # define XCONTRACT_ENFORCE_ASSUMPTION_1(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_intermediateAssumption), 1, expr, msg)
01165 #else
01166 # define XCONTRACT_ENFORCE_ASSUMPTION_1(expr, msg) ((void)0)
01167 #endif
01168
01178 #ifdef XCONTRACT_ENFORCING_ASSUMPTION_2
01179 # define XCONTRACT_ENFORCE_ASSUMPTION_2(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_intermediateAssumption), 2, expr, msg)
01180 #else
01181 # define XCONTRACT_ENFORCE_ASSUMPTION_2(expr, msg) ((void)0)
01182 #endif
01183
01193 #ifdef XCONTRACT_ENFORCING_ASSUMPTION_3
01194 # define XCONTRACT_ENFORCE_ASSUMPTION_3(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_intermediateAssumption), 3, expr, msg)
01195 #else
01196 # define XCONTRACT_ENFORCE_ASSUMPTION_3(expr, msg) ((void)0)
01197 #endif
01198
01208 #ifdef XCONTRACT_ENFORCING_ASSUMPTION_4
01209 # define XCONTRACT_ENFORCE_ASSUMPTION_4(expr, msg) XCONTRACT_ENFORCE_CONDITION_TYPE_LEVEL_(XCONTRACT_NS_QUAL(xContract_intermediateAssumption), 4, expr, msg)
01210 #else
01211 # define XCONTRACT_ENFORCE_ASSUMPTION_4(expr, msg) ((void)0)
01212 #endif
01213
01214
01215
01216
01217
01235 XCONTRACT_CALL(int) xContract_isConditionVerified(
01236 xContract_violation_type_t type
01237 , int level
01238 , char const* file
01239 , unsigned line
01240 , char const* function
01241 , char const* expression
01242 );
01243
01244
01245
01246
01247
01248 #ifndef XCONTRACT_DOCUMENTATION_SKIP_SECTION
01249 XCONTRACT_CALL(int) xContract_doWhileCondition(char const* );
01250 #endif
01251
01275 XCONTRACT_CALL(void) xContract_violationReport(
01276 char const *file
01277 , unsigned line
01278 , char const *function
01279 , char const *expression
01280 , char const *message
01281 , char const *qualifier
01282 , xContract_violation_type_t type
01283 , int level
01284 );
01285
01297 XCONTRACT_NORETURN
01298 XCONTRACT_CALL(void) xContract_contract_violation(
01299 char const* file
01300 , unsigned line
01301 , char const* expression
01302 , char const* message
01303 , xContract_violation_type_t type
01304 );
01305
01323 XCONTRACT_NORETURN
01324 XCONTRACT_CALL(void) xContract_contract_violation2(
01325 char const* file
01326 , unsigned line
01327 , char const* function
01328 , char const* expression
01329 , char const* message
01330 , char const* qualifier
01331 , xContract_violation_type_t type
01332 , int level
01333 , xContract_violationReport_fn_t pfnReport
01334 );
01335
01342 XCONTRACT_CALL(char const*) xContract_getViolationTypeString(xContract_violation_type_t type);
01343
01350 XCONTRACT_CALL(size_t) xContract_getViolationTypeStringLength(xContract_violation_type_t type);
01351
01352
01353
01354
01355
01356 #ifndef _XCONTRACT_NO_NAMESPACE
01357
01358 typedef xContract_violation_type_t violation_type_t;
01359 typedef xContract_violationReport_fn_t violationReport_fn_t;
01360
01361 }
01362 #endif
01363
01364
01365
01366 #endif
01367
01368