//
// 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 _MSC_VER
+ bool logbuf::has_console = true;
+#endif
+sgDebugClass logbuf::logClass = SG_NONE;
+sgDebugPriority logbuf::logPriority = SG_INFO;
streambuf* logbuf::sbuf = NULL;
logbuf::logbuf()
}
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 );
}
+void
+logstream::initGlobalLogstream()
+{
+ // Force initialization of cerr.
+ static std::ios_base::Init initializer;
+ // XXX Is the following still necessary?
+#ifdef __APPLE__
+ /**
+ * There appears to be a bug in the C++ runtime in Mac OS X that
+ * will crash if certain funtions are called (in this case
+ * cerr.rdbuf()) during static initialization of a class. This
+ * print statement is hack to kick the library in the pants so it
+ * won't crash when cerr.rdbuf() is first called -DW
+ **/
+ std::cout << "Using Mac OS X hack for initializing C++ stdio..."
+ << std::endl;
+#endif
+ global_logstream = new logstream(std::cerr);
+}