diff --git a/src/core/trace-resolver.cc b/src/core/trace-resolver.cc index ff0448ca3..d891c94c4 100644 --- a/src/core/trace-resolver.cc +++ b/src/core/trace-resolver.cc @@ -94,76 +94,14 @@ TraceResolver::SourceCollection::AddUnique (std::string path, source.doc = doc; m_sources.push_back (source); } -void -TraceResolver::SourceCollection::Print (std::ostream &os) const +TraceResolver::SourceCollection::Iterator +TraceResolver::SourceCollection::Begin (void) const { - for (SourceVector::const_iterator i = m_sources.begin (); i != m_sources.end (); i++) - { - os << "source=" << i->path << std::endl; - os << "TraceContext=["; - i->context.PrintAvailable (os, ","); - os << "]" << std::endl; - os << "help=\"" << i->doc.GetHelp () << "\"" << std::endl; - os << "void TraceSinkCallback (const TraceContext &"; - for (TraceDoc::Iterator k = i->doc.ArgsBegin (); k != i->doc.ArgsEnd (); k++) - { - os << ", " << k->first; - } - os << ")" << std::endl; - os << "argument 1 -- the trace context associated to the connected trace source." << std::endl; - uint32_t k = 2; - for (TraceDoc::Iterator j = i->doc.ArgsBegin (); j != i->doc.ArgsEnd (); j++) - { - os << "argument " << k << " -- " << j->second << "." << std::endl; - k++; - } - os << std::endl; - } + return m_sources.begin (); } -void -TraceResolver::SourceCollection::PrintDoxygen (std::ostream &os) const +TraceResolver::SourceCollection::Iterator +TraceResolver::SourceCollection::End (void) const { - uint32_t z = 0; - for (SourceVector::const_iterator i = m_sources.begin (); i != m_sources.end (); i++) - { - os << "///" << std::endl; - os << "/// \\ingroup TraceSourceList" << std::endl; - os << "/// \\brief " << i->doc.GetHelp () << std::endl; - os << "/// \\param arg1 the trace context associated to the connected trace source." << std::endl; - uint32_t j = 2; - for (TraceDoc::Iterator l = i->doc.ArgsBegin (); l != i->doc.ArgsEnd (); l++) - { - os << "/// \\param arg" << j << " " << l->second << "." << std::endl; - j++; - } - os << "///" << std::endl; - os << "///" << std::endl; - os << "/// The path to this trace source is: " << i->path << "." << std::endl; - os << "///" << std::endl; - if (i->context.AvailableBegin () == i->context.AvailableEnd ()) - { - os << "/// No data can be extracted from \\p arg1 with ns3::TraceContext::GetElement." << std::endl; - } - else - { - os << "/// The following classes can be extracted from \\p arg1 with " << std::endl; - os << "/// ns3::TraceContext::GetElement:" << std::endl; - for (TraceContext::Iterator m = i->context.AvailableBegin (); m != i->context.AvailableEnd (); m++) - { - os << "/// - " << (*m) << std::endl; - } - } - os << "void TraceSinkCallback" << z << " (const TraceContext & arg1" ; - j = 2; - for (TraceDoc::Iterator k = i->doc.ArgsBegin (); k != i->doc.ArgsEnd (); k++) - { - os << ", " << k->first << " arg" << j; - j++; - } - os << ");" << std::endl; - os << std::endl; - z++; - } + return m_sources.end (); } - }//namespace ns3 diff --git a/src/core/trace-resolver.h b/src/core/trace-resolver.h index 9bf429b12..c78a6f21d 100644 --- a/src/core/trace-resolver.h +++ b/src/core/trace-resolver.h @@ -73,18 +73,20 @@ public: class SourceCollection { public: - void Print (std::ostream &os) const; - void PrintDoxygen (std::ostream &os) const; - void AddUnique (std::string path, - const TraceContext &context, - const TraceDoc &doc); - private: struct Source { std::string path; TraceContext context; TraceDoc doc; }; + typedef std::vector::const_iterator Iterator; + void AddUnique (std::string path, + const TraceContext &context, + const TraceDoc &doc); + + Iterator Begin (void) const; + Iterator End (void) const; + private: typedef std::vector SourceVector; SourceVector m_sources; }; diff --git a/utils/print-trace-sources.cc b/utils/print-trace-sources.cc index 21f8eb1da..a4e3d01c9 100644 --- a/utils/print-trace-sources.cc +++ b/utils/print-trace-sources.cc @@ -9,6 +9,79 @@ using namespace ns3; +void +PrintSimpleText (const TraceResolver::SourceCollection *sources, std::ostream &os) +{ + for (TraceResolver::SourceCollection::Iterator i = sources->Begin (); i != sources->End (); i++) + { + os << "source=" << i->path << std::endl; + os << "TraceContext=["; + i->context.PrintAvailable (os, ","); + os << "]" << std::endl; + os << "help=\"" << i->doc.GetHelp () << "\"" << std::endl; + os << "void TraceSinkCallback (const TraceContext &"; + for (TraceDoc::Iterator k = i->doc.ArgsBegin (); k != i->doc.ArgsEnd (); k++) + { + os << ", " << k->first; + } + os << ")" << std::endl; + os << "argument 1 -- the trace context associated to the connected trace source." << std::endl; + uint32_t k = 2; + for (TraceDoc::Iterator j = i->doc.ArgsBegin (); j != i->doc.ArgsEnd (); j++) + { + os << "argument " << k << " -- " << j->second << "." << std::endl; + k++; + } + os << std::endl; + } +} +void +PrintDoxygenText (const TraceResolver::SourceCollection *sources, std::ostream &os) +{ + uint32_t z = 0; + for (TraceResolver::SourceCollection::Iterator i = sources->Begin (); i != sources->End (); i++) + { + os << "///" << std::endl; + os << "/// \\ingroup TraceSourceList" << std::endl; + os << "/// \\brief " << i->doc.GetHelp () << std::endl; + os << "/// \\param arg1 the trace context associated to the connected trace source." << std::endl; + uint32_t j = 2; + for (TraceDoc::Iterator l = i->doc.ArgsBegin (); l != i->doc.ArgsEnd (); l++) + { + os << "/// \\param arg" << j << " " << l->second << "." << std::endl; + j++; + } + os << "///" << std::endl; + os << "///" << std::endl; + os << "/// The path to this trace source is: " << i->path << "." << std::endl; + os << "///" << std::endl; + if (i->context.AvailableBegin () == i->context.AvailableEnd ()) + { + os << "/// No data can be extracted from \\p arg1 with ns3::TraceContext::GetElement." << std::endl; + } + else + { + os << "/// The following classes can be extracted from \\p arg1 with " << std::endl; + os << "/// ns3::TraceContext::GetElement:" << std::endl; + for (TraceContext::Iterator m = i->context.AvailableBegin (); m != i->context.AvailableEnd (); m++) + { + os << "/// - " << (*m) << std::endl; + } + } + os << "void TraceSinkCallback" << z << " (const TraceContext & arg1" ; + j = 2; + for (TraceDoc::Iterator k = i->doc.ArgsBegin (); k != i->doc.ArgsEnd (); k++) + { + os << ", " << k->first << " arg" << j; + j++; + } + os << ");" << std::endl; + os << std::endl; + z++; + } +} + + int main (int argc, char *argv[]) { Ptr node = Create (); @@ -21,7 +94,7 @@ int main (int argc, char *argv[]) TraceResolver::SourceCollection collection; NodeList::GetTraceResolver ()->CollectSources ("", TraceContext (), &collection); - collection.Print (std::cout); + PrintDoxygenText (&collection, std::cout); return 0; }