A Discrete-Event Network Simulator
API
print-introspected-doxygen.cc File Reference

Generate documentation from the TypeId database. More...

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <map>
#include <climits>
#include "ns3/command-line.h"
#include "ns3/config.h"
#include "ns3/global-value.h"
#include "ns3/log.h"
#include "ns3/object-vector.h"
#include "ns3/object.h"
#include "ns3/pointer.h"
#include "ns3/string.h"
#include "ns3/node-container.h"
#include "ns3/simple-channel.h"
#include "ns3/system-path.h"
+ Include dependency graph for print-introspected-doxygen.cc:

Go to the source code of this file.

Classes

struct  AttributeDescriptor
 Descriptor for an AttributeValue. More...
 
class  StaticInformation
 Gather aggregation and configuration path information from registered types. More...
 

Namespaces

namespace  anonymous_namespace{print-introspected-doxygen.cc}
 

Typedefs

typedef std::map< std::string, int32_tNameMap
 Map from TypeId name to tid. More...
 
typedef NameMap::const_iterator NameMapIterator
 NameMap iterator. More...
 

Functions

NameMap GetNameMap (void)
 Create a map from the class names to their index in the vector of TypeId's so that the names will end up in alphabetical order. More...
 
StaticInformation GetTypicalAggregations ()
 Register aggregation relationships that are not automatically detected by this introspection program. More...
 
void PrintAllAttributes (std::ostream &os)
 Print the list of all Attributes. More...
 
void PrintAllGlobals (std::ostream &os)
 Print the list of all global variables. More...
 
void PrintAllLogComponents (std::ostream &os)
 Print the list of all LogComponents. More...
 
void PrintAllTraceSources (std::ostream &os)
 Print the list of all Trace sources. More...
 
void PrintAllTypeIds (std::ostream &os)
 Print the list of all TypeIds. More...
 
void PrintAttributeHelper (std::ostream &os, const AttributeDescriptor &attr)
 Print documentation corresponding to use of the ATTRIBUTE_HELPER_HEADER macro or ATTRIBUTE_VALUE_DEFINE_WITH_NAME macro. More...
 
void PrintAttributeImplementations (std::ostream &os)
 Print documentation for Attribute implementations. More...
 
void PrintAttributes (std::ostream &os, const TypeId tid)
 Print the Attributes block for tid, including Attributes declared in base classes. More...
 
void PrintAttributesTid (std::ostream &os, const TypeId tid)
 Print direct Attributes for this TypeId. More...
 
void PrintAttributeValueSection (std::ostream &os, const std::string &name, const bool seeBase=true)
 Print the section definition for an AttributeValue. More...
 
void PrintAttributeValueWithName (std::ostream &os, const std::string &name, const std::string &type, const std::string &header)
 Print the AttributeValue documentation for a class. More...
 
void PrintConfigPaths (std::ostream &os, const TypeId tid)
 Print config paths. More...
 
void PrintMakeAccessors (std::ostream &os, const std::string &name)
 Print the AttributeValue MakeAccessor documentation for a class. More...
 
void PrintMakeChecker (std::ostream &os, const std::string &name, const std::string &header)
 Print the AttributeValue MakeChecker documentation for a class. More...
 
void PrintSize (std::ostream &os, const TypeId tid)
 Print the size of the type represented by this tid. More...
 
void PrintTraceSources (std::ostream &os, const TypeId tid)
 Print the Trace sources block for tid, including Trace sources declared in base classes. More...
 
void PrintTraceSourcesTid (std::ostream &os, const TypeId tid)
 Print direct Trace sources for this TypeId. More...
 
void PrintTypeIdBlocks (std::ostream &os)
 Print the doxy block for each TypeId. More...
 
void SetMarkup ()
 Initialize the markup strings, for either doxygen or text. More...
 
template<typename T >
void Uniquefy (T t)
 Helper to keep only the unique items in a container. More...
 

Variables

