/*
 * ghost.h
 *
 */

#ifndef GHOST_H_
#define GHOST_H_

#include <stdarg.h>

class GhostLogger
{
public:
	enum Level
	{
		debug,
		trace,
		info,
		success,
		warning,
		error,
		fail,
		fatal
	};

	//virtual void logError(const char* fmt, ...);
	//virtual void vLogError(const char* fmt, va_list args);

	virtual void print(Level level, const char* fmt, ...);

	virtual void vPrint(Level level, const char* fmt, va_list args);

	virtual ~GhostLogger();
};


class Ghost
{
public:
	static int parseOption(const char* opt);

	static void setLoggerInterface(GhostLogger* logger);

	static void rtLoggerInstall();

	static GhostLogger& logger();

	static void playbackStepWait(int timeout_ms);
	static void playbackStep();
};


#endif /* GHOST_H_ */
