Files
FC1/ResourceCompiler/IRCLog.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

194 lines
4.5 KiB
C

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2002.
// -------------------------------------------------------------------------
// File name: ILog.h
// Version: v1.00
// Created: 24.1.2002 by Sergiy
// Compilers: Visual Studio.NET
// Description: ILog interface.
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef _RESOURCE_COMPILER_IRCLOG_HDR_
#define _RESOURCE_COMPILER_IRCLOG_HDR_
#include <stdarg.h>
#include "..\CryCommon\ILog.h" // FIXME: won't compile otherwise?
// This interface is used to log events inside the convertors,
// including information and warning messages
struct IRCLog: public ILog
{
// interface IRCLog ---------------------------------------------
//! is used by LogV, you only have to implement this
virtual void LogLine ( const ELogType ineType, const char* szText) = 0;
// interface ILog -----------------------------------------------
// use only these three methods (\n is auto splitting in lines)
//
virtual void Log( const char* szFormat, ...);
//
virtual void LogWarning( const char* szFormat, ...);
//
virtual void LogError( const char* szFormat, ...);
// --------------------------------------------------------------
//! split in lines (empty lines if given) and print with Log function
virtual void LogV( const ELogType ineType, const char* szFormat, va_list args )
{
char str[16*1024],*p=str;
vsprintf(str,szFormat, args);
bool bRun=true;
while(bRun)
{
char *start=p;
// search for end marker
while(*p!=0 && *p!=10)
{
if(*p<32)*p=' '; // remove nonprintable characters
p++;
}
if(*p==0)
bRun=false;
*p=0;
LogLine(ineType,start);
p++; // jump over end marker
}
}
/*
void Info (const char* szFormat, ...);
virtual void Info (const char* szFormat, va_list args) {Log(szFormat, args);}
void Warning (const char* szFormat, ...);
virtual void Warning (const char* szFormat, va_list args) {Log(szFormat, args);}
void Error (const char* szFormat, ...);
virtual void Error (const char* szFormat, va_list args) {Log(szFormat, args);}
*/
void ThrowError(const char* szFormat, ...); // print message and exit CStatCFGCompiler::Process function, todo: Use same system for all converters
void LogPlus(const char* szFormat, ...); // print message on the prev line (maybe not needed)
virtual void Release() {}
/*
void Log(int dwFlags,const char *szCommand,...)
{
va_list arg;
va_start(arg, szCommand);
LogV (eMessage, szCommand, arg);
va_end(arg);
}
*/
//set the file used to log to disk
virtual void SetFileName (const char *command = NULL) {}
virtual const char* GetFileName() {return "stdout";}
virtual void LogToFile(const char *szCommand,...)
{
va_list arg;
va_start(arg, szCommand);
LogV (eMessage, szCommand, arg);
va_end(arg);
}
virtual void LogToFilePlus(const char *szCommand,...)
{
va_list arg;
va_start(arg, szCommand);
LogV (eMessage, szCommand, arg);
va_end(arg);
}
//log to console only
virtual void LogToConsole(const char *szCommand,...)
{
va_list arg;
va_start(arg, szCommand);
LogV (eMessage, szCommand, arg);
va_end(arg);
}
//
virtual void LogToConsolePlus(const char *szCommand,...) {}
//
virtual void UpdateLoadingScreen(const char *szCommand,...) {}
//
virtual void UpdateLoadingScreenPlus(const char *szCommand,...) {}
//
virtual void EnableVerbosity( bool bEnable ) {}
//
virtual void SetVerbosity( int verbosity ) {}
virtual int GetVerbosityLevel () {return 5;}
};
inline void IRCLog::Log(const char* szFormat, ...)
{
va_list arg;
va_start(arg, szFormat);
LogV (eMessage, szFormat, arg);
va_end(arg);
}
inline void IRCLog::LogWarning(const char* szFormat, ...)
{
va_list arg;
va_start(arg, szFormat);
LogV (eWarning, szFormat, arg);
va_end(arg);
}
inline void IRCLog::LogError(const char* szFormat, ...)
{
va_list arg;
va_start(arg, szFormat);
LogV (eError, szFormat, arg);
va_end(arg);
}
inline void IRCLog::LogPlus(const char* szFormat, ...)
{
va_list arg;
va_start(arg, szFormat);
LogV (eMessage, szFormat, arg);
va_end(arg);
}
inline void IRCLog::ThrowError(const char* szFormat, ...)
{
va_list arg;
va_start(arg, szFormat);
LogV (eError, szFormat, arg);
va_end(arg);
// Beep(1000,1000);
// exit(0);
throw "ThrowError";
}
#endif // _RESOURCE_COMPILER_IRCLOG_HDR_