20 #ifndef TRACE_SOURCE_ACCESSOR_H
21 #define TRACE_SOURCE_ACCESSOR_H
26 #include "simple-ref-count.h"
86 template <
typename T,
typename SOURCE>
87 Ptr<const TraceSourceAccessor>
88 DoMakeTraceSourceAccessor (SOURCE T::*a)
90 struct Accessor :
public TraceSourceAccessor
92 virtual bool ConnectWithoutContext (ObjectBase *obj,
const CallbackBase &cb)
const {
93 T *p =
dynamic_cast<T*
> (obj);
98 (p->*m_source).ConnectWithoutContext (cb);
101 virtual bool Connect (ObjectBase *obj, std::string context,
const CallbackBase &cb)
const {
102 T *p =
dynamic_cast<T*
> (obj);
107 (p->*m_source).Connect (cb, context);
111 T *p =
dynamic_cast<T*
> (obj);
116 (p->*m_source).DisconnectWithoutContext (cb);
119 virtual bool Disconnect (ObjectBase *obj, std::string context,
const CallbackBase &cb)
const {
120 T *p =
dynamic_cast<T*
> (obj);
125 (p->*m_source).Disconnect (cb, context);
129 } *accessor =
new Accessor ();
130 accessor->m_source = a;
131 return Ptr<const TraceSourceAccessor> (accessor,
false);
134 template <
typename T>
137 return DoMakeTraceSourceAccessor (a);
smart pointer class similar to boost::intrusive_ptr
virtual bool ConnectWithoutContext(ObjectBase *obj, const CallbackBase &cb) const =0
virtual bool DisconnectWithoutContext(ObjectBase *obj, const CallbackBase &cb) const =0
void Disconnect(std::string path, const CallbackBase &cb)
implement the ns-3 type and attribute system
void Connect(std::string path, const CallbackBase &cb)
virtual bool Disconnect(ObjectBase *obj, std::string context, const CallbackBase &cb) const =0
virtual bool Connect(ObjectBase *obj, std::string context, const CallbackBase &cb) const =0
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
control access to objects' trace sources
void DisconnectWithoutContext(std::string path, const CallbackBase &cb)
A template-based reference counting class.