Skip to content
Snippets Groups Projects
Commit c573f43c authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Moved stuff from Logger.cpp to Logger_impl.h

parent 35b0e105
No related branches found
No related tags found
1 merge request!22Header only
......@@ -39,7 +39,6 @@ set( headers
set( common_SOURCES
FileName.cpp
Object.cpp
Logger.cpp
String.cpp
Timer.cpp )
......
/***************************************************************************
Logger.cpp - description
-------------------
begin : 2007/08/22
copyright : (C) 2007 by Tomas Oberhuber
email : tomas.oberhuber@fjfi.cvut.cz
***************************************************************************/
/* See Copyright Notice in tnl/Copyright */
#include <iomanip>
#include <TNL/Logger.h>
#include <TNL/Devices/CudaDeviceInfo.h>
#include <TNL/Devices/SystemInfo.h>
namespace TNL {
Logger :: Logger( int _width, std::ostream& _stream )
: width( _width ),
stream( _stream )
{
}
void Logger :: writeHeader( const String& title )
{
int fill = stream. fill();
int titleLength = title. getLength();
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream << "|" << std::setfill( ' ' ) << std::setw( width ) << "|" << std::endl;
stream << "|" << std::setw( width / 2 + titleLength / 2 )
<< title << std::setw( width / 2 - titleLength / 2 ) << "|" << std::endl;
stream << "|" << std::setfill( ' ' ) << std::setw( width ) << "|" << std::endl;
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream. fill( fill );
}
void Logger :: writeSeparator()
{
int fill = stream. fill();
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream. fill( fill );
}
bool Logger :: writeSystemInformation( const Config::ParameterContainer& parameters )
{
Devices::SystemInfo::writeDeviceInfo( *this );
if( parameters.getParameter< String >( "device" ) == "cuda" )
Devices::CudaDeviceInfo::writeDeviceInfo( *this );
return true;
}
void Logger :: writeCurrentTime( const char* label )
{
writeParameter< String >( label, Devices::SystemInfo::getCurrentTime() );
}
} // namespace TNL
......@@ -11,6 +11,7 @@
#pragma once
#include <ostream>
#include <TNL/Config/ParameterContainer.h>
namespace TNL {
......@@ -18,15 +19,15 @@ namespace TNL {
/// Creates calculations log in the form of a table.
class Logger
{
public:
public:
/////
/// \brief Basic constructor.
///
/// \param _width Integer that defines the width of the log.
/// \param _stream Defines output stream where the log will be printed out.
Logger( int _width,
std::ostream& _stream );
Logger( int width, std::ostream& stream )
: width( width ), stream( stream )
{}
/////
/// \brief Creates header in given log.
......@@ -76,8 +77,7 @@ class Logger
const ParameterType& value,
int parameterLevel = 0 );
protected:
protected:
/// \brief Integer defining the width of the log.
int width;
......
......@@ -13,29 +13,72 @@
#include <sstream>
#include <iomanip>
#include <TNL/Logger.h>
#include <TNL/Devices/CudaDeviceInfo.h>
#include <TNL/Devices/SystemInfo.h>
namespace TNL {
template< typename ParameterType >
void Logger::writeParameter( const String& label,
const String& parameterName,
const Config::ParameterContainer& parameters,
int parameterLevel )
inline void
Logger::writeHeader( const String& title )
{
const int fill = stream.fill();
const int titleLength = title.getLength();
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream << "|" << std::setfill( ' ' ) << std::setw( width ) << "|" << std::endl;
stream << "|" << std::setw( width / 2 + titleLength / 2 )
<< title << std::setw( width / 2 - titleLength / 2 ) << "|" << std::endl;
stream << "|" << std::setfill( ' ' ) << std::setw( width ) << "|" << std::endl;
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream.fill( fill );
}
inline void
Logger::writeSeparator()
{
const int fill = stream.fill();
stream << "+" << std::setfill( '-' ) << std::setw( width ) << "+" << std::endl;
stream.fill( fill );
}
inline bool
Logger::writeSystemInformation( const Config::ParameterContainer& parameters )
{
Devices::SystemInfo::writeDeviceInfo( *this );
if( parameters.getParameter< String >( "device" ) == "cuda" )
Devices::CudaDeviceInfo::writeDeviceInfo( *this );
return true;
}
inline void
Logger::writeCurrentTime( const char* label )
{
writeParameter< String >( label, Devices::SystemInfo::getCurrentTime() );
}
template< typename T >
void
Logger::writeParameter( const String& label,
const String& parameterName,
const Config::ParameterContainer& parameters,
int parameterLevel )
{
stream << "| ";
int i;
for( i = 0; i < parameterLevel; i ++ )
stream << " ";
std::stringstream str;
str << parameters.getParameter< ParameterType >( parameterName );
stream << label
<< std::setw( width - label.getLength() - parameterLevel - 3 )
<< str.str() << " |" << std::endl;
str << parameters.getParameter< T >( parameterName );
stream << label
<< std::setw( width - label.getLength() - parameterLevel - 3 )
<< str.str() << " |" << std::endl;
}
template< typename ParameterType >
void Logger :: writeParameter( const String& label,
const ParameterType& value,
int parameterLevel )
template< typename T >
void
Logger::writeParameter( const String& label,
const T& value,
int parameterLevel )
{
stream << "| ";
int i;
......@@ -43,9 +86,9 @@ void Logger :: writeParameter( const String& label,
stream << " ";
std::stringstream str;
str << value;
stream << label
<< std::setw( width - label.getLength() - parameterLevel - 3 )
<< str.str() << " |" << std::endl;
};
stream << label
<< std::setw( width - label.getLength() - parameterLevel - 3 )
<< str.str() << " |" << std::endl;
}
} // namespace TNL
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment