#ifndef __BLOP_WARNING_H__
#define __BLOP_WARNING_H__
#include "var.h"
#include <iostream>
#include <vector>
#include <string>
namespace blop
{
class warning
{
private:
static var prompt_;
static var format_;
static var fnformat_;
static std::ostream *destination_;
static bool delete_destination_;
static std::vector<std::string> exclude_;
public:
static void prompt(const var &p) { prompt_ = p; }
static var &prompt() { return prompt_; }
static void format(const var &f) { format_ = f; }
static var &format() { return format_; }
static void fnformat(const var &f) { fnformat_ = f; }
static var &fnformat() { return fnformat_; }
static void destination(ostream &dest);
static void destination(const var &filename);
std::ostream &destination() { return *destination_ ; }
static void exclude(const var &);
static void print(const var &message, const var &funcname = "");
};
class debug
{
private:
static var prompt_;
static var format_;
static var fnformat_;
static std::ostream *destination_;
static bool delete_destination_;
static std::vector<std::string> exclude_;
static bool on_;
public:
static void on(bool f) { on_ = f; }
static bool on() { return on_; }
static void prompt(const var &p) { prompt_ = p; }
static var &prompt() { return prompt_; }
static void format(const var &f) { format_ = f; }
static var &format() { return format_; }
static void fnformat(const var &f) { fnformat_ = f; }
static var &fnformat() { return fnformat_; }
static void destination(ostream &dest);
static void destination(const var &filename);
std::ostream &destination() { return *destination_ ; }
static void exclude(const var &);
static void print(const var &message, const var &funcname = "");
};
}
#endif