Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

Exception Class Reference

#include <myexcept.h>

Inheritance diagram for Exception:

Inheritance graph
[legend]

Public Member Functions

 Exception (const char *a_what=0)

Static Public Member Functions

void AddMessage (const char *a_what)
void AddInt (int value)
const char * what ()

Static Public Attributes

unsigned long Select

Static Protected Attributes

char * what_error
int SoFar
int LastOne

Constructor & Destructor Documentation

Exception::Exception const char *  a_what = 0  ) 
 

Definition at line 47 of file myexcept.cpp.

References AddMessage(), Tracer::AddTrace(), LastOne, Select, SoFar, and what_error.

00048 {
00049    Select++; SoFar = 0;
00050    if (!what_error)                   // make space for exception message
00051    {
00052       LastOne = 511;
00053       what_error = new char[512];
00054       if (!what_error)                // fail to make space
00055       {
00056          LastOne = 0;
00057          what_error = "No heap space for exception message\n";
00058       }
00059    }
00060    AddMessage("\n\nAn exception has been thrown\n");
00061    AddMessage(a_what);
00062    if (a_what) Tracer::AddTrace();
00063 }


Member Function Documentation

void Exception::AddInt int  value  )  [static]
 

Definition at line 80 of file myexcept.cpp.

References AddMessage(), LastOne, SoFar, and what_error.

00081 {
00082    bool negative;
00083    if (value == 0) { AddMessage("0"); return; }
00084    else if (value < 0) { value = -value; negative = true; }
00085    else negative = false;
00086    int n = 0; int v = value;        // how many digits will we need?
00087    while (v > 0) { v /= 10; n++; }
00088    if (negative) n++;
00089    if (LastOne-SoFar < n) { AddMessage("***"); return; }
00090 
00091    SoFar += n; n = SoFar; what_error[n] = 0;
00092    while (value > 0)
00093    {
00094       int nv = value / 10; int rm = value - nv * 10;  value = nv;
00095       what_error[--n] = (char)(rm + '0');
00096    }
00097    if (negative) what_error[--n] = '-';
00098    return;
00099 }

void Exception::AddMessage const char *  a_what  )  [static]
 

Definition at line 65 of file myexcept.cpp.

References LastOne, SoFar, and what_error.

Referenced by AddInt(), Tracer::AddTrace(), Bad_alloc::Bad_alloc(), Bad_cast::Bad_cast(), Bad_typeid::Bad_typeid(), Domain_error::Domain_error(), Exception(), Invalid_argument::Invalid_argument(), Length_error::Length_error(), Logic_error::Logic_error(), Out_of_range::Out_of_range(), Overflow_error::Overflow_error(), Range_error::Range_error(), and Runtime_error::Runtime_error().

00066 {
00067    if (a_what)
00068    {
00069       int l = strlen(a_what); int r = LastOne - SoFar;
00070       if (l < r) { strcpy(what_error+SoFar, a_what); SoFar += l; }
00071       else if (r > 0)
00072       {
00073          strncpy(what_error+SoFar, a_what, r);
00074          what_error[LastOne] = 0;
00075          SoFar = LastOne;
00076       }
00077    }
00078 }

const char* Exception::what  )  [inline, static]
 

Definition at line 81 of file myexcept.h.

Referenced by Terminate().

00081 { return what_error; }


Field Documentation

int Exception::LastOne [static, protected]
 

Definition at line 45 of file myexcept.cpp.

Referenced by AddInt(), AddMessage(), and Exception().

unsigned long Exception::Select [static]
 

Reimplemented in Logic_error, Runtime_error, Domain_error, Invalid_argument, Length_error, Out_of_range, Bad_cast, Bad_typeid, Range_error, Overflow_error, and Bad_alloc.

Definition at line 42 of file myexcept.cpp.

Referenced by Bad_alloc::Bad_alloc(), Bad_cast::Bad_cast(), Bad_typeid::Bad_typeid(), Domain_error::Domain_error(), Exception(), Invalid_argument::Invalid_argument(), Length_error::Length_error(), Logic_error::Logic_error(), Out_of_range::Out_of_range(), Overflow_error::Overflow_error(), Range_error::Range_error(), and Runtime_error::Runtime_error().

int Exception::SoFar [static, protected]
 

Definition at line 44 of file myexcept.cpp.

Referenced by AddInt(), AddMessage(), and Exception().

char * Exception::what_error [static, protected]
 

Definition at line 43 of file myexcept.cpp.

Referenced by AddInt(), AddMessage(), and Exception().


The documentation for this class was generated from the following files:
Generated on Fri Dec 5 04:06:19 2003 for Borqueror by doxygen 1.3.3