mirror of
https://github.com/triqs/dft_tools
synced 2024-12-27 06:43:40 +01:00
3fe400d34c
- examples split from the rst file using a python script (split_code). - Final result for the doc is unchanged. - examples are compiled and tested with the other tests. - examples' code have been clang-formatted, with triqs style. - doc compiles much faster, and with the same options as the rest of the test. - examples are added as tests, so they are run by make test, as simple C tests. - done for the tutorials and the reference. - autocompile removed (changed into triqs_example directive). - add triqs_example : - make a literal include of the source code. - runs the compiled example - add, as before, the result to the source code in the doc. - added the script split_code, used to make the changes automatically, maybe for later reuse. (in _tools)
50 lines
1.3 KiB
ReStructuredText
50 lines
1.3 KiB
ReStructuredText
.. highlight:: c
|
|
|
|
.. _util_tuple:
|
|
|
|
Tuple compile time tools
|
|
=============================
|
|
|
|
Very useful for lib developers, they fill a missing gap in the std library.
|
|
They implement various standard functional operations, at compile time,
|
|
on tuple...
|
|
|
|
.. note::
|
|
|
|
Simple measures have shown that these routines are **as fast as native code** (tested on gcc, clang, icc),
|
|
due to inlining. They can therefore be used in critical parts of codes.
|
|
|
|
apply
|
|
-----------------------------------------------
|
|
|
|
*Purpose* : `apply a function on a tuple of arguments`
|
|
|
|
Given a function object `f`, and its arguments stored in a tuple `t`, and we want to apply `f` on `t`.
|
|
|
|
Python equivalent : `f(*t)`
|
|
|
|
*Synopsis* ::
|
|
|
|
template<typename Function, typename Tuple> auto apply (Function && f, Tuple const & t);
|
|
|
|
*Solution* :
|
|
|
|
.. triqs_example:: ./tupletools_0.cpp
|
|
for_each
|
|
-------------------------------------------------------------------------
|
|
|
|
*Purpose* : `apply a function for each element of a tuple (in order)`
|
|
|
|
|
|
Given a function object `f`, we want to apply it to all elements of a tuple `t`.
|
|
|
|
Python equivalent : `for x in t : f(x)`
|
|
|
|
*Synopsis* ::
|
|
|
|
template<typename Function, typename Tuple> void for_each(Tuple const & t, Function && f);
|
|
|
|
*Solution* :
|
|
|
|
.. triqs_example:: ./tupletools_1.cpp
|