bool anonymous_namespace{print-introspected-doxygen.cc}::outputText = false
 Are we generating text or Doxygen? More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::anchor
 Markup tokens. More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::argument
 function argument More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::boldStart
 start of bold span More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::boldStop
 end of bold span More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::breakBoth
 linebreak More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::breakHtmlOnly
 linebreak for html output only More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::breakTextOnly
 linebreak for text output only More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::brief
 brief tag More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::classStart
 start of a class More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::classStop
 end of a class More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::codeWord
 format next word as source code More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::commentStart
 start of code comment More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::commentStop
 end of code comment More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::copyDoc
 copy (or refer) to docs elsewhere More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::file
 file More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStart
 start of Attribute flag value More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStop
 end of Attribute flag value More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::functionStart
 start of a method/function More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::functionStop
 end of a method/function More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::headingStart
 start of section heading (h3) More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::headingStop
 end of section heading (h3) More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::hrefMid
 middle part of a link More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::hrefStart
 start of a link More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::hrefStop
 end of a link More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::indentHtmlOnly
 small indent More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::listLineStart
 start unordered list item More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::listLineStop
 end unordered list item More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::listStart
 start unordered list More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::listStop
 end unordered list More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::note
 start a note section More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::page
 start a separate page More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::reference
 reference tag More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::referenceNo
 block automatic references More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::returns
 the return value More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::sectionStart
 start of a section or group More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::seeAlso
 Reference to other docs. More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::subSectionStart
 start a new subsection More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::templArgDeduced
 template argument deduced from function More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::templArgExplicit
 template argument required More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::templateArgument
 template argument More...
 
std::string anonymous_namespace{print-introspected-doxygen.cc}::variable
 variable or class member More...
 

Detailed Description

Generate documentation from the TypeId database.

Definition in file print-introspected-doxygen.cc.

Typedef Documentation

◆ NameMap

typedef std::map< std::string, int32_t> NameMap

Map from TypeId name to tid.

Definition at line 573 of file print-introspected-doxygen.cc.

◆ NameMapIterator

typedef NameMap::const_iterator NameMapIterator

NameMap iterator.

Definition at line 574 of file print-introspected-doxygen.cc.

Function Documentation

◆ GetNameMap()

NameMap GetNameMap ( void  )

Create a map from the class names to their index in the vector of TypeId's so that the names will end up in alphabetical order.

Returns
NameMap

Definition at line 584 of file print-introspected-doxygen.cc.

References ns3::TypeId::GetName(), StaticInformation::GetNoTypeIds(), GetTypicalAggregations(), ns3::TypeId::MustHideFromDocumentation(), and NS_LOG_FUNCTION_NOARGS.

Referenced by PrintAllAttributes(), PrintAllTraceSources(), PrintAllTypeIds(), and PrintTypeIdBlocks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetTypicalAggregations()

StaticInformation GetTypicalAggregations ( )

Register aggregation relationships that are not automatically detected by this introspection program.

Statements added here result in more configuration paths being added to the doxygen.

Returns
instance of StaticInformation with the registered information

Definition at line 513 of file print-introspected-doxygen.cc.

References StaticInformation::Gather(), ns3::Config::GetRootNamespaceObject(), ns3::Config::GetRootNamespaceObjectN(), NS_LOG_FUNCTION_NOARGS, and StaticInformation::RecordAggregationInfo().

Referenced by GetNameMap(), and PrintConfigPaths().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintAllAttributes()

◆ PrintAllGlobals()

◆ PrintAllLogComponents()

◆ PrintAllTraceSources()

◆ PrintAllTypeIds()

◆ PrintAttributeHelper()

void PrintAttributeHelper ( std::ostream &  os,
const AttributeDescriptor attr 
)

Print documentation corresponding to use of the ATTRIBUTE_HELPER_HEADER macro or ATTRIBUTE_VALUE_DEFINE_WITH_NAME macro.

Parameters
[in,out]osThe output stream.
[in]attrThe AttributeDescriptor.

