diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/swdisp.cpp | 27 | ||||
-rw-r--r-- | src/frontend/swlog.cpp | 95 |
2 files changed, 122 insertions, 0 deletions
diff --git a/src/frontend/swdisp.cpp b/src/frontend/swdisp.cpp new file mode 100644 index 0000000..412ce2e --- /dev/null +++ b/src/frontend/swdisp.cpp @@ -0,0 +1,27 @@ +/****************************************************************************** + * swdisp.cpp - code for base class 'swdisp'. swdisp is the basis for all + * types of displays (e.g. raw textout, curses, xwindow, etc.) + */ + +#include <iostream> +#include <swmodule.h> +#include <swdisp.h> + +static const char *classes[] = {"SWDisplay", "SWObject", 0}; +SWClass SWDisplay::classdef(classes); + +/****************************************************************************** + * SWDisplay::Display - casts a module to a character pointer and displays it to + * raw output (overriden for different display types and + * module types if necessary) + * + * ENT: imodule - module to display + * + * RET: error status + */ + +char SWDisplay::Display(SWModule &imodule) +{ + std::cout << (const char *)imodule; + return 0; +} diff --git a/src/frontend/swlog.cpp b/src/frontend/swlog.cpp new file mode 100644 index 0000000..277a70d --- /dev/null +++ b/src/frontend/swlog.cpp @@ -0,0 +1,95 @@ +//--------------------------------------------------------------------------- + +#include <stdarg.h> +#include <stdio.h> +#ifndef _MSC_VER +#include <iostream> +#endif +#include "swlog.h" +//--------------------------------------------------------------------------- + + +SWLog *SWLog::systemlog = 0; + + +class __staticsystemlog { +public: + __staticsystemlog() { + SWLog::systemlog = new SWLog(); + } + ~__staticsystemlog() { + delete SWLog::systemlog; + } +} _staticsystemlog; + + +void SWLog::LogWarning(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 2) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + +#ifndef _MSC_VER + std::cerr << msg; + std::cerr << std::endl; +#endif + } +} + + +void SWLog::LogError(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + +#ifndef _MSC_VER + std::cerr << msg; + std::cerr << std::endl; +#endif + } +} + + +void SWLog::LogTimedInformation(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 4) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + +#ifndef _MSC_VER + std::cout << msg; + std::cout << std::endl; +#endif + } +} + + +void SWLog::LogInformation(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 3) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + +#ifndef _MSC_VER + std::cout << msg; + std::cout << std::endl; +#endif + } +} |