blob: 9f05c9d6c088f615a01fa140936780a438c2b686 [file] [log] [blame]
//#####################################################################
// Copyright 2004-2006, Geoffrey Irving, Frank Losasso, Andrew Selle.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class LOG
//#####################################################################
#ifndef __LOG__
#define __LOG__
#include <ostream>
namespace PhysBAM
{
class LOG_ENTRY;
class LOG
{
public:
static std::ostream cout;
static std::ostream cerr;
private:
static LOG* instance;
int timer_id;
static int verbosity_level;
static bool suppress_cout;
static bool suppress_timing;
LOG_ENTRY* root;
LOG_ENTRY* current_entry;
static FILE* log_file;
static bool log_file_temporary;
friend class LOG_ENTRY;
friend class LOG_COUT_BUFFER;
friend class LOG_CERR_BUFFER;
LOG();
~LOG();
public:
//#####################################################################
static void Initialize_Logging (const bool suppress_cout_input = false, const bool suppress_timing_input = false, const int verbosity_level_input = 1 << 1, const bool cache_initial_output = false);
static void Copy_Log_To_File (const std::string& filename, const bool append);
static void Finish_Logging();
static void Time (const char* format, ...);
static void Stop_Time();
static void Print (const char* format, ...);
static void Push_Scope (const std::string& scope_identifier, const char* format_string, ...);
static void Pop_Scope();
static void Reset();
static void Dump_Log();
static void Dump_Log_XML (std::ostream& output);
//#####################################################################
};
}
#endif