X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fdebug%2Flogstream.cxx;h=d906679e88ae1efa19194094ce6a146e539f0b6f;hb=2e71b64de1d937e2b7c34dd4a2365be455d0b82a;hp=66940629225a1ccefbf4bb51c347efa4db3f3a50;hpb=5173d709e090b953eaf800cbcd1bf897de332a12;p=simgear.git diff --git a/simgear/debug/logstream.cxx b/simgear/debug/logstream.cxx index 66940629..d906679e 100644 --- a/simgear/debug/logstream.cxx +++ b/simgear/debug/logstream.cxx @@ -4,29 +4,47 @@ // // Copyright (C) 1998 Bernie Bright - bbright@c031.aone.net.au // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of the -// License, or (at your option) any later version. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. // -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. +// Library General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#include + #include "logstream.hxx" +logstream *logstream::global_logstream = 0; + bool logbuf::logging_enabled = true; -fgDebugClass logbuf::logClass = FG_NONE; -fgDebugPriority logbuf::logPriority = FG_INFO; +#ifdef _MSC_VER + bool logbuf::has_console = true; +#endif +sgDebugClass logbuf::logClass = SG_NONE; +sgDebugPriority logbuf::logPriority = SG_INFO; streambuf* logbuf::sbuf = NULL; +namespace { +struct ignore_me +{ + ignore_me() + { + logstream::initGlobalLogstream(); + } +}; +static ignore_me im; +} + logbuf::logbuf() { // if ( sbuf == NULL ) @@ -49,15 +67,48 @@ logbuf::set_sb( streambuf* sb ) } void -logbuf::set_log_level( fgDebugClass c, fgDebugPriority p ) +logbuf::set_log_level( sgDebugClass c, sgDebugPriority p ) { logClass = c; logPriority = p; } void -logstream::setLogLevels( fgDebugClass c, fgDebugPriority p ) +logbuf::set_log_classes (sgDebugClass c) +{ + logClass = c; +} + +sgDebugClass +logbuf::get_log_classes () +{ + return logClass; +} + +void +logbuf::set_log_priority (sgDebugPriority p) +{ + logPriority = p; +} + +sgDebugPriority +logbuf::get_log_priority () +{ + return logPriority; +} + +void +logstream::setLogLevels( sgDebugClass c, sgDebugPriority p ) { logbuf::set_log_level( c, p ); } +logstream * +logstream::initGlobalLogstream() +{ + // Force initialization of cerr. + static std::ios_base::Init initializer; + if( !global_logstream ) + global_logstream = new logstream(std::cerr); + return global_logstream; +}