]> git.mxchange.org Git - simgear.git/blobdiff - simgear/debug/logstream.cxx
remove old .cvsignore files
[simgear.git] / simgear / debug / logstream.cxx
index 66940629225a1ccefbf4bb51c347efa4db3f3a50..664038b93a713e57ebcfb368ca0ea5407e236dba 100644 (file)
@@ -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 <iostream>
+
 #include "logstream.hxx"
 
+logstream *logstream::global_logstream = 0;
+
 bool            logbuf::logging_enabled = true;
-fgDebugClass    logbuf::logClass        = FG_NONE;
-fgDebugPriority logbuf::logPriority     = FG_INFO;
+#ifdef _WIN32
+   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;
+}