home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / ConstraintSections.hxx < prev    next >
Text File  |  1997-09-05  |  2KB  |  62 lines

  1. //---------------------------------------------------------------------------
  2. // 
  3. //  Copyright (c) 1997 by Cayenne Software, Inc.
  4. //   
  5. //  This software is furnished under a license and may be used only in
  6. //  accordance with the terms of such license and with the inclusion of
  7. //  the above copyright notice. This software or any other copies thereof
  8. //  may not be provided or otherwise made available to any other person.
  9. //  No title to and ownership of the software is hereby transferred.
  10. //     
  11. //  The information in this software is subject to change without notice
  12. //  and should not be construed as a commitment by Cayenne Software,
  13. //  Inc.
  14. //
  15. //---------------------------------------------------------------------------
  16. //    File        : ConstraintSections.hxx
  17. //    Original date    : Fri Sep  5 12:59:32 MET DST 1997
  18. //    SCCS id        : @(#)ConstraintSections.hxx    /main/titanic/2 5 Sep 1997
  19. //    Description    : Marcos for supporting runtime constraints
  20. //  
  21. //---------------------------------------------------------------------------
  22.  
  23. #include <stdlib.h>
  24. #include <iostream.h>
  25.  
  26. #ifndef NDEBUG
  27.  
  28. #define invariant(expr) \
  29.     { \
  30.         if (!(expr)) { \
  31.             cerr << "Invariant failed: " << #expr \
  32.                  << " file: " << __FILE__ \
  33.                  << " line: " << __LINE__ << endl; \
  34.         } \
  35.     }
  36.  
  37. #define ensure(expr) \
  38.     { \
  39.         if (!(expr)) { \
  40.             cerr << "Ensure failed: " << #expr \
  41.                  << " file: " << __FILE__ \
  42.                  << " line: " << __LINE__ << endl; \
  43.         } \
  44.     }
  45.  
  46. #define require(expr) \
  47.     { \
  48.         if (!(expr)) { \
  49.             cerr << "Require failed: " << #expr \
  50.                  << " file: " << __FILE__ \
  51.                  << " line: " << __LINE__ << endl; \
  52.         } \
  53.     }
  54.  
  55. #else
  56.  
  57. #define invariant(expr)
  58. #define ensure(expr)
  59. #define require(expr)
  60.  
  61. #endif
  62.