Definition at line 1510 of file print-introspected-doxygen.cc.

References AttributeDescriptor::m_header, AttributeDescriptor::m_name, AttributeDescriptor::m_seeBase, AttributeDescriptor::m_type, NS_LOG_FUNCTION, PrintAttributeValueSection(), PrintAttributeValueWithName(), PrintMakeAccessors(), and PrintMakeChecker().

Referenced by PrintAttributeImplementations().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintAttributeImplementations()

void PrintAttributeImplementations ( std::ostream &  os)

Print documentation for Attribute implementations.

Parameters
osThe stream to print on.

Definition at line 1527 of file print-introspected-doxygen.cc.

References NS_LOG_FUNCTION_NOARGS, PrintAttributeHelper(), PrintAttributeValueSection(), PrintAttributeValueWithName(), PrintMakeAccessors(), and PrintMakeChecker().

+ Here is the call graph for this function:

◆ PrintAttributes()

void PrintAttributes ( std::ostream &  os,
const TypeId  tid 
)

Print the Attributes block for tid, including Attributes declared in base classes.

All Attributes of this TypeId will be printed, including those defined in parent classes.

Parameters
[in,out]osThe output stream.
[in]tidThe TypeId to print.

Definition at line 831 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::breakBoth, ns3::TypeId::GetAttributeN(), ns3::TypeId::GetName(), ns3::TypeId::GetParent(), anonymous_namespace{print-introspected-doxygen.cc}::headingStart, anonymous_namespace{print-introspected-doxygen.cc}::headingStop, NS_LOG_FUNCTION, and PrintAttributesTid().

Referenced by PrintTypeIdBlocks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintAttributesTid()

void PrintAttributesTid ( std::ostream &  os,
const TypeId  tid 
)

Print direct Attributes for this TypeId.

Only attributes defined directly by this TypeId will be printed.

Parameters
[in,out]osThe output stream.
[in]tidThe TypeId to print.

Definition at line 687 of file print-introspected-doxygen.cc.

References ns3::TypeId::AttributeInformation::accessor, anonymous_namespace{print-introspected-doxygen.cc}::boldStart, anonymous_namespace{print-introspected-doxygen.cc}::boldStop, ns3::TypeId::AttributeInformation::checker, anonymous_namespace{print-introspected-doxygen.cc}::codeWord, ns3::TypeId::AttributeInformation::flags, anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStart, anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStop, ns3::TypeId::GetAttribute(), ns3::TypeId::GetAttributeN(), ns3::ObjectPtrContainerChecker::GetItemTypeId(), ns3::TypeId::GetName(), ns3::PointerChecker::GetPointeeTypeId(), ns3::TypeId::AttributeInformation::help, anonymous_namespace{print-introspected-doxygen.cc}::indentHtmlOnly, ns3::TypeId::AttributeInformation::initialValue, anonymous_namespace{print-introspected-doxygen.cc}::listLineStart, anonymous_namespace{print-introspected-doxygen.cc}::listLineStop, anonymous_namespace{print-introspected-doxygen.cc}::listStart, anonymous_namespace{print-introspected-doxygen.cc}::listStop, ns3::TypeId::AttributeInformation::name, NS_LOG_FUNCTION, anonymous_namespace{print-introspected-doxygen.cc}::outputText, ns3::PeekPointer(), and anonymous_namespace{print-introspected-doxygen.cc}::reference.

Referenced by PrintAttributes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintAttributeValueSection()

void PrintAttributeValueSection ( std::ostream &  os,
const std::string &  name,
const bool  seeBase = true 
)

Print the section definition for an AttributeValue.

In doxygen form this will print a comment block with

*   \ingroup attributes
*   \defgroup attribute_<name>Value <name>Value
* 
Parameters
[in,out]osThe output stream.
[in]nameThe base name of the resulting AttributeValue type.
[in]seeBasePrint a "see also" pointing to the base class.

