rename files
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 04 Sep 2006 15:09:58 +0200
changeset 44 76cd1fcea02d
parent 43 ac4f18445e75
child 45 f963078c6e95
rename files
SConstruct
samples/main-trace.cc
src/common/f-traced-variable.tcc
src/common/f-variable-tracer.h
src/common/si-traced-variable.tcc
src/common/si-variable-tracer.h
src/common/trace-container.h
src/common/traced-variable-test.cc
src/common/ui-traced-variable.tcc
src/common/ui-variable-tracer.h
src/common/variable-tracer-test.cc
--- a/SConstruct	Mon Sep 04 15:06:09 2006 +0200
+++ b/SConstruct	Mon Sep 04 15:09:58 2006 +0200
@@ -536,7 +536,7 @@
 	'tags.cc',
 	'pcap-writer.cc',
 	'trace-container.cc',
-	'traced-variable-test.cc',
+	'variable-tracer-test.cc',
 	'stream-tracer-test.cc',
 	])
 common.add_inst_headers ([
@@ -545,9 +545,9 @@
 	'tags.h',
 	'packet.h',
 	'count-ptr-holder.tcc',
-	'ui-traced-variable.tcc',
-	'si-traced-variable.tcc',
-	'f-traced-variable.tcc',
+	'ui-variable-tracer.h',
+	'si-variable-tracer.h',
+	'f-variable-tracer.h',
 	'callback-tracer.h',
 	'stream-tracer.h',
 	'trace-container.h',
--- a/samples/main-trace.cc	Mon Sep 04 15:06:09 2006 +0200
+++ b/samples/main-trace.cc	Mon Sep 04 15:09:58 2006 +0200
@@ -1,6 +1,6 @@
 /* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
 #include "ns3/trace-container.h"
-#include "ns3/ui-traced-variable.tcc"
+#include "ns3/ui-variable-tracer.h"
 #include "ns3/callback-tracer.h"
 #include "ns3/stream-tracer.h"
 #include "ns3/pcap-writer.h"
--- a/src/common/f-traced-variable.tcc	Mon Sep 04 15:06:09 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#ifndef F_VARIABLE_TRACER_H
-#define F_VARIABLE_TRACER_H
-
-#include "ns3/callback.h"
-#include <stdint.h>
-
-namespace ns3 {
-
-class FVariableTracerBase {
-public:
-	typedef Callback<void,double, double> ChangeNotifyCallback;
-
-	FVariableTracerBase () {}
-	FVariableTracerBase (FVariableTracerBase const &o) {}
-	FVariableTracerBase &operator = (FVariableTracerBase const &o) {
-		return *this;
-	}
-
-	~FVariableTracerBase () {}
-
-	void set_callback(ChangeNotifyCallback callback) {
-		m_callback = callback;
-	}
-protected:
-	void notify (double old_val, double new_val) {
-		if (old_val != new_val && !m_callback.is_null ()) {
-			m_callback (old_val, new_val);
-		}
-	}
-private:
-	ChangeNotifyCallback m_callback;
-};
-
-
-}; // namespace ns3
-
-#endif /* F_VARIABLE_TRACER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/common/f-variable-tracer.h	Mon Sep 04 15:09:58 2006 +0200
@@ -0,0 +1,58 @@
+/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#ifndef F_VARIABLE_TRACER_H
+#define F_VARIABLE_TRACER_H
+
+#include "ns3/callback.h"
+#include <stdint.h>
+
+namespace ns3 {
+
+class FVariableTracerBase {
+public:
+	typedef Callback<void,double, double> ChangeNotifyCallback;
+
+	FVariableTracerBase () {}
+	FVariableTracerBase (FVariableTracerBase const &o) {}
+	FVariableTracerBase &operator = (FVariableTracerBase const &o) {
+		return *this;
+	}
+
+	~FVariableTracerBase () {}
+
+	void set_callback(ChangeNotifyCallback callback) {
+		m_callback = callback;
+	}
+protected:
+	void notify (double old_val, double new_val) {
+		if (old_val != new_val && !m_callback.is_null ()) {
+			m_callback (old_val, new_val);
+		}
+	}
+private:
+	ChangeNotifyCallback m_callback;
+};
+
+
+}; // namespace ns3
+
+#endif /* F_VARIABLE_TRACER_H */
--- a/src/common/si-traced-variable.tcc	Mon Sep 04 15:06:09 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#ifndef SI_VARIABLE_TRACER_H
-#define SI_VARIABLE_TRACER_H
-
-#include "ns3/callback.h"
-#include <stdint.h>
-
-namespace ns3 {
-
-class SiVariableTracerBase {
-public:
-	typedef Callback<void,int64_t, int64_t> ChangeNotifyCallback;
-
-	SiVariableTracerBase () {}
-	SiVariableTracerBase (SiVariableTracerBase const &o) {}
-	SiVariableTracerBase &operator = (SiVariableTracerBase const &o) {
-		return *this;
-	}
-
-	~SiVariableTracerBase () {}
-
-	void set_callback(ChangeNotifyCallback callback) {
-		m_callback = callback;
-	}
-protected:
-	void notify (int64_t old_val, int64_t new_val) {
-		if (old_val != new_val && !m_callback.is_null ()) {
-			m_callback (old_val, new_val);
-		}
-	}
-private:
-	ChangeNotifyCallback m_callback;
-};
-
-template <typename T>
-class UiVariableTracer;
-
-
-/**
- * \brief trace variables of type "signed integer"
- *
- * This template class implements a POD type: it
- * behaves like any other variable of type "signed integer"
- * except that it also reports any changes to its
- * value with its internal callback.
- *
- * To instantiate a 32-bit signed variable (to store
- * a TCP counter for example), you would create a variable of type
- * ns3::UiVariableTracer<int32_t> :
- \code
- #include <stdint.h>
- #include "ns3/si-traced-variable.tcc"
-
- ns3::SiVariableTracer<uint16_t> var;
- \endcode
- * and you would use it like any other variable of type int32_t:
- \code
- var += 12;
- var = 10;
- var = -10;
- \endcode
- */
-template <typename T>
-class SiVariableTracer : public SiVariableTracerBase {
-public:
-	SiVariableTracer ()
-		: m_var (0)
-	{}
-	SiVariableTracer (T const &var) 
-		: m_var (var)
-	{}
-
-	SiVariableTracer &operator = (SiVariableTracer const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	template <typename TT>
-	SiVariableTracer &operator = (SiVariableTracer<TT> const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	template <typename TT>
-	SiVariableTracer &operator = (UiVariableTracer<TT> const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	SiVariableTracer &operator++ () {
-		assign (get () + 1);
-		return *this;
-	}
-	SiVariableTracer &operator-- () {
-		assign (get () - 1);
-		return *this;
-	}
-	SiVariableTracer operator++ (int) {
-		SiVariableTracer old (*this);
-		++*this;
-		return old;
-	}
-	SiVariableTracer operator-- (int) {
-		SiVariableTracer old (*this);
-		--*this;
-		return old;
-	}
-	operator T () const {
-		return get ();
-	}
-
-
-	void assign (T var) {
-		notify (m_var, var);
-		m_var = var;
-	}
-        T get (void) const {
-		return m_var;
-	}
-
-private:
-	T m_var;
-};
-
-template <typename T>
-SiVariableTracer<T> &operator += (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () + rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator -= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () - rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator *= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () * rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator /= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () / rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator <<= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () << rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator >>= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () >> rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator &= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () & rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator |= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () | rhs.get ());
-	return lhs;
-}
-template <typename T>
-SiVariableTracer<T> &operator ^= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () ^ rhs.get ());
-	return lhs;
-}
-
-
-template <typename T, typename U>
-SiVariableTracer<T> &operator += (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () + rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator -= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () - rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator *= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () * rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator /= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () / rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator <<= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () << rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator >>= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () >> rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator &= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () & rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator |= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () | rhs);
-	return lhs;
-}
-template <typename T, typename U>
-SiVariableTracer<T> &operator ^= (SiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () ^ rhs);
-	return lhs;
-}
-
-}; // namespace ns3
-
-#endif /* SI_VARIABLE_TRACER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/common/si-variable-tracer.h	Mon Sep 04 15:09:58 2006 +0200
@@ -0,0 +1,237 @@
+/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#ifndef SI_VARIABLE_TRACER_H
+#define SI_VARIABLE_TRACER_H
+
+#include "ns3/callback.h"
+#include <stdint.h>
+
+namespace ns3 {
+
+class SiVariableTracerBase {
+public:
+	typedef Callback<void,int64_t, int64_t> ChangeNotifyCallback;
+
+	SiVariableTracerBase () {}
+	SiVariableTracerBase (SiVariableTracerBase const &o) {}
+	SiVariableTracerBase &operator = (SiVariableTracerBase const &o) {
+		return *this;
+	}
+
+	~SiVariableTracerBase () {}
+
+	void set_callback(ChangeNotifyCallback callback) {
+		m_callback = callback;
+	}
+protected:
+	void notify (int64_t old_val, int64_t new_val) {
+		if (old_val != new_val && !m_callback.is_null ()) {
+			m_callback (old_val, new_val);
+		}
+	}
+private:
+	ChangeNotifyCallback m_callback;
+};
+
+template <typename T>
+class UiVariableTracer;
+
+
+/**
+ * \brief trace variables of type "signed integer"
+ *
+ * This template class implements a POD type: it
+ * behaves like any other variable of type "signed integer"
+ * except that it also reports any changes to its
+ * value with its internal callback.
+ *
+ * To instantiate a 32-bit signed variable (to store
+ * a TCP counter for example), you would create a variable of type
+ * ns3::UiVariableTracer<int32_t> :
+ \code
+ #include <stdint.h>
+ #include "ns3/si-traced-variable.tcc"
+
+ ns3::SiVariableTracer<uint16_t> var;
+ \endcode
+ * and you would use it like any other variable of type int32_t:
+ \code
+ var += 12;
+ var = 10;
+ var = -10;
+ \endcode
+ */
+template <typename T>
+class SiVariableTracer : public SiVariableTracerBase {
+public:
+	SiVariableTracer ()
+		: m_var (0)
+	{}
+	SiVariableTracer (T const &var) 
+		: m_var (var)
+	{}
+
+	SiVariableTracer &operator = (SiVariableTracer const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	template <typename TT>
+	SiVariableTracer &operator = (SiVariableTracer<TT> const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	template <typename TT>
+	SiVariableTracer &operator = (UiVariableTracer<TT> const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	SiVariableTracer &operator++ () {
+		assign (get () + 1);
+		return *this;
+	}
+	SiVariableTracer &operator-- () {
+		assign (get () - 1);
+		return *this;
+	}
+	SiVariableTracer operator++ (int) {
+		SiVariableTracer old (*this);
+		++*this;
+		return old;
+	}
+	SiVariableTracer operator-- (int) {
+		SiVariableTracer old (*this);
+		--*this;
+		return old;
+	}
+	operator T () const {
+		return get ();
+	}
+
+
+	void assign (T var) {
+		notify (m_var, var);
+		m_var = var;
+	}
+        T get (void) const {
+		return m_var;
+	}
+
+private:
+	T m_var;
+};
+
+template <typename T>
+SiVariableTracer<T> &operator += (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () + rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator -= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () - rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator *= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () * rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator /= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () / rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator <<= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () << rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator >>= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () >> rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator &= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () & rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator |= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () | rhs.get ());
+	return lhs;
+}
+template <typename T>
+SiVariableTracer<T> &operator ^= (SiVariableTracer<T> &lhs, SiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () ^ rhs.get ());
+	return lhs;
+}
+
+
+template <typename T, typename U>
+SiVariableTracer<T> &operator += (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () + rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator -= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () - rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator *= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () * rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator /= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () / rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator <<= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () << rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator >>= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () >> rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator &= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () & rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator |= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () | rhs);
+	return lhs;
+}
+template <typename T, typename U>
+SiVariableTracer<T> &operator ^= (SiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () ^ rhs);
+	return lhs;
+}
+
+}; // namespace ns3
+
+#endif /* SI_VARIABLE_TRACER_H */
--- a/src/common/trace-container.h	Mon Sep 04 15:06:09 2006 +0200
+++ b/src/common/trace-container.h	Mon Sep 04 15:09:58 2006 +0200
@@ -22,9 +22,9 @@
 #ifndef TRACE_CONTAINER_H
 #define TRACE_CONTAINER_H
 
