15#include "ns3/nstime.h"
44 .SetGroupName(
"Stats")
67 for (
auto it = s.begin();
it != s.end();
it++)
70 (*
it ==
'-' &&
it != s.begin() &&
last !=
'e'))
100 scalarFile <<
"attr experiment \"" <<
dc.GetExperimentLabel() <<
"\"" << std::endl;
101 scalarFile <<
"attr strategy \"" <<
dc.GetStrategyLabel() <<
"\"" << std::endl;
102 scalarFile <<
"attr measurement \"" <<
dc.GetInputLabel() <<
"\"" << std::endl;
103 scalarFile <<
"attr description \"" <<
dc.GetDescription() <<
"\"" << std::endl;
105 for (
auto i =
dc.MetadataBegin();
i !=
dc.MetadataEnd();
i++)
107 const auto&
blob = (*i);
114 scalarFile <<
"scalar . measurement \"" <<
dc.GetInputLabel() <<
"\"" << std::endl;
116 for (
auto i =
dc.MetadataBegin();
i !=
dc.MetadataEnd();
i++)
118 const auto&
blob = (*i);
127 for (
auto i =
dc.DataCalculatorBegin();
i !=
dc.DataCalculatorEnd();
i++)
129 (*i)->Output(callback);
159 (*m_scalar) <<
"statistic " << context <<
" " << name << std::endl;
160 if (!std::isnan(
statSum->getCount()))
162 (*m_scalar) <<
"field count " <<
statSum->getCount() << std::endl;
164 if (!std::isnan(
statSum->getSum()))
166 (*m_scalar) <<
"field sum " <<
statSum->getSum() << std::endl;
168 if (!std::isnan(
statSum->getMean()))
170 (*m_scalar) <<
"field mean " <<
statSum->getMean() << std::endl;
172 if (!std::isnan(
statSum->getMin()))
174 (*m_scalar) <<
"field min " <<
statSum->getMin() << std::endl;
176 if (!std::isnan(
statSum->getMax()))
178 (*m_scalar) <<
"field max " <<
statSum->getMax() << std::endl;
180 if (!std::isnan(
statSum->getSqrSum()))
182 (*m_scalar) <<
"field sqrsum " <<
statSum->getSqrSum() << std::endl;
184 if (!std::isnan(
statSum->getStddev()))
186 (*m_scalar) <<
"field stddev " <<
statSum->getStddev() << std::endl;
205 (*m_scalar) <<
"scalar " << context <<
" " << name <<
" " <<
val << std::endl;
224 (*m_scalar) <<
"scalar " << context <<
" " << name <<
" " <<
val << std::endl;
243 (*m_scalar) <<
"scalar " << context <<
" " << name <<
" " <<
val << std::endl;
262 (*m_scalar) <<
"scalar " << context <<
" " << name <<
" " <<
val << std::endl;
281 (*m_scalar) <<
"scalar " << context <<
" " << name <<
" " <<
val.GetTimeStep() << std::endl;
Abstract Data Output Interface class s.
void DoDispose() override
Destructor implementation.
std::string m_filePrefix
File prefix for the DataOutputInterface.
Class to generate OMNeT output.
OmnetOutputCallback(std::ostream *scalar)
Constructor.
void OutputSingleton(std::string context, std::string name, int val) override
Generates a single data output.
void OutputStatistic(std::string context, std::string name, const StatisticalSummary *statSum) override
Generates data statistics.
Outputs data in a format compatible with OMNeT library and framework.
void DoDispose() override
Destructor implementation.
~OmnetDataOutput() override
void Output(DataCollector &dc) override
Outputs information from the provided DataCollector.
static TypeId GetTypeId()
Register this type.
Abstract class for calculating statistical data.
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
bool isNumeric(const std::string &s)