View | Details | Raw Unified | Return to bug 79
Collapse All | Expand All

(-)a/src/core/log.cc (+5 lines)
 Lines 326-331   LogComponentPrintList (void) Link Here 
326
    }
326
    }
327
}
327
}
328
328
329
330
ParameterLogger g_parameterLogger;
331
EndParameterListStruct EndParameterList;
332
333
329
} // namespace ns3
334
} // namespace ns3
330
335
331
#endif // NS3_LOG_ENABLE
336
#endif // NS3_LOG_ENABLE
(-)a/src/core/log.h (+62 lines)
 Lines 87-92    Link Here 
87
87
88
#ifdef NS3_LOG_ENABLE
88
#ifdef NS3_LOG_ENABLE
89
89
90
91
namespace ns3 {
92
93
struct EndParameterListStruct {};
94
extern EndParameterListStruct EndParameterList;
95
96
class ParameterLogger : public std::ostream
97
{
98
  int m_itemNumber;
99
public:
100
  ParameterLogger ()
101
    : m_itemNumber (0)
102
  {}
103
104
  template<typename T>
105
  ParameterLogger& operator<< (T param)
106
  {
107
    switch (m_itemNumber)
108
      {
109
      case 0: // first item is actually the function name
110
        std::clog << param << " (";
111
        break;
112
      case 1:
113
        std::clog << param;
114
        break;
115
      default: // parameter following a previous parameter
116
        std::clog << ", " << param;
117
        break;
118
      }
119
    m_itemNumber++;
120
    return *this;
121
  }
122
123
  ParameterLogger&
124
  operator << (EndParameterListStruct dummy)
125
  {
126
    std::clog << ")" << std::endl;
127
    m_itemNumber = 0;
128
    return *this;
129
  }
130
};
131
132
133
extern ParameterLogger g_parameterLogger;
134
135
}
136
137
90
#define NS_LOG(level, msg)                                      \
138
#define NS_LOG(level, msg)                                      \
91
  do                                                            \
139
  do                                                            \
92
    {                                                           \
140
    {                                                           \
 Lines 123-130    Link Here 
123
#define NS_LOG_FUNCTION \
171
#define NS_LOG_FUNCTION \
124
  NS_LOG_F(ns3::LOG_FUNCTION)
172
  NS_LOG_F(ns3::LOG_FUNCTION)
125
173
174
// XXX Soon to be deprecated in favor of NS_LOG_PARAMS XXX
126
#define NS_LOG_PARAM(msg) \
175
#define NS_LOG_PARAM(msg) \
127
  NS_LOG(ns3::LOG_PARAM, msg)
176
  NS_LOG(ns3::LOG_PARAM, msg)
177
178
#define NS_LOG_PARAMS(parameters)                       \
179
  do                                                    \
180
    {                                                   \
181
      if (g_log.IsEnabled (ns3::LOG_PARAM))             \
182
        {                                               \
183
          g_parameterLogger << __PRETTY_FUNCTION__      \
184
                            << parameters               \
185
                            << EndParameterList;        \
186
        }                                               \
187
    }                                                   \
188
  while (false)
189
128
190
129
#define NS_LOG_LOGIC(msg) \
191
#define NS_LOG_LOGIC(msg) \
130
  NS_LOG(ns3::LOG_LOGIC, msg)
192
  NS_LOG(ns3::LOG_LOGIC, msg)
(-)a/src/node/queue.cc (-1 / +1 lines)
 Lines 139-145   Queue::Enqueue (const Packet& p) Link Here 
139
Queue::Enqueue (const Packet& p)
139
Queue::Enqueue (const Packet& p)
140
{
140
{
141
  NS_LOG_FUNCTION;
141
  NS_LOG_FUNCTION;
142
  NS_LOG_PARAM ("(" << &p << ")");
142
  NS_LOG_PARAMS (this << &p);
143
  NS_LOG_LOGIC ("m_traceEnqueue (p)");
143
  NS_LOG_LOGIC ("m_traceEnqueue (p)");
144
144
145
  m_traceEnqueue (p);
145
  m_traceEnqueue (p);

Return to bug 79