/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* Debug Logging support. */ #ifndef xpclog_h___ #define xpclog_h___ #include "mozilla/Attributes.h" #include "mozilla/Logging.h" /* * This uses mozilla/Logging.h. The module name used here is 'xpclog'. * These environment settings should work... * * SET MOZ_LOG=xpclog:5 * SET MOZ_LOG_FILE=logfile.txt * * usage: * XPC_LOG_ERROR(("my comment number %d", 5)) // note the double parens * */ #ifdef DEBUG # define XPC_LOG_INTERNAL(number, _args) \ do { \ if (XPC_Log_Check(number)) { \ XPC_Log_print _args; \ } \ } while (0) # define XPC_LOG_ALWAYS(_args) XPC_LOG_INTERNAL(1, _args) # define XPC_LOG_ERROR(_args) XPC_LOG_INTERNAL(2, _args) # define XPC_LOG_WARNING(_args) XPC_LOG_INTERNAL(3, _args) # define XPC_LOG_DEBUG(_args) XPC_LOG_INTERNAL(4, _args) # define XPC_LOG_FLUSH() PR_LogFlush() # define XPC_LOG_INDENT() XPC_Log_Indent() # define XPC_LOG_OUTDENT() XPC_Log_Outdent() # define XPC_LOG_CLEAR_INDENT() XPC_Log_Clear_Indent() # define XPC_LOG_FINISH() XPC_Log_Finish() extern "C" { void XPC_Log_print(const char* fmt, ...) MOZ_FORMAT_PRINTF(1, 2); bool XPC_Log_Check(int i); void XPC_Log_Indent(); void XPC_Log_Outdent(); void XPC_Log_Clear_Indent(); void XPC_Log_Finish(); } // extern "C" #else # define XPC_LOG_ALWAYS(_args) ((void)0) # define XPC_LOG_ERROR(_args) ((void)0) # define XPC_LOG_WARNING(_args) ((void)0) # define XPC_LOG_DEBUG(_args) ((void)0) # define XPC_LOG_FLUSH() ((void)0) # define XPC_LOG_INDENT() ((void)0) # define XPC_LOG_OUTDENT() ((void)0) # define XPC_LOG_CLEAR_INDENT() ((void)0) # define XPC_LOG_FINISH() ((void)0) #endif #endif /* xpclog_h___ */