From 22fec8261630b5d628c782fbb5571a3b91dd668d Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Sun, 12 Aug 2007 22:23:08 +0200 Subject: [PATCH] replace CallbackTraceSourceBase with TraceSource base class --- src/core/callback-trace-source.h | 12 ++-------- src/core/composite-trace-resolver.cc | 20 +++++++++++----- src/core/composite-trace-resolver.h | 24 ++++++------------- src/core/fv-trace-source.h | 3 ++- src/core/sv-trace-source.h | 5 ++-- src/core/trace-source.h | 36 ++++++++++++++++++++++++++++ src/core/uv-trace-source.h | 3 ++- src/core/wscript | 1 + 8 files changed, 67 insertions(+), 37 deletions(-) create mode 100644 src/core/trace-source.h diff --git a/src/core/callback-trace-source.h b/src/core/callback-trace-source.h index e5cc1a599..beeec7045 100644 --- a/src/core/callback-trace-source.h +++ b/src/core/callback-trace-source.h @@ -26,18 +26,10 @@ #include "callback.h" #include "fatal-error.h" #include "trace-context.h" +#include "trace-source.h" namespace ns3 { -class CallbackTraceSourceBase -{ -public: - virtual ~CallbackTraceSourceBase () {} - virtual void AddCallback (CallbackBase const & callback, TraceContext const & context) = 0; - virtual void RemoveCallback (CallbackBase const & callback) = 0; -}; - - /** * \brief log arbitrary number of parameters to a matching ns3::Callback * \ingroup lowleveltracing @@ -47,7 +39,7 @@ public: */ template -class CallbackTraceSource : public CallbackTraceSourceBase { +class CallbackTraceSource : public TraceSource { public: CallbackTraceSource (); virtual void AddCallback (CallbackBase const & callback, TraceContext const & context); diff --git a/src/core/composite-trace-resolver.cc b/src/core/composite-trace-resolver.cc index 92bec309c..736ddbd3e 100644 --- a/src/core/composite-trace-resolver.cc +++ b/src/core/composite-trace-resolver.cc @@ -63,6 +63,14 @@ CompositeTraceResolver::Add (std::string name, AddItem (item); } +void +CompositeTraceResolver::Add (std::string name, + TraceSource &trace) +{ + DoAddSource (name, trace, TraceContext ()); +} + + void CompositeTraceResolver::Add (std::string name, FVTraceSourceBase &trace) @@ -149,11 +157,11 @@ CompositeTraceResolver::DoAddSV (std::string name, } void -CompositeTraceResolver::DoAddCallback (std::string name, - CallbackTraceSourceBase &trace, - const TraceContext &context) +CompositeTraceResolver::DoAddSource (std::string name, + TraceSource &trace, + const TraceContext &context) { - class CallbackCompositeItem : public CompositeItem + class SourceCompositeItem : public CompositeItem { public: virtual void Connect (std::string subpath, const CallbackBase &cb, const TraceContext &context) @@ -161,8 +169,8 @@ CompositeTraceResolver::DoAddCallback (std::string name, virtual void Disconnect (std::string subpath, const CallbackBase &cb) {if (subpath == "") {trace->RemoveCallback (cb);}} - CallbackTraceSourceBase *trace; - } *item = new CallbackCompositeItem (); + TraceSource *trace; + } *item = new SourceCompositeItem (); item->name = name; item->context = context; item->trace = &trace; diff --git a/src/core/composite-trace-resolver.h b/src/core/composite-trace-resolver.h index 5d6415055..6da904ec8 100644 --- a/src/core/composite-trace-resolver.h +++ b/src/core/composite-trace-resolver.h @@ -54,7 +54,7 @@ public: */ template void Add (std::string name, - CallbackTraceSourceBase &trace, T const &context); + TraceSource &trace, T const &context); /** * \param name name of trace source * \param trace a signed variable trace source @@ -102,10 +102,8 @@ public: * source will match the name specified during namespace * resolution. */ - template void Add (std::string name, - CallbackTraceSource &trace); + TraceSource &trace); /** * \param name name of trace source * \param trace a signed variable trace source @@ -195,9 +193,9 @@ private: const TraceContext &context, enum Operation op); void DoAddChild (std::string name, Ptr child, const TraceContext &context); - void DoAddCallback (std::string name, - CallbackTraceSourceBase &trace, - const TraceContext &context); + void DoAddSource (std::string name, + TraceSource &trace, + const TraceContext &context); void DoAddSV (std::string name, SVTraceSourceBase &trace, const TraceContext &context); @@ -222,20 +220,12 @@ namespace ns3 { template void CompositeTraceResolver::Add (std::string name, - CallbackTraceSourceBase &trace, + TraceSource &trace, T const &context) { TraceContext ctx; ctx.Add (context); - DoAddCallback (name, trace, ctx); -} -template -void -CompositeTraceResolver::Add (std::string name, - CallbackTraceSource &trace) -{ - DoAddCallback (name, trace, TraceContext ()); + DoAddSource (name, trace, ctx); } template diff --git a/src/core/fv-trace-source.h b/src/core/fv-trace-source.h index 2e059303b..f305980a5 100644 --- a/src/core/fv-trace-source.h +++ b/src/core/fv-trace-source.h @@ -23,11 +23,12 @@ #define F_VARIABLE_TRACER_H #include "callback-trace-source.h" +#include "trace-source.h" #include namespace ns3 { -class FVTraceSourceBase { +class FVTraceSourceBase : public TraceSource { public: typedef CallbackTraceSource ChangeNotifyCallback; diff --git a/src/core/sv-trace-source.h b/src/core/sv-trace-source.h index 291bc764e..d7038c0ad 100644 --- a/src/core/sv-trace-source.h +++ b/src/core/sv-trace-source.h @@ -23,11 +23,12 @@ #define SV_TRACE_SOURCE_H #include "callback-trace-source.h" +#include "trace-source.h" #include namespace ns3 { -class SVTraceSourceBase { +class SVTraceSourceBase : public TraceSource { public: typedef CallbackTraceSource ChangeNotifyCallback; @@ -37,7 +38,7 @@ public: return *this; } - ~SVTraceSourceBase () {} + virtual ~SVTraceSourceBase () {} void AddCallback (CallbackBase const & callback, TraceContext const & context) { m_callback.AddCallback (callback, context); diff --git a/src/core/trace-source.h b/src/core/trace-source.h new file mode 100644 index 000000000..1b4c96577 --- /dev/null +++ b/src/core/trace-source.h @@ -0,0 +1,36 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2007 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 + */ +#ifndef TRACE_SOURCE_H +#define TRACE_SOURCE_H + +namespace ns3 { + +class TraceSource +{ +public: + virtual ~TraceSource () {} + virtual void AddCallback (CallbackBase const & callback, TraceContext const & context) = 0; + virtual void RemoveCallback (CallbackBase const & callback) = 0; +}; + +} // namespace ns3 + +#endif /* TRACE_SOURCE_H */ diff --git a/src/core/uv-trace-source.h b/src/core/uv-trace-source.h index 0bdfb3f94..2216f2c98 100644 --- a/src/core/uv-trace-source.h +++ b/src/core/uv-trace-source.h @@ -23,11 +23,12 @@ #define UV_TRACE_SOURCE_H #include "callback-trace-source.h" +#include "trace-source.h" #include namespace ns3 { -class UVTraceSourceBase { +class UVTraceSourceBase : public TraceSource { public: typedef CallbackTraceSource ChangeNotifyCallback; diff --git a/src/core/wscript b/src/core/wscript index 7a9e8171a..ea91c7619 100644 --- a/src/core/wscript +++ b/src/core/wscript @@ -81,6 +81,7 @@ def build(bld): 'component-manager.h', 'type-traits.h', 'random-variable-default-value.h', + 'trace-source.h', 'uv-trace-source.h', 'sv-trace-source.h', 'fv-trace-source.h',