cleanup to avoid too many #ifdefs
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 14 Apr 2008 10:40:46 -0700
changeset 2978 c93e1d0d6916
parent 2977 35618565c0e5
child 2979 3d39dd617b8d
cleanup to avoid too many #ifdefs
src/core/log.h
--- a/src/core/log.h	Mon Apr 14 10:28:42 2008 -0700
+++ b/src/core/log.h	Mon Apr 14 10:40:46 2008 -0700
@@ -24,6 +24,9 @@
 #include <string>
 #include <iostream>
 
+#ifdef NS3_LOG_ENABLE
+
+
 /**
  * \ingroup core
  * \defgroup logging Logging
@@ -65,65 +68,11 @@
  * ns3::LogComponentDisable functions or with the NS_LOG
  * environment variable.
  */
-
-#ifdef NS3_LOG_ENABLE
-
 #define NS_LOG_COMPONENT_DEFINE(name)                                \
   static ns3::LogComponent g_log = ns3::LogComponent (name)
 
-#else
-
-#define NS_LOG_COMPONENT_DEFINE(name)
-
-#endif
-
-
 /**
  * \ingroup logging
- * \param msg message to output
- *
- * Generate logging output in the "log component" of the 
- * current file. i.e., every call to NS_LOG from within
- * a file implicitely generates out within the component
- * defined with the NS_LOG_COMPONENT_DEFINE macro in the
- * same file.
- */
-
-#ifdef NS3_LOG_ENABLE
-
-
-namespace ns3 {
-
-class ParameterLogger : public std::ostream
-{
-  int m_itemNumber;
-public:
-  ParameterLogger ();
-
-  template<typename T>
-  ParameterLogger& operator<< (T param)
-  {
-    switch (m_itemNumber)
-      {
-      case 0: // first parameter
-        std::clog << param;
-        break;
-      default: // parameter following a previous parameter
-        std::clog << ", " << param;
-        break;
-      }
-    m_itemNumber++;
-    return *this;
-  }
-};
-
-extern ParameterLogger g_parameterLogger;
-
-}
-
-
-
-/**
  * \param level the log level
  * \param msg the message to log
  *
@@ -203,25 +152,8 @@
     }                                   \
   while (false)
 
-#else
-
-#define NS_LOG(level, msg)
-#define NS_LOG_F(level)
-#define NS_LOG_ERROR(msg)
-#define NS_LOG_WARN(msg)
-#define NS_LOG_DEBUG(msg)
-#define NS_LOG_INFO(msg)
-#define NS_LOG_FUNCTION
-#define NS_LOG_PARAMS(parameters)
-#define NS_LOG_LOGIC(msg)
-#define NS_LOG_UNCOND(msg)
-
-#endif
-
 namespace ns3 {
 
-#ifdef NS3_LOG_ENABLE
-
 enum LogLevel {
   LOG_NONE           = 0x00000000, // no logging
 
@@ -252,9 +184,6 @@
   LOG_PREFIX_ALL     = 0x80000000  // prefix all trace prints with function
 };
 
-#endif
-
-#ifdef NS3_LOG_ENABLE
 /**
  * \param name a log component name
  * \param level a logging level
@@ -264,7 +193,7 @@
  * The logging output can be later disabled with a call
  * to ns3::LogComponentDisable.
  */
-  void LogComponentEnable (char const *name, enum LogLevel level);
+void LogComponentEnable (char const *name, enum LogLevel level);
 
 /**
  * \param level a logging level
@@ -272,13 +201,9 @@
  *
  * Enable the logging output for all registered log components.
  */
-  void LogComponentEnableAll (enum LogLevel level);
-#else
-#define LogComponentEnable(a,b)
-#define LogComponentEnableAll(a)
-#endif
+void LogComponentEnableAll (enum LogLevel level);
 
-#ifdef NS3_LOG_ENABLE
+
 /**
  * \param name a log component name
  * \param level a logging level
@@ -298,23 +223,13 @@
  */
 void LogComponentDisableAll (enum LogLevel level);
 
-#else
-#define LogComponentDisable(a,b)
-#define LogComponentDisableAll(a)
-#endif
 
 /**
  * \ingroup logging
  *
  * Print the list of logging messages available.
  */
-#ifdef NS3_LOG_ENABLE
 void LogComponentPrintList (void);
-#else
-#define LogComponentPrintList()
-#endif
-
-#ifdef NS3_LOG_ENABLE
 
 class LogComponent {
 public:
@@ -332,8 +247,53 @@
   bool        m_decorate;
 };
 
-#endif
+class ParameterLogger : public std::ostream
+{
+  int m_itemNumber;
+public:
+  ParameterLogger ();
+
+  template<typename T>
+  ParameterLogger& operator<< (T param)
+  {
+    switch (m_itemNumber)
+      {
+      case 0: // first parameter
+        std::clog << param;
+        break;
+      default: // parameter following a previous parameter
+        std::clog << ", " << param;
+        break;
+      }
+    m_itemNumber++;
+    return *this;
+  }
+};
+
+extern ParameterLogger g_parameterLogger;
+
 
 } // namespace ns3
 
+#else /* LOG_ENABLE */
+
+#define NS_LOG_COMPONENT_DEFINE(component)
+#define NS_LOG(level, msg)
+#define NS_LOG_ERROR(msg)
+#define NS_LOG_WARN(msg)
+#define NS_LOG_DEBUG(msg)
+#define NS_LOG_INFO(msg)
+#define NS_LOG_FUNCTION
+#define NS_LOG_PARAMS(parameters)
+#define NS_LOG_LOGIC(msg)
+#define NS_LOG_UNCOND(msg)
+
+#define LogComponentPrintList
+#define LogComponentEnable(name,level)
+#define LogComponentDisable(name,level)
+#define LogComponentEnableAll(level)
+#define LogComponentDisableAll(level)
+
+#endif /* LOG_ENABLE */
+
 #endif // __LOG_H__