Introduce a NullLog class, which ignores all messages.

The purpose of this class is so that GetLogIfAllCategoriesSet
can always return an instance of some class, whether it be a real
logging class or a "null" class, which ignores messages.  Code
that is littered with if statements that only log if the pointer
is non-null can get very unwieldy very quickly, so this should
help code readability in such circumstances.

Since I'm in this code anyway, I'm also deleting the
PrintfWithFlags methods, as well as all the flags, since they
appear to be dead code that have been superceded by newer
mechanisms and all the flags are simply ignored.

llvm-svn: 236174
This commit is contained in:
Zachary Turner
2015-04-29 22:55:28 +00:00
parent 2688a49981
commit c1592658d5
5 changed files with 279 additions and 197 deletions

View File

@@ -77,6 +77,23 @@ Log::GetMask() const
return m_mask_bits;
}
void
Log::PutCString(const char *cstr)
{
Printf("%s", cstr);
}
//----------------------------------------------------------------------
// Simple variable argument logging with flags.
//----------------------------------------------------------------------
void
Log::Printf(const char *format, ...)
{
va_list args;
va_start(args, format);
VAPrintf(format, args);
va_end(args);
}
//----------------------------------------------------------------------
// All logging eventually boils down to this function call. If we have
@@ -84,7 +101,7 @@ Log::GetMask() const
// a valid file handle, we also log to the file.
//----------------------------------------------------------------------
void
Log::PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args)
Log::VAPrintf(const char *format, va_list args)
{
// Make a copy of our stream shared pointer in case someone disables our
// log while we are logging and releases the stream
@@ -136,59 +153,20 @@ Log::PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args)
}
}
void
Log::PutCString (const char *cstr)
{
Printf ("%s", cstr);
}
//----------------------------------------------------------------------
// Simple variable argument logging with flags.
//----------------------------------------------------------------------
void
Log::Printf(const char *format, ...)
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (0, format, args);
va_end (args);
}
void
Log::VAPrintf (const char *format, va_list args)
{
PrintfWithFlagsVarArg (0, format, args);
}
//----------------------------------------------------------------------
// Simple variable argument logging with flags.
//----------------------------------------------------------------------
void
Log::PrintfWithFlags (uint32_t flags, const char *format, ...)
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (flags, format, args);
va_end (args);
}
//----------------------------------------------------------------------
// Print debug strings if and only if the global debug option is set to
// a non-zero value.
//----------------------------------------------------------------------
void
Log::Debug (const char *format, ...)
Log::Debug(const char *format, ...)
{
if (GetOptions().Test(LLDB_LOG_OPTION_DEBUG))
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (LLDB_LOG_FLAG_DEBUG, format, args);
va_end (args);
}
if (!GetOptions().Test(LLDB_LOG_OPTION_DEBUG))
return;
va_list args;
va_start(args, format);
VAPrintf(format, args);
va_end(args);
}
@@ -197,15 +175,15 @@ Log::Debug (const char *format, ...)
// a non-zero value.
//----------------------------------------------------------------------
void
Log::DebugVerbose (const char *format, ...)
Log::DebugVerbose(const char *format, ...)
{
if (GetOptions().AllSet (LLDB_LOG_OPTION_DEBUG | LLDB_LOG_OPTION_VERBOSE))
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (LLDB_LOG_FLAG_DEBUG | LLDB_LOG_FLAG_VERBOSE, format, args);
va_end (args);
}
if (!GetOptions().AllSet(LLDB_LOG_OPTION_DEBUG | LLDB_LOG_OPTION_VERBOSE))
return;
va_list args;
va_start(args, format);
VAPrintf(format, args);
va_end(args);
}
@@ -213,34 +191,34 @@ Log::DebugVerbose (const char *format, ...)
// Log only if all of the bits are set
//----------------------------------------------------------------------
void
Log::LogIf (uint32_t bits, const char *format, ...)
Log::LogIf(uint32_t bits, const char *format, ...)
{
if (m_options.AllSet (bits))
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (0, format, args);
va_end (args);
}
if (!m_options.AllSet(bits))
return;
va_list args;
va_start(args, format);
VAPrintf(format, args);
va_end(args);
}
//----------------------------------------------------------------------
// Printing of errors that are not fatal.
//----------------------------------------------------------------------
void
Log::Error (const char *format, ...)
Log::Error(const char *format, ...)
{
char *arg_msg = NULL;
char *arg_msg = nullptr;
va_list args;
va_start (args, format);
::vasprintf (&arg_msg, format, args);
va_end (args);
va_start(args, format);
::vasprintf(&arg_msg, format, args);
va_end(args);
if (arg_msg != NULL)
{
PrintfWithFlags (LLDB_LOG_FLAG_ERROR, "error: %s", arg_msg);
free (arg_msg);
}
if (arg_msg == nullptr)
return;
VAPrintf("error: %s", arg_msg);
free(arg_msg);
}
//----------------------------------------------------------------------
@@ -248,20 +226,20 @@ Log::Error (const char *format, ...)
// immediately.
//----------------------------------------------------------------------
void
Log::FatalError (int err, const char *format, ...)
Log::FatalError(int err, const char *format, ...)
{
char *arg_msg = NULL;
char *arg_msg = nullptr;
va_list args;
va_start (args, format);
::vasprintf (&arg_msg, format, args);
va_end (args);
va_start(args, format);
::vasprintf(&arg_msg, format, args);
va_end(args);
if (arg_msg != NULL)
if (arg_msg != nullptr)
{
PrintfWithFlags (LLDB_LOG_FLAG_ERROR | LLDB_LOG_FLAG_FATAL, "error: %s", arg_msg);
::free (arg_msg);
VAPrintf("error: %s", arg_msg);
::free(arg_msg);
}
::exit (err);
::exit(err);
}
@@ -270,15 +248,15 @@ Log::FatalError (int err, const char *format, ...)
// enabled.
//----------------------------------------------------------------------
void
Log::Verbose (const char *format, ...)
Log::Verbose(const char *format, ...)
{
if (m_options.Test(LLDB_LOG_OPTION_VERBOSE))
{
va_list args;
va_start (args, format);
PrintfWithFlagsVarArg (LLDB_LOG_FLAG_VERBOSE, format, args);
va_end (args);
}
if (!m_options.Test(LLDB_LOG_OPTION_VERBOSE))
return;
va_list args;
va_start(args, format);
VAPrintf(format, args);
va_end(args);
}
//----------------------------------------------------------------------
@@ -286,40 +264,40 @@ Log::Verbose (const char *format, ...)
// enabled.
//----------------------------------------------------------------------
void
Log::WarningVerbose (const char *format, ...)
Log::WarningVerbose(const char *format, ...)
{
if (m_options.Test(LLDB_LOG_OPTION_VERBOSE))
{
char *arg_msg = NULL;
va_list args;
va_start (args, format);
::vasprintf (&arg_msg, format, args);
va_end (args);
if (!m_options.Test(LLDB_LOG_OPTION_VERBOSE))
return;
if (arg_msg != NULL)
{
PrintfWithFlags (LLDB_LOG_FLAG_WARNING | LLDB_LOG_FLAG_VERBOSE, "warning: %s", arg_msg);
free (arg_msg);
}
}
char *arg_msg = nullptr;
va_list args;
va_start(args, format);
::vasprintf(&arg_msg, format, args);
va_end(args);
if (arg_msg == nullptr)
return;
VAPrintf("warning: %s", arg_msg);
free(arg_msg);
}
//----------------------------------------------------------------------
// Printing of warnings that are not fatal.
//----------------------------------------------------------------------
void
Log::Warning (const char *format, ...)
Log::Warning(const char *format, ...)
{
char *arg_msg = NULL;
char *arg_msg = nullptr;
va_list args;
va_start (args, format);
::vasprintf (&arg_msg, format, args);
va_end (args);
va_start(args, format);
::vasprintf(&arg_msg, format, args);
va_end(args);
if (arg_msg != NULL)
{
PrintfWithFlags (LLDB_LOG_FLAG_WARNING, "warning: %s", arg_msg);
free (arg_msg);
}
if (arg_msg == nullptr)
return;
VAPrintf("warning: %s", arg_msg);
free(arg_msg);
}
typedef std::map <ConstString, Log::Callbacks> CallbackMap;