Definition at line 1300 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::commentStart, anonymous_namespace{print-introspected-doxygen.cc}::commentStop, NS_LOG_FUNCTION, anonymous_namespace{print-introspected-doxygen.cc}::sectionStart, anonymous_namespace{print-introspected-doxygen.cc}::seeAlso, and anonymous_namespace{print-introspected-doxygen.cc}::subSectionStart.

Referenced by PrintAttributeHelper(), and PrintAttributeImplementations().

+ Here is the caller graph for this function:

◆ PrintAttributeValueWithName()

void PrintAttributeValueWithName ( std::ostream &  os,
const std::string &  name,
const std::string &  type,
const std::string &  header 
)

◆ PrintConfigPaths()

◆ PrintMakeAccessors()

void PrintMakeAccessors ( std::ostream &  os,
const std::string &  name 
)

Print the AttributeValue MakeAccessor documentation for a class.

This will print documentation for the Make<name>Accessor functions.

Parameters
[in,out]osThe output stream.
[in]nameThe token to use in defining the accessor name.

Definition at line 1428 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::commentStart, anonymous_namespace{print-introspected-doxygen.cc}::commentStop, anonymous_namespace{print-introspected-doxygen.cc}::copyDoc, anonymous_namespace{print-introspected-doxygen.cc}::functionStart, NS_LOG_FUNCTION, anonymous_namespace{print-introspected-doxygen.cc}::sectionStart, and anonymous_namespace{print-introspected-doxygen.cc}::seeAlso.

Referenced by PrintAttributeHelper(), and PrintAttributeImplementations().

+ Here is the caller graph for this function:

◆ PrintMakeChecker()

void PrintMakeChecker ( std::ostream &  os,
const std::string &  name,
const std::string &  header 
)

Print the AttributeValue MakeChecker documentation for a class.

This will print documentation for the Make<name>Checker function.

Parameters
[in,out]osThe output stream.
[in]nameThe token to use in defining the accessor name.
[in]headerThe header file which contains this declaration.

Definition at line 1464 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::classStart, anonymous_namespace{print-introspected-doxygen.cc}::commentStart, anonymous_namespace{print-introspected-doxygen.cc}::commentStop, anonymous_namespace{print-introspected-doxygen.cc}::functionStart, NS_LOG_FUNCTION, anonymous_namespace{print-introspected-doxygen.cc}::returns, anonymous_namespace{print-introspected-doxygen.cc}::sectionStart, and anonymous_namespace{print-introspected-doxygen.cc}::seeAlso.

Referenced by PrintAttributeHelper(), and PrintAttributeImplementations().

+ Here is the caller graph for this function:

◆ PrintSize()

void PrintSize ( std::ostream &  os,
const TypeId  tid 
)

Print the size of the type represented by this tid.

Parameters
[in,out]osThe output stream.
[in]tidThe TypeId to print.

Definition at line 952 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::boldStart, anonymous_namespace{print-introspected-doxygen.cc}::boldStop, ns3::TypeId::GetSize(), NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by PrintTypeIdBlocks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintTraceSources()

void PrintTraceSources ( std::ostream &  os,
const TypeId  tid 
)

Print the Trace sources block for tid, including Trace sources declared in base classes.

All Trace sources of this TypeId will be printed, including those defined in parent classes.

Parameters
[in,out]osThe output stream.
[in]tidThe TypeId to print.

Definition at line 912 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::breakBoth, ns3::TypeId::GetName(), ns3::TypeId::GetParent(), ns3::TypeId::GetTraceSourceN(), anonymous_namespace{print-introspected-doxygen.cc}::headingStart, anonymous_namespace{print-introspected-doxygen.cc}::headingStop, NS_LOG_FUNCTION, and PrintTraceSourcesTid().

Referenced by PrintTypeIdBlocks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintTraceSourcesTid()

◆ PrintTypeIdBlocks()

void PrintTypeIdBlocks ( std::ostream &  os)

