Notations and documentation conventions

Notation

In the documentation, we make use in particular of the C++20 concept notation for template. For example

template<ImmutableArray A> void f(A const & a);

means that f is a template

template<typename A> void f(A const & a);

which is enabled or valid only for types A which models the ImmutableArray concept.

Documentation conventions for C++ code

The c++ source code is documented with Doxygen-like conventions, with the following keywords, preceded by @:
  • param: parameter of a function

  • tparam: template parameter

  • return: description of the return type

  • note: a note on the class/functions

  • warning: a warning

Latex code is written between dollar signs (e.g $f(x)=x$), and links to other classes or functions are to be put between double brackets (e.g. [[imfreq]]).

For the rest, we use the RST syntax.

Here is one example:

/// an interesting function to add two elements
/**
  This function implements the addition of $a$ and $b$: $a+b$
  @tparam T1 any type with a + operator
  @param a the first element
  @param b the second element
  @return the sum of a and b, $a+b$
  @note This is a very simple function
  @warning Still alpha...
 */
template<typename T1>
T1 add(T1 const & a, T1 const & b);

This generates:

#include <test.hpp>

add

Synopsis:

template<typename T1>
T1 add (const T1 & a, const T1 & b) ;

an interesting function to add two elements

This function implements the addition of \(a\) and \(b\): \(a+b\)

Template parameters

  • T1: any type with a + operator

Parameters

  • a: the first element

  • b: the second element

Return value

the sum of a and b, \(a+b\)

Note

This is a very simple function

Warning

Still alpha…