#ifndef _DOXYGEN_EXAMPLE_MACRO_H_
#define _DOXYGEN_EXAMPLE_MACRO_H_
/**
* @page page_howto_macro How to write doxygen documentation for macro.
*
* There are two typical types of macro definitions.
*
* - One is to define constant macros. For this type of macro, we
* recommend putting documentation after members. See `DOXYGEN_EXAMPLE_CONST_A`
* and `DOXYGEN_EXAMPLE_CONST_B` in
* documentation/0.doxygen/example/include/macro.h
* for code exmaple.
*
* - The other is to define macros with parameters. For this type of
* macro, we recommend using a method similar to documenting for
* functions, that is, writing comment block before the macro definition.
* More details please see @ref page_howto_function
* See `DOXYGEN_EXAMPLE_ABS` in
* documentation/0.doxygen/example/include/macro.h
* for code example.
*
* We often categorize macros in our code. Similarly, when writing doxygen
* comments for these categorized macros, we can also group them. See
* `DOXYGEN_EXAMPLE_GROUP_A_X`/`DOXYGEN_EXAMPLE_GROUP_A_Y` and
* `DOXYGEN_EXAMPLE_GROUP_B_X`/`DOXYGEN_EXAMPLE_GROUP_B_Y` in
* documentation/0.doxygen/example/include/macro.h
* for code example.
*
* See @ref group_doxygen_example_macro for html output.
*/
/**
* @defgroup group_doxygen_example_macro Doxygen Example of Macro
*
* @ingroup group_doxygen_example
*
* @brief Doxygen Example of Macro.
*
* @{
*/
#define DOXYGEN_EXAMPLE_CONST_A 100 /**< Description of macro const A */
#define DOXYGEN_EXAMPLE_CONST_B 200 /**< Description of macro const B */
/**
* @brief Computes the absolute value of its argument @a x.
*
* @param[in] x input value.
*
* @return absolute value of @a x.
*/
#define DOXYGEN_EXAMPLE_ABS(x) (((x)>0)?(x):-(x))
/**
* @defgroup group_doxygen_example_macro_group_a Group A of Macros
*
* @brief Doxygen Example of Macros grouped in A.
*
* @{
*/
#define DOXYGEN_EXAMPLE_GROUP_A_X 0x0000 /**< Description of X in group A */
#define DOXYGEN_EXAMPLE_GROUP_A_Y 0x0001 /**< Description of Y in group A */
/** @} */
/**
* @defgroup group_doxygen_example_macro_group_b Group B of Macros
*
* @brief Doxygen Example of Macros grouped in B
*
* @{
*/
#define DOXYGEN_EXAMPLE_GROUP_B_X 0x0000 /**< Description of X in group B */
#define DOXYGEN_EXAMPLE_GROUP_B_Y 0x0001 /**< Description of Y in group B */
/** @} */
/** @} */
#endif