-#include "ui-traced-variable.tcc"
-#include "si-traced-variable.tcc"
-#include "f-traced-variable.tcc"
+#include "ui-variable-tracer.h"
+#include "si-variable-tracer.h"
+#include "f-variable-tracer.h"
 #include "callback-tracer.h"
 #include "ns3/callback.h"
 #include <list>
--- a/src/common/traced-variable-test.cc	Mon Sep 04 15:06:09 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#include "ui-traced-variable.tcc"
-#include "si-traced-variable.tcc"
-#include "ns3/test.h"
-#include "ns3/callback.h"
-
-
-namespace ns3 {
-
-class Foo {
-public:
-	void notify (uint64_t old_val, uint64_t new_val) {}
-};
-
-class VariableTracerTest: public Test {
-public:
-	VariableTracerTest ();
-	void run_unsigned_tests (void);
-	void run_signed_unsigned_tests (void);
-	virtual bool run_tests (void);
-};
-void
-VariableTracerTest::run_unsigned_tests (void)
-{
-	UiVariableTracer<uint32_t> var, ovar, tmp;
-	uint32_t utmp;
-	Foo *foo = new Foo ();
-	
-	var.set_callback (make_callback (&Foo::notify, foo));
-
-	var = 10;
-	ovar = var;
-
-	if (var == ovar) {
-	}
-	if (var != ovar) {
-	}
-	if (var > ovar) {
-	}
-	if (var >= ovar) {
-	}
-	if (var < ovar) {
-	}
-	if (var <= ovar) {
-	}
-
-	if (var == 1) {
-	}
-	if (var != 1) {
-	}
-	if (var > 1) {
-	}
-	if (var >= 1) {
-	}
-	if (var < 1) {
-	}
-	if (var <= 1) {
-	}
-
-	if (1 == ovar) {
-	}
-	if (1 != ovar) {
-	}
-	if (1 > ovar) {
-	}
-	if (1 >= ovar) {
-	}
-	if (1 < ovar) {
-	}
-	if (1 <= ovar) {
-	}
-
-	var++;
-	++var;
-	var--;
-	--var;
-
-	tmp = var + ovar;
-	tmp = var - ovar;
-	tmp = var / ovar;
-	tmp = var * ovar;
-	tmp = var << ovar;
-	tmp = var >> ovar;
-	tmp = var & ovar;
-	tmp = var | ovar;
-	tmp = var ^ ovar;
-
-	tmp = var + 1;
-	tmp = var - 1;
-	tmp = var / 1;
-	tmp = var * 1;
-	tmp = var << 1;
-	tmp = var >> 1;
-	tmp = var & 1;
-	tmp = var | 1;
-	tmp = var ^ 1;
-
-	tmp = 1 + ovar;
-	tmp = 1 - ovar;
-	tmp = 1 / ovar;
-	tmp = 1 * ovar;
-	tmp = 1 << ovar;
-	tmp = 1 >> ovar;
-	tmp = 1 & ovar;
-	tmp = 1 | ovar;
-	tmp = 1 ^ ovar;
-
-	tmp += var;
-	tmp -= var;
-	tmp /= var;
-	tmp *= var;
-	tmp <<= var;
-	tmp >>= var;
-	tmp &= var;
-	tmp |= var;
-	tmp ^= var;
-
-	tmp += 1;
-	tmp -= 1;
-	tmp /= 1;
-	tmp *= 1;
-	tmp <<= 1;
-	tmp >>= 1;
-	tmp &= 1;
-	tmp |= 1;
-	tmp ^= 1;
-
-
-	utmp = var + ovar;
-	utmp = var - ovar;
-	utmp = var / ovar;
-	utmp = var * ovar;
-	utmp = var << ovar;
-	utmp = var >> ovar;
-	utmp = var & ovar;
-	utmp = var | ovar;
-	utmp = var ^ ovar;
-
-	utmp = var + 1;
-	utmp = var - 1;
-	utmp = var / 1;
-	utmp = var * 1;
-	utmp = var << 1;
-	utmp = var >> 1;
-	utmp = var & 1;
-	utmp = var | 1;
-	utmp = var ^ 1;
-
-	utmp = 1 + ovar;
-	utmp = 1 - ovar;
-	utmp = 1 / ovar;
-	utmp = 1 * ovar;
-	utmp = 1 << ovar;
-	utmp = 1 >> ovar;
-	utmp = 1 & ovar;
-	utmp = 1 | ovar;
-	utmp = 1 ^ ovar;
-
-	utmp += var;
-	utmp -= var;
-	utmp /= var;
-	utmp *= var;
-	utmp <<= var;
-	utmp >>= var;
-	utmp &= var;
-	utmp |= var;
-	utmp ^= var;
-
-	utmp += 1;
-	utmp -= 1;
-	utmp /= 1;
-	utmp *= 1;
-	utmp <<= 1;
-	utmp >>= 1;
-	utmp &= 1;
-	utmp |= 1;
-	utmp ^= 1;
-}
-
-void
-VariableTracerTest::run_signed_unsigned_tests (void)
-{
-	unsigned short utmp = 10;
-	unsigned int uitmp = 7;
-	short stmp = 5;
-	utmp = stmp;
-	utmp += stmp;
-	uitmp = utmp;
-	utmp = uitmp;
-
-	UiVariableTracer<unsigned short> uvar = 10;
-	UiVariableTracer<unsigned int> uivar = 5;
-	SiVariableTracer<short> svar = 5;
-	SiVariableTracer<int> sivar = 5;
-	uvar = svar;
-	svar = uvar;
-	uvar += svar;
-	svar += uvar;
-
-	uvar = sivar;
-	sivar = uvar;
-	uvar += sivar;
-	sivar += uvar;
-
-	uivar = uvar;
-	uvar = uivar;
-	uivar += uvar;
-	uvar += uivar;
-
-	sivar = svar;
-	svar = sivar;
-	sivar += svar;
-	svar += sivar;
-}
-
-bool 
-VariableTracerTest::run_tests (void)
-{
-	run_unsigned_tests ();
-	run_signed_unsigned_tests ();
-
-	return true;
-}
-
-VariableTracerTest::VariableTracerTest ()
-	: Test ("VariableTracer") {}
-
-static VariableTracerTest g_variable_tracer_test;
-
-}; // namespace ns3
-
-
--- a/src/common/ui-traced-variable.tcc	Mon Sep 04 15:06:09 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
-/*
- * Copyright (c) 2006 INRIA
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#ifndef UI_VARIABLE_TRACER_H
-#define UI_VARIABLE_TRACER_H
-
-#include "ns3/callback.h"
-#include <stdint.h>
-
-namespace ns3 {
-
-class UiVariableTracerBase {
-public:
-	typedef Callback<void, uint64_t, uint64_t> ChangeNotifyCallback;
-
-	UiVariableTracerBase ()
-		: m_callback () {}
-	/* We don't want to copy the base callback. Only set_callback on
-	 * a specific instance will do something to it. */
-	UiVariableTracerBase (UiVariableTracerBase const &o) 
-		: m_callback () {}
-	UiVariableTracerBase &operator = (UiVariableTracerBase const &o) {
-		return *this;
-	}
-	~UiVariableTracerBase () {}
-
-	void set_callback(ChangeNotifyCallback callback) {
-		m_callback = callback;
-	}
-protected:
-	void notify (uint64_t old_val, uint64_t new_val) {
-		if (old_val != new_val && !m_callback.is_null ()) {
-			m_callback (old_val, new_val);
-		}
-	}
-private:
-	ChangeNotifyCallback m_callback;
-};
-
-template <typename T>
-class SiVariableTracer;
-
-
-/**
- * \brief trace variables of type "unsigned integer"
- *
- * This template class implements a POD type: it
- * behaves like any other variable of type "unsigned integer"
- * except that it also reports any changes to its
- * value with its internal callback.
- *
- * To instantiate a 32-bit unsigned variable (to store
- * a TCP counter for example), you would create a variable of type
- * ns3::UiVariableTracer<uint32_t> :
- \code
- #include <stdint.h>
- #include "ns3/ui-traced-variable.tcc"
-
- ns3::UiVariableTracer<uint32_t> var;
- \endcode
- * and you would use it like any other variable of type uint32_t:
- \code
- var += 12;
- var = 10;
- \endcode
- */
-template <typename T>
-class UiVariableTracer : public UiVariableTracerBase {
-public:
-	UiVariableTracer ()
-		: m_var ()
-	{}
-	UiVariableTracer (T const &var) 
-		: m_var (var)
-	{}
-
-	UiVariableTracer &operator = (UiVariableTracer const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	template <typename TT>
-	UiVariableTracer &operator = (UiVariableTracer<TT> const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	template <typename TT>
-	UiVariableTracer &operator = (SiVariableTracer<TT> const &o) {
-		assign (o.get ());
-		return *this;
-	}
-	UiVariableTracer &operator++ () {
-		assign (get () + 1);
-		return *this;
-	}
-	UiVariableTracer &operator-- () {
-		assign (get () - 1);
-		return *this;
-	}
-	UiVariableTracer operator++ (int) {
-		UiVariableTracer old (*this);
-		++*this;
-		return old;
-	}
-	UiVariableTracer operator-- (int) {
-		UiVariableTracer old (*this);
-		--*this;
-		return old;
-	}
-	operator T () const {
-		return get ();
-	}
-
-
-	void assign (T var) {
-		notify (m_var, var);
-		m_var = var;
-	}
-        T get (void) const {
-		return m_var;
-	}
-
-private:
-	T m_var;
-};
-
-template <typename T>
-UiVariableTracer<T> &operator += (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () + rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator -= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () - rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator *= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () * rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator /= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () / rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator <<= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () << rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator >>= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () >> rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator &= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () & rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator |= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () | rhs.get ());
-	return lhs;
-}
-template <typename T>
-UiVariableTracer<T> &operator ^= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
-	lhs.assign (lhs.get () ^ rhs.get ());
-	return lhs;
-}
-
-
-template <typename T, typename U>
-UiVariableTracer<T> &operator += (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () + rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator -= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () - rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator *= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () * rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator /= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () / rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator <<= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () << rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator >>= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () >> rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator &= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () & rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator |= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () | rhs);
-	return lhs;
-}
-template <typename T, typename U>
-UiVariableTracer<T> &operator ^= (UiVariableTracer<T> &lhs, U const &rhs) {
-	lhs.assign (lhs.get () ^ rhs);
-	return lhs;
-}
-
-}; // namespace ns3
-
-#endif /* UI_VARIABLE_TRACER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/common/ui-variable-tracer.h	Mon Sep 04 15:09:58 2006 +0200
@@ -0,0 +1,239 @@
+/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#ifndef UI_VARIABLE_TRACER_H
+#define UI_VARIABLE_TRACER_H
+
+#include "ns3/callback.h"
+#include <stdint.h>
+
+namespace ns3 {
+
+class UiVariableTracerBase {
+public:
+	typedef Callback<void, uint64_t, uint64_t> ChangeNotifyCallback;
+
+	UiVariableTracerBase ()
+		: m_callback () {}
+	/* We don't want to copy the base callback. Only set_callback on
+	 * a specific instance will do something to it. */
+	UiVariableTracerBase (UiVariableTracerBase const &o) 
+		: m_callback () {}
+	UiVariableTracerBase &operator = (UiVariableTracerBase const &o) {
+		return *this;
+	}
+	~UiVariableTracerBase () {}
+
+	void set_callback(ChangeNotifyCallback callback) {
+		m_callback = callback;
+	}
+protected:
+	void notify (uint64_t old_val, uint64_t new_val) {
+		if (old_val != new_val && !m_callback.is_null ()) {
+			m_callback (old_val, new_val);
+		}
+	}
+private:
+	ChangeNotifyCallback m_callback;
+};
+
+template <typename T>
+class SiVariableTracer;
+
+
+/**
+ * \brief trace variables of type "unsigned integer"
+ *
+ * This template class implements a POD type: it
+ * behaves like any other variable of type "unsigned integer"
+ * except that it also reports any changes to its
+ * value with its internal callback.
+ *
+ * To instantiate a 32-bit unsigned variable (to store
+ * a TCP counter for example), you would create a variable of type
+ * ns3::UiVariableTracer<uint32_t> :
+ \code
+ #include <stdint.h>
+ #include "ns3/ui-traced-variable.tcc"
+
+ ns3::UiVariableTracer<uint32_t> var;
+ \endcode
+ * and you would use it like any other variable of type uint32_t:
+ \code
+ var += 12;
+ var = 10;
+ \endcode
+ */
+template <typename T>
+class UiVariableTracer : public UiVariableTracerBase {
+public:
+	UiVariableTracer ()
+		: m_var ()
+	{}
+	UiVariableTracer (T const &var) 
+		: m_var (var)
+	{}
+
+	UiVariableTracer &operator = (UiVariableTracer const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	template <typename TT>
+	UiVariableTracer &operator = (UiVariableTracer<TT> const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	template <typename TT>
+	UiVariableTracer &operator = (SiVariableTracer<TT> const &o) {
+		assign (o.get ());
+		return *this;
+	}
+	UiVariableTracer &operator++ () {
+		assign (get () + 1);
+		return *this;
+	}
+	UiVariableTracer &operator-- () {
+		assign (get () - 1);
+		return *this;
+	}
+	UiVariableTracer operator++ (int) {
+		UiVariableTracer old (*this);
+		++*this;
+		return old;
+	}
+	UiVariableTracer operator-- (int) {
+		UiVariableTracer old (*this);
+		--*this;
+		return old;
+	}
+	operator T () const {
+		return get ();
+	}
+
+
+	void assign (T var) {
+		notify (m_var, var);
+		m_var = var;
+	}
+        T get (void) const {
+		return m_var;
+	}
+
+private:
+	T m_var;
+};
+
+template <typename T>
+UiVariableTracer<T> &operator += (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () + rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator -= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () - rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator *= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () * rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator /= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () / rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator <<= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () << rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator >>= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () >> rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator &= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () & rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator |= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () | rhs.get ());
+	return lhs;
+}
+template <typename T>
+UiVariableTracer<T> &operator ^= (UiVariableTracer<T> &lhs, UiVariableTracer<T> const &rhs) {
+	lhs.assign (lhs.get () ^ rhs.get ());
+	return lhs;
+}
+
+
+template <typename T, typename U>
+UiVariableTracer<T> &operator += (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () + rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator -= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () - rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator *= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () * rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator /= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () / rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator <<= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () << rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator >>= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () >> rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator &= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () & rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator |= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () | rhs);
+	return lhs;
+}
+template <typename T, typename U>
+UiVariableTracer<T> &operator ^= (UiVariableTracer<T> &lhs, U const &rhs) {
+	lhs.assign (lhs.get () ^ rhs);
+	return lhs;
+}
+
+}; // namespace ns3
+
+#endif /* UI_VARIABLE_TRACER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/common/variable-tracer-test.cc	Mon Sep 04 15:09:58 2006 +0200
@@ -0,0 +1,252 @@
+/* -*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */
+/*
+ * Copyright (c) 2006 INRIA
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#include "ui-variable-tracer.h"
+#include "si-variable-tracer.h"
+#include "ns3/test.h"
+#include "ns3/callback.h"
+
+
+namespace ns3 {
+
+class Foo {
+public:
+	void notify (uint64_t old_val, uint64_t new_val) {}
+};
+
+class VariableTracerTest: public Test {
+public:
+	VariableTracerTest ();
+	void run_unsigned_tests (void);
+	void run_signed_unsigned_tests (void);
+	virtual bool run_tests (void);
+};
+void
+VariableTracerTest::run_unsigned_tests (void)
+{
+	UiVariableTracer<uint32_t> var, ovar, tmp;
+	uint32_t utmp;
+	Foo *foo = new Foo ();
+	
+	var.set_callback (make_callback (&Foo::notify, foo));
+
+	var = 10;
+	ovar = var;
+
+	if (var == ovar) {
+	}
+	if (var != ovar) {
+	}
+	if (var > ovar) {
+	}
+	if (var >= ovar) {
+	}
+	if (var < ovar) {
+	}
+	if (var <= ovar) {
+	}
+
+	if (var == 1) {
+	}
+	if (var != 1) {
+	}
+	if (var > 1) {
+	}
+	if (var >= 1) {
+	}
+	if (var < 1) {
+	}
+	if (var <= 1) {
+	}
+
+	if (1 == ovar) {
+	}
+	if (1 != ovar) {
+	}
+	if (1 > ovar) {
+	}
+	if (1 >= ovar) {
+	}
+	if (1 < ovar) {
+	}
+	if (1 <= ovar) {
+	}
+
+	var++;
+	++var;
+	var--;
+	--var;
+
+	tmp = var + ovar;
+	tmp = var - ovar;
+	tmp = var / ovar;
+	tmp = var * ovar;
+	tmp = var << ovar;
+	tmp = var >> ovar;
+	tmp = var & ovar;
+	tmp = var | ovar;
+	tmp = var ^ ovar;
+
+	tmp = var + 1;
+	tmp = var - 1;
+	tmp = var / 1;
+	tmp = var * 1;
+	tmp = var << 1;
+	tmp = var >> 1;
+	tmp = var & 1;
+	tmp = var | 1;
+	tmp = var ^ 1;
+
+	tmp = 1 + ovar;
+	tmp = 1 - ovar;
+	tmp = 1 / ovar;
+	tmp = 1 * ovar;
+	tmp = 1 << ovar;
+	tmp = 1 >> ovar;
+	tmp = 1 & ovar;
+	tmp = 1 | ovar;
+	tmp = 1 ^ ovar;
+
+	tmp += var;
+	tmp -= var;
+	tmp /= var;
+	tmp *= var;
+	tmp <<= var;
+	tmp >>= var;
+	tmp &= var;
+	tmp |= var;
+	tmp ^= var;
+
+	tmp += 1;
+	tmp -= 1;
+	tmp /= 1;
+	tmp *= 1;
+	tmp <<= 1;
+	tmp >>= 1;
+	tmp &= 1;
+	tmp |= 1;
+	tmp ^= 1;
+
+
+	utmp = var + ovar;
+	utmp = var - ovar;
+	utmp = var / ovar;
+	utmp = var * ovar;
+	utmp = var << ovar;
+	utmp = var >> ovar;
+	utmp = var & ovar;
+	utmp = var | ovar;
+	utmp = var ^ ovar;
+
+	utmp = var + 1;
+	utmp = var - 1;
+	utmp = var / 1;
+	utmp = var * 1;
+	utmp = var << 1;
+	utmp = var >> 1;
+	utmp = var & 1;
+	utmp = var | 1;
+	utmp = var ^ 1;
+
+	utmp = 1 + ovar;
+	utmp = 1 - ovar;
+	utmp = 1 / ovar;
+	utmp = 1 * ovar;
+	utmp = 1 << ovar;
+	utmp = 1 >> ovar;
+	utmp = 1 & ovar;
+	utmp = 1 | ovar;
+	utmp = 1 ^ ovar;
+
+	utmp += var;
+	utmp -= var;
+	utmp /= var;
+	utmp *= var;
+	utmp <<= var;
+	utmp >>= var;
+	utmp &= var;
+	utmp |= var;
+	utmp ^= var;
+
+	utmp += 1;
+	utmp -= 1;
+	utmp /= 1;
+	utmp *= 1;
+	utmp <<= 1;
+	utmp >>= 1;
+	utmp &= 1;
+	utmp |= 1;
+	utmp ^= 1;
+}
+
+void
+VariableTracerTest::run_signed_unsigned_tests (void)
+{
+	unsigned short utmp = 10;
+	unsigned int uitmp = 7;
+	short stmp = 5;
+	utmp = stmp;
+	utmp += stmp;
+	uitmp = utmp;
+	utmp = uitmp;
+
+	UiVariableTracer<unsigned short> uvar = 10;
+	UiVariableTracer<unsigned int> uivar = 5;
+	SiVariableTracer<short> svar = 5;
+	SiVariableTracer<int> sivar = 5;
+	uvar = svar;
+	svar = uvar;
+	uvar += svar;
+	svar += uvar;
+
+	uvar = sivar;
+	sivar = uvar;
+	uvar += sivar;
+	sivar += uvar;
+
+	uivar = uvar;
+	uvar = uivar;
+	uivar += uvar;
+	uvar += uivar;
+
+	sivar = svar;
+	svar = sivar;
+	sivar += svar;
+	svar += sivar;
+}
+
+bool 
+VariableTracerTest::run_tests (void)
+{
+	run_unsigned_tests ();
+	run_signed_unsigned_tests ();
+
+	return true;
+}
+
+VariableTracerTest::VariableTracerTest ()
+	: Test ("VariableTracer") {}
+
+static VariableTracerTest g_variable_tracer_test;
+
+}; // namespace ns3
+
+