Difference between revisions of "GSOC2020PatchRequirement"

From Nsnam
Jump to: navigation, search
(Objective)
 
Line 50: Line 50:
 
What Natale is asking for is a new class that will allow pointing to a const object.  We can call this 'PointerToConstValue'.  In the LTE case, it would look like this:
 
What Natale is asking for is a new class that will allow pointing to a const object.  We can call this 'PointerToConstValue'.  In the LTE case, it would look like this:
  
```
+
 
 
     .AddAttribute ("DlSpectrumPhy",
 
     .AddAttribute ("DlSpectrumPhy",
 
                   "The downlink LteSpectrumPhy associated to this LtePhy",
 
                   "The downlink LteSpectrumPhy associated to this LtePhy",
Line 57: Line 57:
 
                   MakePointerToConstAccessor (&LteEnbPhy::GetDlSpectrumPhy),
 
                   MakePointerToConstAccessor (&LteEnbPhy::GetDlSpectrumPhy),
 
                   MakePointerToConstChecker <const LteSpectrumPhy> ())
 
                   MakePointerToConstChecker <const LteSpectrumPhy> ())
```
+
 
  
 
We would like a patch that does the following:
 
We would like a patch that does the following:

Latest revision as of 17:14, 6 March 2020

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

As part of their Google Summer of Code 2020 applications to ns-3, we require that students produce at least a small amount of code for ns-3. This will allow us to gauge your ability to dive into source code, understand it, make a modification, and proceed to build and verify if your modification works.

Applicants who have already contributed a patch to ns-3 should check with the org admins whether the patch requirement can be satisfied by this prior code. If you have code posted somewhere else (GitHub, for example, or a class project page) that you feel is a good indicator of your ability to write ns-3 code, please point us to the URL.

For everyone else, there are two choices:

  1. Fix one of our open technical issues by submitting a merge request in the usual way.
    • Note: if there is already a fix pending for a given issue, one cannot duplicate the effort and submit a second request.
  2. Complete the minimum patch requirement project below, and submit the patch not as a merge request (where others can see it) but privately as a diff or patchfile, or GitLab.com snippet).

Patch requirement

Setting up the environment

Perform the following steps (you may want to review our Installation page):

  • Download the ns-3-dev repository, or fork it or clone it from Git:
 $: git clone https://gitlab.com/nsnam/ns-3-dev.git
 $: cd ns-3-dev
 $: git checkout -b patch-requirement origin/master
  • Verify if you can build ns-3 and run the test suite:
 $: ./waf configure --disable-python --enable-examples --enable-tests
 $: ./waf build
 $: ./test.py

Objective

Recently, an ns-3 maintainer asked about how to create an attribute value for a const Object pointer. In order to work with the ns-3 attribute system, ns-3 provides so-called 'value' classes that wrap an underlying C++ type. Sometimes, an author will want to expose a smart pointer to an ns-3 Object through the attribute system. The ns-3 PointerValue class does this.

For an example of how this can be used, study the code found in the attribute test suite; specifically:

and

For a practical example (there are several in the ns-3 codebase):

The implementation of PointerValue is found here:

What Natale is asking for is a new class that will allow pointing to a const object. We can call this 'PointerToConstValue'. In the LTE case, it would look like this:


   .AddAttribute ("DlSpectrumPhy",
                  "The downlink LteSpectrumPhy associated to this LtePhy",
                  TypeId::ATTR_GET,
                  PointerToConstValue (),
                  MakePointerToConstAccessor (&LteEnbPhy::GetDlSpectrumPhy),
                  MakePointerToConstChecker <const LteSpectrumPhy> ())


We would like a patch that does the following:

  1. implement pointer-to-const.h and pointer-to-const.cc in the src/core directory, following very closely the pointer.h and pointer.cc approach
  2. extend src/core/test/attribute-test-suite.cc to provide test code that tries out the PointerToConstValue class.

The patch should contain the modification to src/core/wscript to include the two new files, the two new files themselves, and a patch to src/core/test-attribute-test-suite.cc.

What to submit

A patch to ns-3-dev that accomplishes the objectives. In your GSoC application, point us to a publicly available URL where you've hosted the patch (such as a "gist" on github.com, or a snippet on gitlab.com, for instance). See also some guidelines here about formatting patches for review. If you need help with this step, contact the ns-3 Org Admin (Tom Henderson) for advice.

Note: Keep your solution private by pasting the link in your application to Google, not posting it on the mailing list.

Note: You can share your patch with a GSoC mentor prior to the deadline, for initial feedback, if you have any doubt about it.