◆ SetMarkup()

void SetMarkup ( )

Initialize the markup strings, for either doxygen or text.

Parameters
[in]outputTexttrue for text output, false for doxygen output.

Definition at line 111 of file print-introspected-doxygen.cc.

References anonymous_namespace{print-introspected-doxygen.cc}::anchor, anonymous_namespace{print-introspected-doxygen.cc}::argument, anonymous_namespace{print-introspected-doxygen.cc}::boldStart, anonymous_namespace{print-introspected-doxygen.cc}::boldStop, anonymous_namespace{print-introspected-doxygen.cc}::breakBoth, anonymous_namespace{print-introspected-doxygen.cc}::breakHtmlOnly, anonymous_namespace{print-introspected-doxygen.cc}::breakTextOnly, anonymous_namespace{print-introspected-doxygen.cc}::brief, anonymous_namespace{print-introspected-doxygen.cc}::classStart, anonymous_namespace{print-introspected-doxygen.cc}::classStop, anonymous_namespace{print-introspected-doxygen.cc}::codeWord, anonymous_namespace{print-introspected-doxygen.cc}::commentStart, anonymous_namespace{print-introspected-doxygen.cc}::commentStop, anonymous_namespace{print-introspected-doxygen.cc}::copyDoc, anonymous_namespace{print-introspected-doxygen.cc}::file, anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStart, anonymous_namespace{print-introspected-doxygen.cc}::flagSpanStop, anonymous_namespace{print-introspected-doxygen.cc}::functionStart, anonymous_namespace{print-introspected-doxygen.cc}::functionStop, anonymous_namespace{print-introspected-doxygen.cc}::headingStart, anonymous_namespace{print-introspected-doxygen.cc}::headingStop, anonymous_namespace{print-introspected-doxygen.cc}::hrefMid, anonymous_namespace{print-introspected-doxygen.cc}::hrefStart, anonymous_namespace{print-introspected-doxygen.cc}::hrefStop, anonymous_namespace{print-introspected-doxygen.cc}::indentHtmlOnly, anonymous_namespace{print-introspected-doxygen.cc}::listLineStart, anonymous_namespace{print-introspected-doxygen.cc}::listLineStop, anonymous_namespace{print-introspected-doxygen.cc}::listStart, anonymous_namespace{print-introspected-doxygen.cc}::listStop, anonymous_namespace{print-introspected-doxygen.cc}::note, NS_LOG_FUNCTION, anonymous_namespace{print-introspected-doxygen.cc}::outputText, anonymous_namespace{print-introspected-doxygen.cc}::page, anonymous_namespace{print-introspected-doxygen.cc}::reference, anonymous_namespace{print-introspected-doxygen.cc}::referenceNo, anonymous_namespace{print-introspected-doxygen.cc}::returns, anonymous_namespace{print-introspected-doxygen.cc}::sectionStart, anonymous_namespace{print-introspected-doxygen.cc}::seeAlso, anonymous_namespace{print-introspected-doxygen.cc}::subSectionStart, anonymous_namespace{print-introspected-doxygen.cc}::templArgDeduced, anonymous_namespace{print-introspected-doxygen.cc}::templArgExplicit, anonymous_namespace{print-introspected-doxygen.cc}::templateArgument, and anonymous_namespace{print-introspected-doxygen.cc}::variable.

◆ Uniquefy()

template<typename T >
void Uniquefy ( t)

Helper to keep only the unique items in a container.

The container is modified in place; the elements end up sorted.

The container must support begin(), end() and erase(), which, among the STL containers, limits this to std::vector, std::dequeue and std::list.

The container elements must support operator< (for std::sort) and operator== (for std::unique).

Template Parameters
T[deduced] The container type.
Parameters
tThe container.

Definition at line 399 of file print-introspected-doxygen.cc.

Referenced by StaticInformation::Gather(), and StaticInformation::GetNoTypeIds().

+ Here is the caller graph for this function: