fix doc: big update

- use single doxyfile instead of one per module
- use a cleaner and more modern style
- reorder sections to put details first
- hide diagrams by default
- remove deprecated doxygen variables
- disable latex generation by default
- fix some doc typos
This commit is contained in:
Johann Dreo 2022-01-26 16:45:51 +01:00
commit 8948f0a3dc
18 changed files with 1038 additions and 92 deletions

View file

@ -32,8 +32,9 @@ IF (DOXYGEN_FOUND)
ENDIF (DOXYGEN_EXECUTABLE)
# configure cfg file
# "${CMAKE_CURRENT_SOURCE_DIR}/${EO_DOC_CONFIG_FILE}.cmake"
CONFIGURE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/${EO_DOC_CONFIG_FILE}.cmake"
"${CMAKE_SOURCE_DIR}/doxyfile.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${EO_DOC_CONFIG_FILE}"
)

File diff suppressed because it is too large Load diff

View file

@ -99,7 +99,7 @@ class eoParameterFoundry : public eoForgeScalar< Itf >
public:
/** Underlying type of the parameter.
*
* @note: You probably only want to use either `double` or `size_t`.
* @note You probably only want to use either `double` or `size_t`.
* @see eoAlgoFoundry
*/
using Type = Itf;
@ -154,24 +154,25 @@ class eoParameterFoundry : public eoForgeScalar< Itf >
* Now, you must implement the foundry just like any eoAlgo, by using the eoPop interface:
* @code
* foundry(pop);
* @encode
* @endcode
*
* It will instantiate the needed operators (only) and the algorithm itself on-the-fly,
* and then run it.
*
* @note: The "encoding" which represent the selected options, figuring the actual meta-algorithm,
* @note The "encoding" which represent the selected options, figuring the actual meta-algorithm,
* is a vector of `std::variant`, which can hold either a `size_t` or a `double`.
* The first one is used to indicate the index of an operator class
* *or* a parameter which is a size.
* The second is used to store numerical parameters values.
*
* @note: Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* @note Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* Every instantiation is deferred upon actual use. That way, you can still reconfigure them
* at any time with `eoForgeOperator::setup`, for example:
* @code
* foundry.selector.at(0).setup(0.5); // using constructor's arguments
* @endcode
*
* @warning If the managed constructor takes a reference YOU SHOULD ABSOLUTELY wrap it
* @warning If the managed constructor takes a reference *YOU SHOULD ABSOLUTELY* wrap it
* in a `std::ref` when using `add` or `setup`, or it will silently be passed as a copy,
* which would effectively disable any link between operators.
*
@ -215,7 +216,7 @@ class eoAlgoFoundry : public eoAlgo<EOT>
*
* i.e. Select an algorithm to instantiate.
*
* @note: You need to indicate the type of each item
* @note You need to indicate the type of each item
* if you want to call this with a brace-initialized vector.
*
* For example:
@ -230,7 +231,7 @@ class eoAlgoFoundry : public eoAlgo<EOT>
* eoAlgoFoundry<EOT>::Encodings encoded_algo(foundry.size());
* encoded_algo[foundry.crossover_rates.index()] = crossover_rate;
* encoded_algo[foundry.crossover_opers.index()] = crossover_oper;
* @encdoe
* @endcode
*/
void select( Encodings encodings )
{
@ -240,7 +241,7 @@ class eoAlgoFoundry : public eoAlgo<EOT>
/** Access to the encoding of the currently selected operator.
*
* @warning: This returns a `std::variant`, which you should `std::get<T>`.
* @warning This returns a `std::variant`, which you should `std::get<T>`.
*
* For example:
* @code
@ -248,14 +249,14 @@ class eoAlgoFoundry : public eoAlgo<EOT>
* double param_id = std::get<double>(foundry.at(3));
* @endcode
*
* @note: You can use rank, value or len to have automatic casting.
* @see rank, @see value or @see len to have automatic casting.
*/
Encoding & at(size_t i)
{
return _encodings.at(i);
}
/** Access to the currently selected ID of an operator.
/** Access to the currently selected ID of an operator.
*/
template<class OP>
size_t rank(const OP& op)

View file

@ -55,7 +55,7 @@
* // + continue
* @endcode
*
* @note: by default, the firsts of the five operators are selected.
* @note by default, the firsts of the five operators are select ed.
*
* If you don't (want to) recall the order of the operators in the encoding,
* you can use the `index()` member, for example:
@ -66,12 +66,12 @@
* Now, you can call the fourdry just like any eoAlgo, by passing it an eoPop:
* @code
* foundry(pop);
* @encode
* @endcode
* It will instantiate the needed operators (only) and the algorithm itself on-the-fly,
* and then run it.
*
* @note: Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* Every instantiation is deferred upon actual use. That way, you can still reconfigure them
* @note Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* Every instantiation is deferred upon actual use. That way, you can still reconfigure them
* at any time with `eoForgeOperator::setup`, for example:
* @code
* foundry.selectors.at(0).setup(0.5); // using constructor's arguments
@ -135,8 +135,8 @@ class eoAlgoFoundryEA : public eoAlgoFoundry<EOT>
/** Return an approximate name of the seected algorithm.
*
* @note: does not take into account parameters of the operators,
* only show class names.
* @note does not take into account parameters of the operators,
* only show class names.
*/
std::string name()
{

View file

@ -62,7 +62,7 @@
* });
* @endcode
*
* @note: by default, the firsts of the 10 operators are selected.
* @note by default, the firsts of the 10 operators are selected.
*
* If you don't (want to) recall the order of the operators in the encoding,
* you can use the `index()` member, for example:
@ -73,11 +73,12 @@
* Now, you can call the foundry just like any eoAlgo, by passing it an eoPop:
* @code
* foundry(pop);
* @encode
* @endcode
*
* It will instantiate the needed operators (only) and the algorithm itself on-the-fly,
* and then run it.
*
* @note: Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* @note Thanks to the underlying eoOperatorFoundry, not all the added operators are instantiated.
* Every instantiation is deferred upon actual use. That way, you can still reconfigure them
* at any time with `eoForgeOperator::setup`, for example:
* @code