/*========================================================================= GOBJECT.CPP Author: Gary Liddon @ Watford Created: 4th May 1991 Purpose: Base object Copyright (c) 1991 - 1997 Gary Liddon ===========================================================================*/ /*---------------------------------------------------------------------- Includes -------- */ /* Std Lib ------- */ #include #include #include #include /* Local ----- */ #include "gobject.hpp" /*---------------------------------------------------------------------- Tyepdefs && Defines ------------------- */ /*---------------------------------------------------------------------- Structure defintions -------------------- */ /*---------------------------------------------------------------------- Positional Vars --------------- */ /*---------------------------------------------------------------------- Static Vars ----------- */ int GObject::NumOfErrors=0; int GObject::MaxErrors=3; int GObject::NumOfGobjs=0; int GObject::NumOfWarnings=0; unsigned int GObject::BigObjFlags=0; /*---------------------------------------------------------------------- Data ---- */ char const * const GObject::ErrorText[]= { "Too Many Errors", "Out of Memory", }; /*---------------------------------------------------------------------- Function: Gobject Constructor ---------------------------------------------------------------------- */ GObject::GObject() { NumOfGobjs++; } /*---------------------------------------------------------------------- Function: Gobject Destructor ---------------------------------------------------------------------- */ GObject::~GObject() { NumOfGobjs--; } /*---------------------------------------------------------------------- Function: Flag a Gobject error ---------------------------------------------------------------------- */ void GObject::Error(int ErrNum) { cerr<<"Internal GObject Error\n"; Error(ERR_FATAL,ErrorText[ErrNum]); } /*---------------------------------------------------------------------- Function: Flag General purpose error ---------------------------------------------------------------------- */ void GObject::Error(int Etype,char const *e, ...) { if (e) { switch (Etype) { case ERR_FATAL: cerr<<"Fatal Error: "; break; case ERR_SERIOUS: cerr<<"Serious Error: "; break; case ERR_WARNING: NumOfWarnings++; cerr<<"Warning: "; break; } va_list argptr; va_start(argptr,e); vprintf(e,argptr); va_end(argptr); } switch (Etype) { case ERR_FATAL: exit(10); break; case ERR_SERIOUS: if (NumOfErrors==MaxErrors) Error(ERM_TOOMANYERRORS); else NumOfErrors++; } } /*=========================================================================== end */