diff --git a/doc/contributing/source/models.rst b/doc/contributing/source/models.rst index b05b3ec33..04b7b5648 100644 --- a/doc/contributing/source/models.rst +++ b/doc/contributing/source/models.rst @@ -80,11 +80,11 @@ merging of your code. In brief, we can summarize the guidelines as follows: -1. Be licensed appropriately (see :ref:`General`) -2. Understand how and why |ns3| conducts code reviews before merging -3. Follow the ns-3 coding style (:ref:`Coding style`) and software - engineering and consistency feedback that maintainers may provide -4. Write associated documentation, tests, and example programs +1. Be licensed appropriately (see :ref:`General`) +2. Understand how and why |ns3| conducts code reviews before merging +3. Follow the ns-3 coding style (:ref:`Coding style`) and software + engineering and consistency feedback that maintainers may provide +4. Write associated documentation, tests, and example programs If you do not have the time to follow through the process to include your code in the main tree, please see the next chapter (:ref:`External`) diff --git a/doc/installation/source/linux.rst b/doc/installation/source/linux.rst index 03c04e88a..fdaf0703e 100644 --- a/doc/installation/source/linux.rst +++ b/doc/installation/source/linux.rst @@ -24,15 +24,15 @@ Requirements The minimum supported version of Ubuntu is Ubuntu 18.04 LTS (as long as a modern compiler version such as g++ version 9 or later is added). - +--------------------+---------------------------------------------------------------------+ - | **ns-3 Version** | **apt Packages** | - +====================+==================+==================================================+ - | 3.36 and later | ``g++ python3 cmake ninja-build git`` | - +--------------------+---------------------------------------------------------------------+ - | 3.30-3.35 | ``g++ python3 git`` | - +--------------------+---------------------------------------------------------------------+ - | 3.29 and earlier | ``g++ python2`` | - +--------------------+---------------------------------------------------------------------+ ++--------------------+---------------------------------------------------------------------+ +| **ns-3 Version** | **apt Packages** | ++====================+==================+==================================================+ +| 3.36 and later | ``g++ python3 cmake ninja-build git`` | ++--------------------+---------------------------------------------------------------------+ +| 3.30-3.35 | ``g++ python3 git`` | ++--------------------+---------------------------------------------------------------------+ +| 3.29 and earlier | ``g++ python2`` | ++--------------------+---------------------------------------------------------------------+ .. note:: As of July 2023 (ns-3.39 release and later), the minimum g++ version is g++-9. @@ -41,15 +41,15 @@ version such as g++ version 9 or later is added). Recommended *********** - +-----------------------------+------------------------------------------------------------+ - | **Feature** | **apt Packages** | - +=============================+============================================================+ - | Compiler cache optimization | ``ccache`` | - +-----------------------------+------------------------------------------------------------+ - | Code linting | ``clang-format clang-tidy`` | - +-----------------------------+------------------------------------------------------------+ - | Debugging | ``gdb valgrind`` | - +-----------------------------+------------------------------------------------------------+ ++-----------------------------+------------------------------------------------------------+ +| **Feature** | **apt Packages** | ++=============================+============================================================+ +| Compiler cache optimization | ``ccache`` | ++-----------------------------+------------------------------------------------------------+ +| Code linting | ``clang-format clang-tidy`` | ++-----------------------------+------------------------------------------------------------+ +| Debugging | ``gdb valgrind`` | ++-----------------------------+------------------------------------------------------------+ .. note:: For Ubuntu 20.04 release and earlier, the version of ccache provided by apt @@ -65,37 +65,37 @@ Optional Please see below subsections for Python-related package requirements. - +-----------------------------+------------------------------------------------------------+ - | **Feature** | **apt Packages** | - +=============================+============================================================+ - | Reading pcap traces | ``tcpdump wireshark`` | - +-----------------------------+------------------------------------------------------------+ - | Database support | ``sqlite sqlite3 libsqlite3-dev`` | - +-----------------------------+------------------------------------------------------------+ - | NetAnim animator | ``qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools`` | - +-----------------------------+------------------------------------------------------------+ - | MPI-based distributed | | - | simulation | ``openmpi-bin openmpi-common openmpi-doc libopenmpi-dev`` | - +-----------------------------+------------------------------------------------------------+ - | Building Doxygen | ``doxygen graphviz imagemagick`` | - +-----------------------------+------------------------------------------------------------+ - | Sphinx documentation | ``python3-sphinx dia imagemagick texlive dvipng latexmk`` | - | | ``texlive-extra-utils texlive-latex-extra`` | - | | ``texlive-font-utils`` | - +-----------------------------+------------------------------------------------------------+ - | Eigen3 | ``libeigen3-dev`` | - +-----------------------------+------------------------------------------------------------+ - | GNU Scientific Library | ``gsl-bin libgsl-dev libgslcblas0`` | - +-----------------------------+------------------------------------------------------------+ - | XML config store | ``libxml2 libxml2-dev`` | - +-----------------------------+------------------------------------------------------------+ - | GTK-based config store | ``libgtk-3-dev`` | - +-----------------------------+------------------------------------------------------------+ - | Emulation with virtual | | - | machines and tap bridge | ``lxc-utils lxc-templates iproute2 iptables`` | - +-----------------------------+------------------------------------------------------------+ - | Support for openflow | ``libxml2 libxml2-dev libboost-all-dev`` | - +-----------------------------+------------------------------------------------------------+ ++-----------------------------+------------------------------------------------------------+ +| **Feature** | **apt Packages** | ++=============================+============================================================+ +| Reading pcap traces | ``tcpdump wireshark`` | ++-----------------------------+------------------------------------------------------------+ +| Database support | ``sqlite sqlite3 libsqlite3-dev`` | ++-----------------------------+------------------------------------------------------------+ +| NetAnim animator | ``qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools`` | ++-----------------------------+------------------------------------------------------------+ +| MPI-based distributed | | +| simulation | ``openmpi-bin openmpi-common openmpi-doc libopenmpi-dev`` | ++-----------------------------+------------------------------------------------------------+ +| Building Doxygen | ``doxygen graphviz imagemagick`` | ++-----------------------------+------------------------------------------------------------+ +| Sphinx documentation | ``python3-sphinx dia imagemagick texlive dvipng latexmk`` | +| | ``texlive-extra-utils texlive-latex-extra`` | +| | ``texlive-font-utils`` | ++-----------------------------+------------------------------------------------------------+ +| Eigen3 | ``libeigen3-dev`` | ++-----------------------------+------------------------------------------------------------+ +| GNU Scientific Library | ``gsl-bin libgsl-dev libgslcblas0`` | ++-----------------------------+------------------------------------------------------------+ +| XML config store | ``libxml2 libxml2-dev`` | ++-----------------------------+------------------------------------------------------------+ +| GTK-based config store | ``libgtk-3-dev`` | ++-----------------------------+------------------------------------------------------------+ +| Emulation with virtual | | +| machines and tap bridge | ``lxc-utils lxc-templates iproute2 iptables`` | ++-----------------------------+------------------------------------------------------------+ +| Support for openflow | ``libxml2 libxml2-dev libboost-all-dev`` | ++-----------------------------+------------------------------------------------------------+ .. note:: For Ubuntu 20.10 and earlier, the single 'qt5-default' package suffices for NetAnim (``apt install qt5-default``) diff --git a/doc/installation/source/macos.rst b/doc/installation/source/macos.rst index 31a17982b..700a0bd41 100644 --- a/doc/installation/source/macos.rst +++ b/doc/installation/source/macos.rst @@ -52,13 +52,13 @@ to install ``g++``. The following table provides package names for installing CMake and Ninja build system from Homebrew or MacPorts. - +--------------------+-------------------------------+-------------------------------------+ - | **ns-3 Version** | **Homebrew packages** | **MacPorts packages** | - +====================+===============================+=====================================+ - | 3.36 and later | ``cmake ninja`` | ``cmake ninja`` | - +--------------------+-------------------------------+-------------------------------------+ - | 3.35 and earlier | None | None | - +--------------------+-------------------------------+-------------------------------------+ ++--------------------+-------------------------------+-------------------------------------+ +| **ns-3 Version** | **Homebrew packages** | **MacPorts packages** | ++====================+===============================+=====================================+ +| 3.36 and later | ``cmake ninja`` | ``cmake ninja`` | ++--------------------+-------------------------------+-------------------------------------+ +| 3.35 and earlier | None | None | ++--------------------+-------------------------------+-------------------------------------+ You will know you are done when you can successfully type `clang++ -v` at the command line, and when you type `cmake --help` and it identifies that you have at least one installed generator (in the below example, Unix Makefiles): @@ -75,15 +75,15 @@ You will know you are done when you can successfully type `clang++ -v` at the co Recommended *********** - +-----------------------------+----------------------------+-----------------------------------+ - | **Feature** | **Homebrew packages** | **MacPorts packages** | - +=============================+============================+===================================+ - | Compiler cache optimization | ``ccache`` | ``ccache`` | - +-----------------------------+----------------------------+-----------------------------------+ - | Code linting | clang-format included with | clang-format included with | - | | ``llvm``, need to select | ``clang``, need to select | - | | ``llvm@XX`` version | ``clang-XX llvm-XX`` versions | - +-----------------------------+----------------------------+-----------------------------------+ ++-----------------------------+----------------------------+-----------------------------------+ +| **Feature** | **Homebrew packages** | **MacPorts packages** | ++=============================+============================+===================================+ +| Compiler cache optimization | ``ccache`` | ``ccache`` | ++-----------------------------+----------------------------+-----------------------------------+ +| Code linting | clang-format included with | clang-format included with | +| | ``llvm``, need to select | ``clang``, need to select | +| | ``llvm@XX`` version | ``clang-XX llvm-XX`` versions | ++-----------------------------+----------------------------+-----------------------------------+ .. note:: @@ -120,42 +120,42 @@ Please see below subsections for Python-related package requirements. For MacPorts packages we show the most recent package version available as of early 2023. - +-----------------------------+----------------------------------+--------------------------+ - | **Feature** | **Homebrew packages** | **MacPort packages** | - +=============================+==================================+==========================+ - | Reading pcap traces | ``wireshark`` | ``wireshark4`` | - +-----------------------------+----------------------------------+--------------------------+ - | Database support | ``sqlite`` | ``sqlite3`` | - +-----------------------------+----------------------------------+--------------------------+ - | NetAnim animator | ``qt@5`` | ``qt513`` | - +-----------------------------+----------------------------------+--------------------------+ - | MPI-based distributed | | ``openmpi`` | - | simulation | ``open-mpi`` | | - +-----------------------------+----------------------------------+--------------------------+ - | Building Doxygen | ``doxygen graphviz imagemagick`` | ``doxygen graphviz`` | - | | | ``ImageMagick`` | - +-----------------------------+----------------------------------+--------------------------+ - | Sphinx documentation | ``sphinx-doc texlive`` | ``dia texlive`` | - | | | ``texlive-fonts-extra`` | - | | | ``texlive-latex-extra`` | - | | | ``py3XX-sphinx``, with | - | | | `XX`` the Python minor | - | | | version such as `12` | - +-----------------------------+----------------------------------+--------------------------+ - | Eigen3 | ``eigen`` | ``eigen3`` | - +-----------------------------+----------------------------------+--------------------------+ - | GNU Scientific Library | ``gsl`` | ``gsl`` | - +-----------------------------+----------------------------------+--------------------------+ - | XML config store | ``libxml2`` | ``libxml2`` | - +-----------------------------+----------------------------------+--------------------------+ - | GTK-based config store | ``gtk+3`` | ``gtk3`` or ``gtk4`` | - +-----------------------------+----------------------------------+--------------------------+ - | Emulation with virtual | | | - | machines | Not available for macOS | Not available for macOS | - +-----------------------------+----------------------------------+--------------------------+ - | Support for openflow, | ``boost`` | ``boost`` | - | CircularApertureAntennaModel| | | - +-----------------------------+----------------------------------+--------------------------+ ++-----------------------------+----------------------------------+--------------------------+ +| **Feature** | **Homebrew packages** | **MacPort packages** | ++=============================+==================================+==========================+ +| Reading pcap traces | ``wireshark`` | ``wireshark4`` | ++-----------------------------+----------------------------------+--------------------------+ +| Database support | ``sqlite`` | ``sqlite3`` | ++-----------------------------+----------------------------------+--------------------------+ +| NetAnim animator | ``qt@5`` | ``qt513`` | ++-----------------------------+----------------------------------+--------------------------+ +| MPI-based distributed | | ``openmpi`` | +| simulation | ``open-mpi`` | | ++-----------------------------+----------------------------------+--------------------------+ +| Building Doxygen | ``doxygen graphviz imagemagick`` | ``doxygen graphviz`` | +| | | ``ImageMagick`` | ++-----------------------------+----------------------------------+--------------------------+ +| Sphinx documentation | ``sphinx-doc texlive`` | ``dia texlive`` | +| | | ``texlive-fonts-extra`` | +| | | ``texlive-latex-extra`` | +| | | ``py3XX-sphinx``, with | +| | | `XX`` the Python minor | +| | | version such as `12` | ++-----------------------------+----------------------------------+--------------------------+ +| Eigen3 | ``eigen`` | ``eigen3`` | ++-----------------------------+----------------------------------+--------------------------+ +| GNU Scientific Library | ``gsl`` | ``gsl`` | ++-----------------------------+----------------------------------+--------------------------+ +| XML config store | ``libxml2`` | ``libxml2`` | ++-----------------------------+----------------------------------+--------------------------+ +| GTK-based config store | ``gtk+3`` | ``gtk3`` or ``gtk4`` | ++-----------------------------+----------------------------------+--------------------------+ +| Emulation with virtual | | | +| machines | Not available for macOS | Not available for macOS | ++-----------------------------+----------------------------------+--------------------------+ +| Support for openflow, | ``boost`` | ``boost`` | +| CircularApertureAntennaModel| | | ++-----------------------------+----------------------------------+--------------------------+ Caveats and troubleshooting *************************** diff --git a/doc/installation/source/quick-start.rst b/doc/installation/source/quick-start.rst index 2725a3b9e..75f622034 100644 --- a/doc/installation/source/quick-start.rst +++ b/doc/installation/source/quick-start.rst @@ -34,25 +34,25 @@ Prerequisites Make sure that your system has these prerequisites. Download can be via either ``git`` or via source archive download (via a web browser, ``wget``, or ``curl``). - +--------------------+--------------------------------------+------------------------------+ - | **Purpose** | **Tool** | **Minimum Version** | - +====================+==================+===================+==============================+ - | **Download** | ``git`` (for Git download) | No minimum version | - + + + + - | | or ``tar`` and ``bunzip2`` | No minimum version | - | | (for Web download) | | - +--------------------+--------------------------------------+------------------------------+ - | **Compiler** | ``g++`` | >= 10 | - + + + + - | | or ``clang++`` | >= 11 | - +--------------------+--------------------------------------+------------------------------+ - | **Configuration** | ``python3`` | >= 3.8 | - +--------------------+--------------------------------------+------------------------------+ - | **Build system** | ``cmake``, | >= 3.13 | - + + + + - | | and at least one of: | No minimum version | - | | ``make``, ``ninja``, or ``Xcode`` | | - +--------------------+--------------------------------------+------------------------------+ ++--------------------+--------------------------------------+------------------------------+ +| **Purpose** | **Tool** | **Minimum Version** | ++====================+==================+===================+==============================+ +| **Download** | ``git`` (for Git download) | No minimum version | ++ + + + +| | or ``tar`` and ``bunzip2`` | No minimum version | +| | (for Web download) | | ++--------------------+--------------------------------------+------------------------------+ +| **Compiler** | ``g++`` | >= 10 | ++ + + + +| | or ``clang++`` | >= 11 | ++--------------------+--------------------------------------+------------------------------+ +| **Configuration** | ``python3`` | >= 3.8 | ++--------------------+--------------------------------------+------------------------------+ +| **Build system** | ``cmake``, | >= 3.13 | ++ + + + +| | and at least one of: | No minimum version | +| | ``make``, ``ninja``, or ``Xcode`` | | ++--------------------+--------------------------------------+------------------------------+ .. note:: @@ -63,17 +63,17 @@ source archive download (via a web browser, ``wget``, or ``curl``). From the command line, you can check the version of each of the above tools with version requirements as follows: - +--------------------------------------+------------------------------------+ - | **Tool** | **Version check command** | - +======================================+====================================+ - | ``g++`` | ``$ g++ --version`` | - +--------------------------------------+------------------------------------+ - | ``clang++`` | ``$ clang++ --version`` | - +--------------------------------------+------------------------------------+ - | ``python3`` | ``$ python3 -V`` | - +--------------------------------------+------------------------------------+ - | ``cmake`` | ``$ cmake --version`` | - +--------------------------------------+------------------------------------+ ++--------------------------------------+------------------------------------+ +| **Tool** | **Version check command** | ++======================================+====================================+ +| ``g++`` | ``$ g++ --version`` | ++--------------------------------------+------------------------------------+ +| ``clang++`` | ``$ clang++ --version`` | ++--------------------------------------+------------------------------------+ +| ``python3`` | ``$ python3 -V`` | ++--------------------------------------+------------------------------------+ +| ``cmake`` | ``$ cmake --version`` | ++--------------------------------------+------------------------------------+ Download ******** diff --git a/doc/installation/source/system.rst b/doc/installation/source/system.rst index 13d6d13fe..fb2a8086b 100644 --- a/doc/installation/source/system.rst +++ b/doc/installation/source/system.rst @@ -19,7 +19,10 @@ The list of requirements depends on which version of ns-3 you are trying to buil extensions you need. .. note:: - **"Do I need to install all of these packages?"** Some users want to install everything so + + **"Do I need to install all of these packages?"** + + Some users want to install everything so that their configuration output shows that every feature is enabled. However, there is no real need to install prerequisites related to features you are not yet using; you can always come back later and install more prerequisites as needed. The build system should warn @@ -29,7 +32,10 @@ In the following, we have classified the prerequisites as either being required, for all users, or optional depending on use cases. .. note:: - **"Is there a maintained list of all prerequisites?"** We use GitLab.com's continuous + + **"Is there a maintained list of all prerequisites?"** + + We use GitLab.com's continuous integration system for testing; the configuration YAML files for these jobs can be found in the directory ``utils/tests/``. So, for instance, if you want to look at what packages the CI is installing for Alpine Linux, look at ``utils/tests/gitlab-ci-alpine.yml``. The @@ -75,7 +81,7 @@ Recommended The following are recommended for most users of |ns3|. -compiler cache optimization (for ns-3.37 and later) +Compiler cache optimization (for ns-3.37 and later) =================================================== `Ccache `_ is a compiler cache optimization that will speed up builds across @@ -93,6 +99,7 @@ Users can invoke these tools directly from the command-line or through the Moreover, clang-tidy is integrated with CMake, enabling code scanning during the build phase. .. note:: + clang-format-14 through clang-format-16 version is required. clang-format is strongly recommended to write code that follows the ns-3 code conventions, but @@ -118,6 +125,7 @@ Optional The remaining prerequisites listed below are only needed for optional ns-3 components. .. note:: + As of ns-3.30 release (August 2019), ns-3 uses Python 3 by default, but earlier releases depend on Python 2 packages, and at least a Python 2 interpreter is recommended. If installing the below prerequisites for an earlier release, one may in general substitute @@ -189,6 +197,7 @@ reStructuredText for Sphinx, and figures are typically in dia. To build PDF ver Eigen3 support ============== + `Eigen3 `_ is used to support more efficient calculations when using the `3GPP propagation loss models `_ in LTE and NR simulations. diff --git a/doc/installation/source/windows.rst b/doc/installation/source/windows.rst index 916880b32..4d37c2c55 100644 --- a/doc/installation/source/windows.rst +++ b/doc/installation/source/windows.rst @@ -18,6 +18,7 @@ via the Msys2/MinGW64 toolchain. Both options are listed below; users may choos either WSL or the Msys2/MinGW64 toolchain (installing both is not required). .. note:: + |ns3| is not fully compatible with Visual Studio IDE / MSVC compiler; only Visual Studio Code editor, the Msys2/MinGW64 toolchain, and WSL, as explained below. diff --git a/doc/tutorial/source/data-collection.rst b/doc/tutorial/source/data-collection.rst index 4d5351efe..88196de69 100644 --- a/doc/tutorial/source/data-collection.rst +++ b/doc/tutorial/source/data-collection.rst @@ -349,37 +349,37 @@ Supported Trace Types The following traced values are supported with Probes as of this writing: - +------------------+-------------------+------------------------------------+ - | TracedValue type | Probe type | File | - +==================+=========+=========+====================================+ - | double | DoubleProbe | stats/model/double-probe.h | - +------------------+-------------------+------------------------------------+ - | uint8_t | Uinteger8Probe | stats/model/uinteger-8-probe.h | - +------------------+-------------------+------------------------------------+ - | uint16_t | Uinteger16Probe | stats/model/uinteger-16-probe.h | - +------------------+-------------------+------------------------------------+ - | uint32_t | Uinteger32Probe | stats/model/uinteger-32-probe.h | - +------------------+-------------------+------------------------------------+ - | bool | BooleanProbe | stats/model/uinteger-16-probe.h | - +------------------+-------------------+------------------------------------+ - | ns3::Time | TimeProbe | stats/model/time-probe.h | - +------------------+-------------------+------------------------------------+ ++------------------+-------------------+------------------------------------+ +| TracedValue type | Probe type | File | ++==================+=========+=========+====================================+ +| double | DoubleProbe | stats/model/double-probe.h | ++------------------+-------------------+------------------------------------+ +| uint8_t | Uinteger8Probe | stats/model/uinteger-8-probe.h | ++------------------+-------------------+------------------------------------+ +| uint16_t | Uinteger16Probe | stats/model/uinteger-16-probe.h | ++------------------+-------------------+------------------------------------+ +| uint32_t | Uinteger32Probe | stats/model/uinteger-32-probe.h | ++------------------+-------------------+------------------------------------+ +| bool | BooleanProbe | stats/model/uinteger-16-probe.h | ++------------------+-------------------+------------------------------------+ +| ns3::Time | TimeProbe | stats/model/time-probe.h | ++------------------+-------------------+------------------------------------+ The following TraceSource types are supported by Probes as of this writing: - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ - | TracedSource type | Probe type | Probe outputs | File | - +==========================================+========================+===============+====================================================+ - | Ptr | PacketProbe | OutputBytes | network/utils/packet-probe.h | - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ - | Ptr, Ptr, uint32_t | Ipv4PacketProbe | OutputBytes | internet/model/ipv4-packet-probe.h | - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ - | Ptr, Ptr, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h | - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ - | Ptr, Ptr, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h | - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ - | Ptr, const Address& | ApplicationPacketProbe | OutputBytes | applications/model/application-packet-probe.h | - +------------------------------------------+------------------------+---------------+----------------------------------------------------+ ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ +| TracedSource type | Probe type | Probe outputs | File | ++==========================================+========================+===============+====================================================+ +| Ptr | PacketProbe | OutputBytes | network/utils/packet-probe.h | ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ +| Ptr, Ptr, uint32_t | Ipv4PacketProbe | OutputBytes | internet/model/ipv4-packet-probe.h | ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ +| Ptr, Ptr, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h | ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ +| Ptr, Ptr, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h | ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ +| Ptr, const Address& | ApplicationPacketProbe | OutputBytes | applications/model/application-packet-probe.h | ++------------------------------------------+------------------------+---------------+----------------------------------------------------+ As can be seen, only a few trace sources are supported, and they are all oriented towards outputting the Packet size (in bytes). However, diff --git a/doc/tutorial/source/tracing.rst b/doc/tutorial/source/tracing.rst index 44184cd92..f85c00589 100644 --- a/doc/tutorial/source/tracing.rst +++ b/doc/tutorial/source/tracing.rst @@ -452,7 +452,7 @@ Let's ignore the bit about context for now. Finally, the line assigning a value to ``m_myInt``:: - myObject->m_myInt = 1234; + myObject->m_myInt = 1234; should be interpreted as an invocation of ``operator=`` on the member variable ``m_myInt`` with the integer ``1234`` passed as a parameter. @@ -712,12 +712,12 @@ you select the "API Documentation" link, you will be taken to the In the sidebar you should see a hierarchy that begins -* ns-3 +* ns-3 - * ns-3 Documentation - * All TraceSources - * All Attributes - * All GlobalValues + * ns-3 Documentation + * All TraceSources + * All Attributes + * All GlobalValues The list of interest to us here is "All TraceSources". Go ahead and select that link. You will see, perhaps not too surprisingly, a list @@ -1168,23 +1168,23 @@ itself around, rather than passing the address of the object. We extend that requirement to include the full set of assignment-style operators that are pre-defined for plain-old-data (POD) types: - +---------------------+---------------------+ - | ``operator=`` (assignment) | - +---------------------+---------------------+ - | ``operator*=`` | ``operator/=`` | - +---------------------+---------------------+ - | ``operator+=`` | ``operator-=`` | - +---------------------+---------------------+ - | ``operator++`` (both prefix and postfix) | - +---------------------+---------------------+ - | ``operator--`` (both prefix and postfix) | - +---------------------+---------------------+ - | ``operator<<=`` | ``operator>>=`` | - +---------------------+---------------------+ - | ``operator&=`` | ``operator|=`` | - +---------------------+---------------------+ - | ``operator%=`` | ``operator^=`` | - +---------------------+---------------------+ ++---------------------+---------------------+ +| ``operator=`` (assignment) | ++---------------------+---------------------+ +| ``operator*=`` | ``operator/=`` | ++---------------------+---------------------+ +| ``operator+=`` | ``operator-=`` | ++---------------------+---------------------+ +| ``operator++`` (both prefix and postfix) | ++---------------------+---------------------+ +| ``operator--`` (both prefix and postfix) | ++---------------------+---------------------+ +| ``operator<<=`` | ``operator>>=`` | ++---------------------+---------------------+ +| ``operator&=`` | ``operator|=`` | ++---------------------+---------------------+ +| ``operator%=`` | ``operator^=`` | ++---------------------+---------------------+ What this all really means is that you will be able to trace all changes made using those operators to a C++ object which has value @@ -2424,13 +2424,13 @@ behaving identically, but we do strive to make them all work as similarly as possible; and whenever possible there are analogs for all methods in all classes. - +-----------------+---------+---------+ - | | PCAP | ASCII | - +=================+=========+=========+ - | Device Helper | |check| | |check| | - +-----------------+---------+---------+ - | Protocol Helper | |check| | |check| | - +-----------------+---------+---------+ ++-----------------+---------+---------+ +| | PCAP | ASCII | ++=================+=========+=========+ +| Device Helper | |check| | |check| | ++-----------------+---------+---------+ +| Protocol Helper | |check| | |check| | ++-----------------+---------+---------+ We use an approach called a ``mixin`` to add tracing functionality to our helper classes. A ``mixin`` is a class that provides