From 41eb680f10fc2c974c89296dfdb5737e686ca85e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 5 Dec 2010 14:21:54 +0100
Subject: Added SWIFT_LOG functionality.


diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp
index 77860d5..f33706a 100644
--- a/Swift/QtUI/QtSwift.cpp
+++ b/Swift/QtUI/QtSwift.cpp
@@ -23,6 +23,7 @@
 #include <boost/bind.hpp>
 #include <QSplitter>
 
+#include <Swiften/Base/Log.h>
 #include "SwifTools/Application/PlatformApplicationPathProvider.h"
 #include "Swiften/Avatars/AvatarFileStorage.h"
 #include "Swiften/Disco/CapsFileStorage.h"
@@ -63,6 +64,7 @@ namespace Swift{
 po::options_description QtSwift::getOptionsDescription() {
 	po::options_description result("Options");
 	result.add_options()
+		("debug", "Turn on debug logging")
 		("help", "produce help message")
 		("netbook-mode", "use netbook mode display")
 		("no-tabs", "don't manage chat windows in tabs")
@@ -92,6 +94,10 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) {
 		numberOfAccounts = 1;
 	}
 
+	if (options.count("debug")) {
+		Swift::logging = true;
+	}
+
 	tabs_ = options.count("no-tabs") && !(splitter_ > 0) ? NULL : new QtChatTabs();
 	settings_ = new QtSettingsProvider();
 	applicationPathProvider_ = new PlatformApplicationPathProvider(SWIFT_APPLICATION_NAME);
diff --git a/Swiften/Base/Log.cpp b/Swiften/Base/Log.cpp
new file mode 100644
index 0000000..2041013
--- /dev/null
+++ b/Swiften/Base/Log.cpp
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include "Swiften/Base/Log.h"
+
+namespace Swift {
+
+bool logging = false;
+
+}
diff --git a/Swiften/Base/Log.h b/Swiften/Base/Log.h
new file mode 100644
index 0000000..afcfe90
--- /dev/null
+++ b/Swiften/Base/Log.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include "Swiften/Base/Platform.h"
+namespace Swift {
+	extern bool logging;
+}
+
+#ifndef SWIFTEN_PLATFORM_WINDOWS
+#define SWIFT_LOG(severity) \
+	if (!Swift::logging) {} else std::cerr << __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << ": "
+#else
+#define SWIFT_LOG(severity) \
+	if (!Swift::logging) {} else std::cerr
+#endif
diff --git a/Swiften/Base/SConscript b/Swiften/Base/SConscript
index fb58d34..9c7b8dc 100644
--- a/Swiften/Base/SConscript
+++ b/Swiften/Base/SConscript
@@ -3,6 +3,7 @@ Import("swiften_env")
 objects = swiften_env.StaticObject([
 			"ByteArray.cpp",
 			"Error.cpp",
+			"Log.cpp",
 			"Paths.cpp",
 			"IDGenerator.cpp",
 			"String.cpp",
-- 
cgit v0.10.2-6-g49f6