00001 /* 00002 File: Basics.cc 00003 00004 Function: Implements Basics.h 00005 00006 Author(s): Andrew Willmott 00007 00008 Copyright: (c) 1995-2000, Andrew Willmott 00009 00010 Notes: 00011 00012 */ 00013 00014 #include "cl/Basics.h" 00015 #include <stdio.h> 00016 #include <stdlib.h> 00017 #include <iostream.h> 00018 00019 00020 // --- Error functions for range and routine checking ------------------------- 00021 00022 00023 static Void DebuggerBreak() 00024 { 00025 abort(); 00026 } 00027 00028 Void _Assert(Int condition, const Char *errorMessage, const Char *file, Int line) 00029 { 00030 if (!condition) 00031 { 00032 Char reply; 00033 00034 cerr << "\n*** Assert failed (line " << line << " in " << 00035 file << "): " << errorMessage << endl; 00036 cerr << " Continue? [y/n] "; 00037 cin >> reply; 00038 00039 if (reply != 'y') 00040 { 00041 DebuggerBreak(); 00042 exit(1); 00043 } 00044 } 00045 } 00046 00047 Void _Expect(Int condition, const Char *warningMessage, const Char *file, Int line) 00048 { 00049 if (!condition) 00050 cerr << "\n*** Warning (line " << line << " in " << file << "): " << 00051 warningMessage << endl; 00052 } 00053 00054 Void _CheckRange(Int i, Int lowerBound, Int upperBound, 00055 const Char *rangeMessage, const Char *file, Int line) 00056 { 00057 if (i < lowerBound || i >= upperBound) 00058 { 00059 Char reply; 00060 00061 cerr << "\n*** Range Error (line " << line << " in " << file << 00062 "): " << rangeMessage << endl; 00063 cerr << " Continue? [y/n] "; 00064 cin >> reply; 00065 00066 if (reply != 'y') 00067 { 00068 DebuggerBreak(); 00069 exit(1); 00070 } 00071 } 00072 }