Commit 7e7b97ba authored by darin's avatar darin

Tools:

        * Scripts/update-kwq-assert: Added. Script to keep the KWQ version
	of the assert macros in sync. with the WebFoundation version. Just
	update the WebFoundation one and run this script.

        * wftool/WFTool.m: Remove obsolete include.

WebCore:

	Switch over to new assertion/logging scheme.

        * kwq/KWQAssertions.h: Added.
        * kwq/KWQAssertions.m: Added.
        * kwq/KWQLogging.h: Added.
        * kwq/KWQLogging.m: Added.
        * kwq/kwqdebug.h: Removed.
        * kwq/kwqdebug.mm: Removed.
        * WebCore.pbproj/project.pbxproj: Update to reflect above changes.

        * kwq/KWQApplication.mm:
        * kwq/KWQChar.mm:
        * kwq/KWQColor.mm:
        * kwq/KWQComboBox.mm:
        * kwq/KWQCompletion.mm:
        * kwq/KWQCursor.mm:
        * kwq/KWQDrawUtil.mm:
        * kwq/KWQEvent.mm:
        * kwq/KWQFontInfo.mm:
        * kwq/KWQFontMetrics.mm:
        * kwq/KWQFrame.mm:
        * kwq/KWQHBox.mm:
        * kwq/KWQInputDialog.mm:
        * kwq/KWQInvisibleButton.mm:
        * kwq/KWQKConfigBase.mm:
        * kwq/KWQKFileDialog.mm:
        * kwq/KWQKFileItem.mm:
        * kwq/KWQKGlobalSettings.mm:
        * kwq/KWQKHTMLPartImpl.mm:
        * kwq/KWQKHTMLSettings.mm:
        * kwq/KWQKIconLoader.mm:
        * kwq/KWQKJob.mm:
        * kwq/KWQKLocale.mm:
        * kwq/KWQKMimeType.mm:
        * kwq/KWQKPartsEvent.mm:
        * kwq/KWQKSimpleConfig.mm:
        * kwq/KWQKURL.mm:
        * kwq/KWQKWin.mm:
        * kwq/KWQKWinModule.mm:
        * kwq/KWQKjobclasses.mm:
        * kwq/KWQKnetaccess.mm:
        * kwq/KWQLabel.mm:
        * kwq/KWQLineEdit.mm:
        * kwq/KWQListBox.mm:
        * kwq/KWQListImpl.mm:
        * kwq/KWQLoaderImpl.mm:
        * kwq/KWQObject.mm:
        * kwq/KWQPaintDeviceMetrics.mm:
        * kwq/KWQPainter.mm:
        * kwq/KWQPixmap.mm:
        * kwq/KWQRegion.mm:
        * kwq/KWQScrollView.mm:
        * kwq/KWQSlot.mm:
        * kwq/KWQString.mm:
        * kwq/KWQTimer.mm:
        * kwq/KWQWidget.mm:
        * kwq/KWQbrowserinterface.mm:
        * kwq/KWQtextcodec.mm:
        * kwq/KWQtextstream.mm:
        * kwq/KWQxml.mm:
        * kwq/WebCoreBridge.mm:
        * kwq/WebCoreCookieAdapter.m:
        * kwq/WebCoreHistory.m:
        * kwq/WebCoreImageRendererFactory.m:
        * kwq/WebCoreTextRendererFactory.m:
        * kwq/WebCoreViewFactory.m:
	Update to use new assertions and logging macros.
	In some cases, just removed unneeded includes.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2001 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent d334a82e
