]>
Dogcows Code - chaz/yoink/blob - src/moof/log.cc
2 /*] Copyright (c) 2009-2010, Charles McGarvey [**************************
3 **] All rights reserved.
7 * Distributable under the terms and conditions of the 2-clause BSD license;
8 * see the file COPYING for a complete text of the license.
10 **************************************************************************/
17 int isatty(int dummy
) { return 0; }
28 enum log::level
log::global_level_
= log::info
;
31 void log::level(enum level level
)
33 global_level_
= level
;
36 enum log::level
log::level()
42 log::log(enum level level
) :
48 case log::error
: prefix_
= " error: "; break;
49 case log::warning
: prefix_
= "warning: "; break;
50 case log::info
: prefix_
= " info: "; break;
51 case log::none
: break;
56 case log::error
: prefix_
= "\033[101m error: "; break;
57 case log::warning
: prefix_
= "\033[103mwarning: "; break;
58 case log::info
: prefix_
= " info: "; break;
59 case log::none
: break;
63 std::ostream
& operator << (class log
& log
, log::endl_ endl
)
65 if (log::global_level_
< log
.level_
) return null_log
;
66 if (isatty(1) == 0) return moof::log
<< std::endl
;
67 else return moof::log
<< "\033[0m" << std::endl
;
70 std::ostream
& operator << (std::ostream
& stream
, log::endl_ endl
)
72 if (isatty(1) == 0) return stream
<< std::endl
;
73 else return stream
<< "\033[0m" << std::endl
;
77 std::ostream
& log(std::cout
);
79 static std::ofstream null_log_
;
80 std::ostream
& null_log(null_log_
);
82 class log
log_error( log::error
);
83 class log
log_warning(log::warning
);
84 class log
log_info( log::info
);
87 static int log_script(script
& script
, enum log::level level
)
89 static class log
* logs
[] = {0, &log_error
, &log_warning
, &log_info
};
91 script::slot param
= script
[1];
93 while (!param
.is_none())
95 (*logs
[level
])(param
);
102 void log::import(script
& script
)
104 script
.import_function("LogError",
105 boost::bind(log_script
, _1
, log::error
));
106 script
.import_function("LogWarning",
107 boost::bind(log_script
, _1
, log::warning
));
108 script
.import_function("LogInfo",
109 boost::bind(log_script
, _1
, log::info
));
110 script
.import_function("print",
111 boost::bind(log_script
, _1
, log::info
));
This page took 0.034041 seconds and 4 git commands to generate.