2002-09-08 Darin Adler <darin@apple.com>
Switch over to new assertion/logging scheme.
* kwq/KWQAssertions.h: Added.
* kwq/KWQAssertions.m: Added.
* kwq/KWQLogging.h: Added.
* kwq/KWQLogging.m: Added.
* kwq/kwqdebug.h: Removed.
* kwq/kwqdebug.mm: Removed.
* WebCore.pbproj/project.pbxproj: Update to reflect above changes.
* kwq/KWQApplication.mm:
* kwq/KWQChar.mm:
* kwq/KWQColor.mm:
* kwq/KWQComboBox.mm:
* kwq/KWQCompletion.mm:
* kwq/KWQCursor.mm:
* kwq/KWQDrawUtil.mm:
* kwq/KWQEvent.mm:
* kwq/KWQFontInfo.mm:
* kwq/KWQFontMetrics.mm:
* kwq/KWQFrame.mm:
* kwq/KWQHBox.mm:
* kwq/KWQInputDialog.mm:
* kwq/KWQInvisibleButton.mm:
* kwq/KWQKConfigBase.mm:
* kwq/KWQKFileDialog.mm:
* kwq/KWQKFileItem.mm:
* kwq/KWQKGlobalSettings.mm:
* kwq/KWQKHTMLPartImpl.mm:
* kwq/KWQKHTMLSettings.mm:
* kwq/KWQKIconLoader.mm:
* kwq/KWQKJob.mm:
* kwq/KWQKLocale.mm:
* kwq/KWQKMimeType.mm:
* kwq/KWQKPartsEvent.mm:
* kwq/KWQKSimpleConfig.mm:
* kwq/KWQKURL.mm:
* kwq/KWQKWin.mm:
* kwq/KWQKWinModule.mm:
* kwq/KWQKjobclasses.mm:
* kwq/KWQKnetaccess.mm:
* kwq/KWQLabel.mm:
* kwq/KWQLineEdit.mm:
* kwq/KWQListBox.mm:
* kwq/KWQListImpl.mm:
* kwq/KWQLoaderImpl.mm:
* kwq/KWQObject.mm:
* kwq/KWQPaintDeviceMetrics.mm:
* kwq/KWQPainter.mm:
* kwq/KWQPixmap.mm:
* kwq/KWQRegion.mm:
* kwq/KWQScrollView.mm:
* kwq/KWQSlot.mm:
* kwq/KWQString.mm:
* kwq/KWQTimer.mm:
* kwq/KWQWidget.mm:
* kwq/KWQbrowserinterface.mm:
* kwq/KWQtextcodec.mm:
* kwq/KWQtextstream.mm:
* kwq/KWQxml.mm:
* kwq/WebCoreBridge.mm:
* kwq/WebCoreCookieAdapter.m:
* kwq/WebCoreHistory.m:
* kwq/WebCoreImageRendererFactory.m:
* kwq/WebCoreTextRendererFactory.m:
* kwq/WebCoreViewFactory.m:
Update to use new assertions and logging macros.
In some cases, just removed unneeded includes.
2002-09-08 David Hyatt <hyatt@apple.com>
Landing the new layer system and turning it on for painting of
......
2002-09-08 Darin Adler <darin@apple.com>
Switch over to new assertion/logging scheme.
* kwq/KWQAssertions.h: Added.
* kwq/KWQAssertions.m: Added.
* kwq/KWQLogging.h: Added.
* kwq/KWQLogging.m: Added.
* kwq/kwqdebug.h: Removed.
* kwq/kwqdebug.mm: Removed.
* WebCore.pbproj/project.pbxproj: Update to reflect above changes.
* kwq/KWQApplication.mm:
* kwq/KWQChar.mm:
* kwq/KWQColor.mm:
* kwq/KWQComboBox.mm:
* kwq/KWQCompletion.mm:
* kwq/KWQCursor.mm:
* kwq/KWQDrawUtil.mm:
* kwq/KWQEvent.mm:
* kwq/KWQFontInfo.mm:
* kwq/KWQFontMetrics.mm:
* kwq/KWQFrame.mm:
* kwq/KWQHBox.mm:
* kwq/KWQInputDialog.mm:
* kwq/KWQInvisibleButton.mm:
* kwq/KWQKConfigBase.mm:
* kwq/KWQKFileDialog.mm:
* kwq/KWQKFileItem.mm:
* kwq/KWQKGlobalSettings.mm:
* kwq/KWQKHTMLPartImpl.mm:
* kwq/KWQKHTMLSettings.mm:
* kwq/KWQKIconLoader.mm:
* kwq/KWQKJob.mm:
* kwq/KWQKLocale.mm:
* kwq/KWQKMimeType.mm:
* kwq/KWQKPartsEvent.mm:
* kwq/KWQKSimpleConfig.mm:
* kwq/KWQKURL.mm:
* kwq/KWQKWin.mm:
* kwq/KWQKWinModule.mm:
* kwq/KWQKjobclasses.mm:
* kwq/KWQKnetaccess.mm:
* kwq/KWQLabel.mm:
* kwq/KWQLineEdit.mm:
* kwq/KWQListBox.mm:
* kwq/KWQListImpl.mm:
* kwq/KWQLoaderImpl.mm:
* kwq/KWQObject.mm:
* kwq/KWQPaintDeviceMetrics.mm:
* kwq/KWQPainter.mm:
* kwq/KWQPixmap.mm:
* kwq/KWQRegion.mm:
* kwq/KWQScrollView.mm:
* kwq/KWQSlot.mm:
* kwq/KWQString.mm:
* kwq/KWQTimer.mm:
* kwq/KWQWidget.mm:
* kwq/KWQbrowserinterface.mm:
* kwq/KWQtextcodec.mm:
* kwq/KWQtextstream.mm:
* kwq/KWQxml.mm:
* kwq/WebCoreBridge.mm:
* kwq/WebCoreCookieAdapter.m:
* kwq/WebCoreHistory.m:
* kwq/WebCoreImageRendererFactory.m:
* kwq/WebCoreTextRendererFactory.m:
* kwq/WebCoreViewFactory.m:
Update to use new assertions and logging macros.
In some cases, just removed unneeded includes.
2002-09-08 David Hyatt <hyatt@apple.com>
Landing the new layer system and turning it on for painting of
......
2002-09-08 Darin Adler <darin@apple.com>
Switch over to new assertion/logging scheme.
* kwq/KWQAssertions.h: Added.
* kwq/KWQAssertions.m: Added.
* kwq/KWQLogging.h: Added.
* kwq/KWQLogging.m: Added.
* kwq/kwqdebug.h: Removed.
* kwq/kwqdebug.mm: Removed.
* WebCore.pbproj/project.pbxproj: Update to reflect above changes.
* kwq/KWQApplication.mm:
* kwq/KWQChar.mm:
* kwq/KWQColor.mm:
* kwq/KWQComboBox.mm:
* kwq/KWQCompletion.mm:
* kwq/KWQCursor.mm:
* kwq/KWQDrawUtil.mm:
* kwq/KWQEvent.mm:
* kwq/KWQFontInfo.mm:
* kwq/KWQFontMetrics.mm:
* kwq/KWQFrame.mm:
* kwq/KWQHBox.mm:
* kwq/KWQInputDialog.mm:
* kwq/KWQInvisibleButton.mm:
* kwq/KWQKConfigBase.mm:
* kwq/KWQKFileDialog.mm:
* kwq/KWQKFileItem.mm:
* kwq/KWQKGlobalSettings.mm:
* kwq/KWQKHTMLPartImpl.mm:
* kwq/KWQKHTMLSettings.mm:
* kwq/KWQKIconLoader.mm:
* kwq/KWQKJob.mm:
* kwq/KWQKLocale.mm:
* kwq/KWQKMimeType.mm:
* kwq/KWQKPartsEvent.mm:
* kwq/KWQKSimpleConfig.mm:
* kwq/KWQKURL.mm:
* kwq/KWQKWin.mm:
* kwq/KWQKWinModule.mm:
* kwq/KWQKjobclasses.mm:
* kwq/KWQKnetaccess.mm:
* kwq/KWQLabel.mm:
* kwq/KWQLineEdit.mm:
* kwq/KWQListBox.mm:
* kwq/KWQListImpl.mm:
* kwq/KWQLoaderImpl.mm:
* kwq/KWQObject.mm:
* kwq/KWQPaintDeviceMetrics.mm:
* kwq/KWQPainter.mm:
* kwq/KWQPixmap.mm:
* kwq/KWQRegion.mm:
* kwq/KWQScrollView.mm:
* kwq/KWQSlot.mm:
* kwq/KWQString.mm:
* kwq/KWQTimer.mm:
* kwq/KWQWidget.mm:
* kwq/KWQbrowserinterface.mm:
* kwq/KWQtextcodec.mm:
* kwq/KWQtextstream.mm:
* kwq/KWQxml.mm:
* kwq/WebCoreBridge.mm:
* kwq/WebCoreCookieAdapter.m:
* kwq/WebCoreHistory.m:
* kwq/WebCoreImageRendererFactory.m:
* kwq/WebCoreTextRendererFactory.m:
* kwq/WebCoreViewFactory.m:
Update to use new assertions and logging macros.
In some cases, just removed unneeded includes.
2002-09-08 David Hyatt <hyatt@apple.com>
Landing the new layer system and turning it on for painting of
......
......@@ -191,7 +191,6 @@
F587855702DE375901EA4122,
F587855E02DE375901EA4122,
F587856502DE375901EA4122,
F587856A02DE375901EA4122,
F587856C02DE375901EA4122,
F587856D02DE375901EA4122,
F587857502DE375901EA4122,
......@@ -494,6 +493,8 @@
F583D50303140623018635CE,
F5517DC4031AB56301A80180,
F690CFEC031C47F401CA2AC4,
9377FB57032C235C008635CE,
93861DE1032C2E52008635CE,
);
isa = PBXHeadersBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
......@@ -527,7 +528,6 @@
F587856702DE375901EA4122,
F587856802DE375901EA4122,
F587856902DE375901EA4122,
F587856B02DE375901EA4122,
F587856E02DE375901EA4122,
F587856F02DE375901EA4122,
F587857002DE375901EA4122,
......@@ -724,6 +724,8 @@
F583D50403140623018635CE,
F5517DC5031AB56301A80180,
F690CFED031C47F401CA2AC4,
9377FB58032C235C008635CE,
93861DE2032C2E52008635CE,
);
isa = PBXSourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
......@@ -834,6 +836,64 @@
//352
//353
//354
//930
//931
//932
//933
//934
9377FB55032C235C008635CE = {
fileEncoding = 30;
isa = PBXFileReference;
path = KWQAssertions.h;
refType = 4;
};
9377FB56032C235C008635CE = {
fileEncoding = 30;
isa = PBXFileReference;
path = KWQAssertions.m;
refType = 4;
};
9377FB57032C235C008635CE = {
fileRef = 9377FB55032C235C008635CE;
isa = PBXBuildFile;
settings = {
};
};
9377FB58032C235C008635CE = {
fileRef = 9377FB56032C235C008635CE;
isa = PBXBuildFile;
settings = {
};
};
93861DDF032C2E52008635CE = {
fileEncoding = 4;
isa = PBXFileReference;
path = KWQLogging.h;
refType = 4;
};
93861DE0032C2E52008635CE = {
fileEncoding = 4;
isa = PBXFileReference;
path = KWQLogging.m;
refType = 4;
};
93861DE1032C2E52008635CE = {
fileRef = 93861DDF032C2E52008635CE;
isa = PBXBuildFile;
settings = {
};
};
93861DE2032C2E52008635CE = {
fileRef = 93861DE0032C2E52008635CE;
isa = PBXBuildFile;
settings = {
};
};
//930
//931
//932
//933
//934
//F50
//F51
//F52
......@@ -915,13 +975,13 @@
};
F523D15002DE4271018635CA = {
children = (
F58784D802DE375901EA4122,
F58784D902DE375901EA4122,
9377FB55032C235C008635CE,
9377FB56032C235C008635CE,
F58784CC02DE375901EA4122,
F5BFAAC10309CDF6018635CE,
F550D70B02E13281018635CA,
F550D70902E13281018635CA,
F550D70C02E13281018635CA,
F58784CC02DE375901EA4122,
F58784CD02DE375901EA4122,
F58784D302DE375901EA4122,
F58784D402DE375901EA4122,
......@@ -938,6 +998,8 @@
F58784FC02DE375901EA4122,
F587851702DE375901EA4122,
F587850302DE375901EA4122,
93861DDF032C2E52008635CE,
93861DE0032C2E52008635CE,
F587851B02DE375901EA4122,
F587851C02DE375901EA4122,
F587852A02DE375901EA4122,
......@@ -4182,18 +4244,6 @@
path = ../KWQDateTime.mm;
refType = 4;
};
F58784D802DE375901EA4122 = {
fileEncoding = 30;
isa = PBXFileReference;
path = kwqdebug.h;
refType = 4;
};
F58784D902DE375901EA4122 = {
fileEncoding = 30;
isa = PBXFileReference;
path = kwqdebug.mm;
refType = 4;
};
F58784DA02DE375901EA4122 = {
fileEncoding = 30;
isa = PBXFileReference;
......@@ -5038,18 +5088,6 @@
settings = {
};
};
F587856A02DE375901EA4122 = {
fileRef = F58784D802DE375901EA4122;
isa = PBXBuildFile;
settings = {
};
};
F587856B02DE375901EA4122 = {
fileRef = F58784D902DE375901EA4122;
isa = PBXBuildFile;
settings = {
};
};
F587856C02DE375901EA4122 = {
fileRef = F58784DA02DE375901EA4122;
isa = PBXBuildFile;
......
......@@ -24,7 +24,7 @@
*/
#import <qapplication.h>
#import <kwqdebug.h>
#import <KWQLogging.h>
QPalette QApplication::palette(const QWidget *p)
{
......@@ -62,12 +62,12 @@ QSize QApplication::globalStrut()
void QApplication::setOverrideCursor(const QCursor &c)
{
_logNotYetImplemented();
LOG(NotYetImplemented, "not yet implemented");
}
void QApplication::restoreOverrideCursor()
{
_logNotYetImplemented();
LOG(NotYetImplemented, "not yet implemented");
}
QStyle &QApplication::style()
......
/*
* Copyright (C) 2002 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// Note, this file uses many GCC extensions, but it should be compatible with
// C, Objective C, C++, and Objective C++.
// For non-debug builds, everything is disabled by default.
// Defining any of the symbols explicitly prevents this from having any effect.
#ifdef NDEBUG
#ifndef ASSERT_DISABLED
#define ASSERT_DISABLED 1
#endif
#ifndef ASSERT_ARG_DISABLED
#define ASSERT_ARG_DISABLED 1
#endif
#ifndef FATAL_DISABLED
#define FATAL_DISABLED 1
#endif
#ifndef ERROR_DISABLED
#define ERROR_DISABLED 1
#endif
#ifndef LOG_DISABLED
#define LOG_DISABLED 1
#endif
#endif
// These helper functions are always declared, but not necessarily always defined if the corresponding function is disabled.
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
unsigned mask;
const char *defaultName;
enum { KWQLogChannelUninitialized, KWQLogChannelOff, KWQLogChannelOn } state;
} KWQLogChannel;
void KWQReportAssertionFailure(const char *file, int line, const char *function, const char *assertion);
void KWQReportAssertionFailureWithMessage(const char *file, int line, const char *function, const char *assertion, const char *format, ...);
void KWQReportArgumentAssertionFailure(const char *file, int line, const char *function, const char *argName, const char *assertion);
void KWQReportFatalError(const char *file, int line, const char *function, const char *format, ...) ;
void KWQReportError(const char *file, int line, const char *function, const char *format, ...);
void KWQLog(const char *file, int line, const char *function, KWQLogChannel *channel, const char *format, ...);
#ifdef __cplusplus
}
#endif
// ASSERT, ASSERT_WITH_MESSAGE, ASSERT_NOT_REACHED
#if ASSERT_DISABLED
#define ASSERT(assertion) ((void)0)
#define ASSERT_WITH_MESSAGE(assertion, format, args...) ((void)0)
#define ASSERT_NOT_REACHED() ((void)0)
#else
#define ASSERT(assertion) do \
if (!(assertion)) { \
KWQReportAssertionFailure(__FILE__, __LINE__, __PRETTY_FUNCTION__, #assertion); \
raise(SIGQUIT); \
} \
while (0)
#define ASSERT_WITH_MESSAGE(assertion, format, args...) do \
if (!(assertion)) { \
KWQReportAssertionFailureWithMessage(__FILE__, __LINE__, __PRETTY_FUNCTION__, #assertion, format, ## args); \
raise(SIGQUIT); \
} \
while (0)
#define ASSERT_NOT_REACHED() do { \
KWQReportAssertionFailure(__FILE__, __LINE__, __PRETTY_FUNCTION__, 0); \
raise(SIGQUIT); \
} while (0)
#endif
// ASSERT_ARG
#if ASSERT_ARG_DISABLED
#define ASSERT_ARG(argName, assertion) ((void)0)
#else
#define ASSERT_ARG(argName, assertion) do \
if (!(assertion)) { \
KWQReportArgumentAssertionFailure(__FILE__, __LINE__, __PRETTY_FUNCTION__, #argName, #assertion); \
raise(SIGQUIT); \
} \
while (0)
#endif
// FATAL
#if FATAL_DISABLED
#define FATAL(format, args...) ((void)0)
#else
#define FATAL(format, args...) do { \
KWQReportFatalError(__FILE__, __LINE__, __PRETTY_FUNCTION__, (format), ## args); \
raise(SIGQUIT); \
} while (0)
#endif
// ERROR
#if ERROR_DISABLED
#define ERROR(format, args...) ((void)0)
#else
#define ERROR(format, args...) KWQReportError(__FILE__, __LINE__, __PRETTY_FUNCTION__, (format), ## args)
#endif
// LOG
#if LOG_DISABLED
#define LOG(channel, format, args...) ((void)0)
#else
#define LOG(channel, format, args...) KWQLog(__FILE__, __LINE__, __PRETTY_FUNCTION__, &JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, channel), (format), ## args)
#define JOIN_LOG_CHANNEL_WITH_PREFIX(prefix, channel) JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel)
#define JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel) prefix ## channel
#endif
/*
* Copyright (C) 2001 Apple Computer, Inc. All rights reserved.
* Copyright (C) 2002 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......@@ -23,56 +23,88 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import <kwqdebug.h>
#import "KWQAssertions.h"
#ifndef NDEBUG
static int (* vfprintf_no_warning)(FILE *, const char *, va_list) = vfprintf;
static unsigned int KWQ_LOG_LEVEL = 0;
static void vprintf_stderr_objc(const char *format, va_list args)
{
if (!strstr(format, "%@")) {
vfprintf_no_warning(stderr, format, args);
} else {
fputs([[[[NSString alloc] initWithFormat:[NSString stringWithCString:format] arguments:args] autorelease] lossyCString], stderr);
}
}
void KWQSetLogLevel(int mask) {
KWQ_LOG_LEVEL = mask;
void KWQReportAssertionFailure(const char *file, int line, const char *function, const char *assertion)
{
if (assertion) {
fprintf(stderr, "=================\nASSERTION FAILED: %s (%s:%d %s)\n=================\n", assertion, file, line, function);
} else {
fprintf(stderr, "=================\nSHOULD NEVER BE REACHED (%s:%d %s)\n=================\n", file, line, function);
}
}
static bool kwq_checkedDefault = 0;
void KWQReportAssertionFailureWithMessage(const char *file, int line, const char *function, const char *assertion, const char *format, ...)
{
fprintf(stderr, "=================\nASSERTION FAILED: ");
va_list args;
va_start(args, format);
vprintf_stderr_objc(format, args);
va_end(args);
fprintf(stderr, "\n%s (%s:%d %s)\n=================\n", assertion, file, line, function);
}
unsigned int KWQGetLogLevel(){
if (!kwq_checkedDefault){
NSString *logLevelString = [[NSUserDefaults standardUserDefaults] objectForKey:@"WebKitLogLevel"];
if (logLevelString != nil){
NSScanner *scanner = [[NSScanner alloc] initWithString:logLevelString];
void KWQReportArgumentAssertionFailure(const char *file, int line, const char *function, const char *argName, const char *assertion)
{
fprintf(stderr, "=================\nARGUMENT BAD: %s, %s (%s:%d %s)\n=================\n", argName, assertion, file, line, function);
}
if (![scanner scanHexInt: &KWQ_LOG_LEVEL]){
NSLog (@"Unable to scan hex value for WebKitLogLevel, default to value of %d", KWQ_LOG_LEVEL);
}
[scanner release];
}
kwq_checkedDefault = 1;