measur-tools-suite 1.0.11-beta.98 → 1.0.11-beta.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CONTRIBUTING.md CHANGED
@@ -58,9 +58,13 @@ Use Conventional Commits to structure your commit messages. This helps maintain
58
58
  - [How to Format Code](#how-to-format-code)
59
59
  - [Best Practices](#best-practices)
60
60
  - [Documentation](#documentation)
61
- - [Common Doxygen Tags](#common-doxygen-tags)
62
- - [How to Generate Doxygen Documentation](#how-to-generate-doxygen-documentation)
61
+ - [Doxygen Commands](#doxygen-commands)
62
+ - [Doxygen Aliases](#doxygen-aliases)
63
63
  - [Documenting Code](#documenting-code)
64
+ - [Math](#math)
65
+ - [Units](#units)
66
+ - [Formulas](#formulas)
67
+ - [Symbols](#symbols)
64
68
  - [Files](#files-1)
65
69
  - [Namespaces](#namespaces-2)
66
70
  - [Classes \& Structs](#classes--structs)
@@ -68,9 +72,8 @@ Use Conventional Commits to structure your commit messages. This helps maintain
68
72
  - [Member Variables](#member-variables-1)
69
73
  - [Constants](#constants)
70
74
  - [Enums](#enums)
71
- - [Formulas](#formulas)
72
- - [Units](#units)
73
- - [Modules](#modules)
75
+ - [Groups](#groups)
76
+ - [Generating Doxygen Documentation](#generating-doxygen-documentation)
74
77
  - [Conventional Commits](#conventional-commits)
75
78
  - [Commit Format](#commit-format)
76
79
  - [Commit Types](#commit-types)
@@ -698,7 +701,7 @@ If you have questions about the formatting rules or need help configuring your e
698
701
 
699
702
  # Documentation
700
703
 
701
- This project uses [Doxygen](https://www.doxygen.nl/) to generate documentation from annotated source code. Doxygen comments are used to describe the purpose, behavior, and usage of classes, functions, and other entities in the codebase. Follow these guidelines to ensure your code is well-documented and easy to understand. Always use `@` for Doxygen commands and tags, as this is the standard convention in this project.
704
+ This project uses [Doxygen](https://www.doxygen.nl/) to generate documentation from annotated source code. Doxygen comments are used to describe the purpose, behavior, and usage of classes, functions, and other entities in the codebase. Follow these guidelines to ensure your code is well-documented and easy to understand. Always use `@` for Doxygen commands.
702
705
 
703
706
  <!-- START mdsplit-ignore -->
704
707
  <a id="documentation-index"></a>
@@ -706,9 +709,13 @@ This project uses [Doxygen](https://www.doxygen.nl/) to generate documentation f
706
709
  <summary><Strong>Index</Strong></summary>
707
710
 
708
711
  - [Documentation](#documentation)
709
- - [Common Doxygen Tags](#common-doxygen-tags)
710
- - [How to Generate Doxygen Documentation](#how-to-generate-doxygen-documentation)
712
+ - [Doxygen Commands](#doxygen-commands)
713
+ - [Doxygen Aliases](#doxygen-aliases)
711
714
  - [Documenting Code](#documenting-code)
715
+ - [Math](#math)
716
+ - [Units](#units)
717
+ - [Formulas](#formulas)
718
+ - [Symbols](#symbols)
712
719
  - [Files](#files-1)
713
720
  - [Namespaces](#namespaces-2)
714
721
  - [Classes \& Structs](#classes--structs)
@@ -716,68 +723,53 @@ This project uses [Doxygen](https://www.doxygen.nl/) to generate documentation f
716
723
  - [Member Variables](#member-variables-1)
717
724
  - [Constants](#constants)
718
725
  - [Enums](#enums)
719
- - [Formulas](#formulas)
720
- - [Units](#units)
721
- - [Modules](#modules)
726
+ - [Groups](#groups)
727
+ - [Generating Doxygen Documentation](#generating-doxygen-documentation)
722
728
 
723
729
  </details>
724
730
  <!-- END mdsplit-ignore -->
725
731
 
726
732
  ## Doxygen Commands
727
733
 
728
- All commands start with `@`.
734
+ All commands must start with `@`.
729
735
 
730
- Some commands have one or more arguments. Each argument has a certain range:
731
- - If `<sharp>` braces are used the argument is a single word.
732
- - If `(round)` braces are used the argument extends until the end of the line on which the command was found.
733
- - If `{curly}` braces are used the argument extends until the next paragraph. Paragraphs are delimited by a blank line or by a section indicator.
734
-
735
- Commands:
736
+ Useful Commands:
736
737
  - `@file <name>`
737
- - `@authors { list of authors }`
738
- - `@ingroup (<group-name>)`
739
- - `@defgroup <name> (group title)`
738
+ - `@authors <authors>`
739
+ - `@ingroup <group-name>`
740
+ - `@defgroup <name> <group-title>`
740
741
  - `@namespace <name>`
741
742
  - `@class <name>`
742
743
  - `@struct <name>`
743
744
  - `@enum <name>`
744
- - `@brief { brief description }`
745
- - `@details { detailed description }`
746
- - `@param[<dir>] <parameter-name> { parameter description }`
747
- - `@tparam <template-parameter-name> { description }`
748
- - `@return { description of the return value }`
749
- - `@throws <exception-object> { exception description }`
750
- - `@note { text }`
751
- - `@bug { bug description }`
752
- - `@see { references }`
753
- - `@def <name>`
754
- - `@copyright { copyright description }`
745
+ - `@brief <brief description>`
746
+ - `@details <detailed description>`
747
+ - `@param[<direction>] <parameter-name> <parameter-description>`
748
+ - `@tparam <template-parameter-name> <description>`
749
+ - `@return <description>`
750
+ - `@throws <exception-object> <description>`
751
+ - `@note <text>`
752
+ - `@bug <description>`
753
+ - `@see <reference>`
754
+ - `@copyright <text>`
755
+ - `@cite <reference>`
756
+ - `@ref <reference> <display-text>`
755
757
 
756
758
  <!-- START mdsplit-ignore -->
757
759
  **[Return to Index](#documentation-index)**
758
760
  <!-- END mdsplit-ignore -->
759
761
 
760
- ## Custom Commands
762
+ ## Doxygen Aliases
761
763
 
764
+ The following Doxygen aliases are defined in the `Doxyfile` to simplify common documentation tasks:
762
765
  - `@math{<math expression>}`
763
- - `@unit{<unit expression>}`
766
+ - `@unitr{<unit expression>}`
767
+ - `@unitb{<unit expression>}`
768
+ - `@unitp{<unit expression>}`
764
769
  - `@formula{<label>; <equation>}`
765
- - `symbol{<symbol>; <description>}`
766
-
767
- <!-- START mdsplit-ignore -->
768
- **[Return to Index](#documentation-index)**
769
- <!-- END mdsplit-ignore -->
770
-
771
- ## Generating Doxygen Documentation
772
-
773
- 1. Ensure [Doxygen](https://www.doxygen.nl/) is installed on your system.
774
- 2. From the project root, run:
775
- ```bash
776
- doxygen Doxyfile
777
- ```
778
- 3. The generated HTML and/or LaTeX documentation will appear in the output directory specified in your `Doxyfile`.
779
-
780
- For more details on configuring or customizing Doxygen output, see the official [Doxygen manual](https://www.doxygen.nl/manual/index.html) or review the `Doxyfile` in the project root.
770
+ - `@symtable`
771
+ - `@symrow{<symbol>; <description>; <unit expression>}`
772
+ - `@endsymtable`
781
773
 
782
774
  <!-- START mdsplit-ignore -->
783
775
  **[Return to Index](#documentation-index)**
@@ -809,13 +801,13 @@ Use the `@math{<math expression>}` command to to write LaTeX-style mathematical
809
801
 
810
802
  ### Units
811
803
 
812
- Use the `@unit{<unit expression>}` command to document units. The `@unit{}` command uses the siunitx package to format units in LaTeX.
804
+ Use the `@unitb{<unit expression>}` command to document units. The `@unitb{}` command uses the siunitx package to format units in LaTeX style and encloses them in brackets.
813
805
 
814
806
  #### Example
815
807
 
816
808
  ```cpp
817
809
  /**
818
- * The speed of light in water is often denoted as @math{C_w} and is approximately 2.25 @unit{\meter\per\second}.
810
+ * The speed of light in water is often denoted as @math{C_w} and is approximately 2.25 @unitb{\meter\per\second}.
819
811
  */
820
812
  ```
821
813
 
@@ -826,7 +818,7 @@ Use the `@unit{<unit expression>}` command to document units. The `@unit{}` comm
826
818
  ### Formulas
827
819
 
828
820
  Use the `@formula{<label>; <equation>}` command to document formulas. The command takes 2 arguments, separated by `;`:
829
- 1. A label for the formula, which can be used to reference the formula in the documentation by using `\eqref{eq:formula-label}`.
821
+ 1. A label for the formula, which can be used to reference the formula in the documentation by using `\eqref{eq:<formula-label>}`.
830
822
  - All labels are automatically prefixed with `eq:` to avoid conflicts.
831
823
  2. The formula itself, written in LaTeX syntax.
832
824
 
@@ -849,9 +841,10 @@ Use the `@formula{<label>; <equation>}` command to document formulas. The comman
849
841
 
850
842
  ### Symbols
851
843
 
852
- Use the `symbol{<symbol>; <description>}` command to document mathematical symbols. This command takes two arguments, separated by `;`:
844
+ Use the `@symtable` and `@endsymtable` commands to create a table of symbols used in formulas. Each symbol is documented using the `@symrow{<symbol>; <description>; <unit expression>}` command, which takes three arguments, separated by `;`:
853
845
  1. The symbol itself, written in LaTeX syntax.
854
846
  2. A description of the symbol.
847
+ 3. The unit of the symbol, written in LaTeX syntax and formatted using the siunitx package.
855
848
 
856
849
  #### Example
857
850
 
@@ -860,9 +853,11 @@ Use the `symbol{<symbol>; <description>}` command to document mathematical symbo
860
853
  * The area of a circle can be computed using the formula:
861
854
  * @formula{circle-area; A = \pi r^2}
862
855
  * where:
863
- * - @symbol{A; is the area of the circle}
864
- * - @symbol{\pi; is the mathematical constant pi}
865
- * - @symbol{r; is the radius of the circle}
856
+ * @symtable
857
+ * @symrow{A; is the area of the circle; \meter\squared}
858
+ * @symrow{\pi; is the mathematical constant pi; 1}
859
+ * @symrow{r; is the radius of the circle; \meter}
860
+ * @endsymtable
866
861
  */
867
862
  ```
868
863
 
@@ -874,25 +869,27 @@ Use the `symbol{<symbol>; <description>}` command to document mathematical symbo
874
869
 
875
870
  Use a **Doxygen block** at the very top of each header file to document the file's purpose, authors, and any relevant notes.
876
871
 
877
- #### Required tags
878
-
879
- `@file`, `@authors`, `@ingroup`, `@brief`
872
+ #### Relevant commands
880
873
 
881
- #### Optional tags
882
-
883
- `@details`, `@note`, `@bug`, `@see`, `@copyright`
874
+ - `@ingroup`
875
+ - `@file`
876
+ - `@authors`
877
+ - `@brief`
878
+ - `@details`
879
+ - `@note`
880
+ - `@see`
881
+ - `@copyright`
884
882
 
885
883
  #### Example
886
884
 
887
885
  ```cpp
888
886
  /**
887
+ * @ingroup geometry
889
888
  * @file polygon.h
890
889
  * @authors Alice Brown, Carlos Diaz
891
- * @ingroup geometry
892
890
  * @brief Defines the Polygon class for representing simple 2-D polygons.
893
891
  * @details This file contains the Polygon class, which provides methods for adding vertices, computing area, and checking point containment.
894
892
  * @note The Polygon class assumes vertices are provided in counter-clockwise order.
895
- * @bug Self-intersection checks are not implemented.
896
893
  * @see https://en.wikipedia.org/wiki/Polygon
897
894
  * @copyright 2025 Geometry Toolkit
898
895
  */
@@ -906,20 +903,21 @@ Use a **Doxygen block** at the very top of each header file to document the file
906
903
 
907
904
  Use a **Doxygen block** above each namespace declaration in header files to document the namespace's purpose and contents.
908
905
 
909
- #### Required tags
910
-
911
- `@namespace`, `@ingroup`, `@brief`
906
+ #### Relevant commands
912
907
 
913
- #### Optional tags
914
-
915
- `@details`, `@note`, `@see`
908
+ - `@ingroup`
909
+ - `@namespace`
910
+ - `@brief`
911
+ - `@details`
912
+ - `@note`
913
+ - `@see`
916
914
 
917
915
  #### Example
918
916
 
919
917
  ```cpp
920
918
  /**
921
- * @namespace constants
922
919
  * @ingroup math
920
+ * @namespace constants
923
921
  * @brief Defines mathematical constants used throughout the project.
924
922
  */
925
923
  namespace constants {}
@@ -933,20 +931,24 @@ namespace constants {}
933
931
 
934
932
  Use a **Doxygen block** above each class or struct declaration in header files to document its purpose, behavior, and any important details. This applies to both classes and structs.
935
933
 
936
- #### Required tags
934
+ #### Relevant commands
937
935
 
938
- `@class` **or** `@struct`, `@ingroup`, `@brief`
939
-
940
- #### Optional tags
941
-
942
- `@details`, `@tparam`, `@note`, `@bug`, `@see`
936
+ - `@ingroup`
937
+ - `@class`
938
+ - `@struct`
939
+ - `@brief`
940
+ - `@details`
941
+ - `@tparam`
942
+ - `@note`
943
+ - `@bug`
944
+ - `@see`
943
945
 
944
946
  #### Example
945
947
 
946
948
  ```cpp
947
949
  /**
948
- * @struct Point2
949
950
  * @ingroup geometry
951
+ * @struct Point2
950
952
  * @brief Lightweight 2-D point with double precision.
951
953
  */
952
954
  struct Point2 {
@@ -955,8 +957,8 @@ struct Point2 {
955
957
  };
956
958
 
957
959
  /**
958
- * @class Polygon
959
960
  * @ingroup geometry
961
+ * @class Polygon
960
962
  * @brief Simple 2-D polygon representation.
961
963
  * @details Stores vertices in counter-clockwise order.
962
964
  * @note Capacity is fixed at construction.
@@ -984,9 +986,12 @@ public:
984
986
  * @details Uses the Shoelace formula to compute the area:
985
987
  * @formula{polygon-area; A = \frac{1}{2} \sum_{i=1}^{n} (x_i y_{i+1} - x_{i+1} y_i)}
986
988
  * where:
987
- * - @symbol{A; is the signed area}
988
- * - @symbol{x_i \& y_i; are the coordinates of the i-th vertex}
989
- * - @symbol{n; is the number of vertices}
989
+ * @symtable
990
+ * @symrow{A; is the signed area of the polygon; \meter\squared}
991
+ * @symrow{n; is the number of vertices; 1}
992
+ * @symrow{x_i, y_i; are the coordinates of vertex i; \meter}
993
+ * @symrow{x_{n+1}, y_{n+1}; are the coordinates of vertex 1 (wrap-around); \meter}
994
+ * @endsymtable
990
995
  * @note The area is positive if vertices are in counter-clockwise order.
991
996
  * @return The signed area of the polygon.
992
997
  */
@@ -1005,13 +1010,17 @@ private:
1005
1010
 
1006
1011
  Use a **Doxygen block** above each public function or method declaration in header files. This applies to both free functions and member functions of classes or structs.
1007
1012
 
1008
- #### Required tags
1009
-
1010
- `@brief`, `@param[in]` **or** `param[out]` **or** `param[in,out]`, `@return` (if applicable)
1013
+ #### Relevant commands
1011
1014
 
1012
- #### Optional tags
1013
-
1014
- `@details`, `@tparam`, `@throws`, `@note`, `@bug`, `@see`
1015
+ - `@brief`
1016
+ - `@param[in]` **or** `param[out]` **or** `param[in,out]`
1017
+ - `@return`
1018
+ - `@details`
1019
+ - `@tparam`
1020
+ - `@throws`
1021
+ - `@note`
1022
+ - `@bug`
1023
+ - `@see`
1015
1024
 
1016
1025
  #### Example
1017
1026
 
@@ -1050,7 +1059,7 @@ Use inline comments with `///<` to document constants and their purpose.
1050
1059
  #### Example
1051
1060
 
1052
1061
  ```cpp
1053
- constexpr double kPi = 3.141592653589793; ///< Circle ratio @unit{radians}.
1062
+ constexpr double kPi = 3.141592653589793; ///< Circle ratio @unitb{radians}.
1054
1063
  inline constexpr Point2 kOrigin {0.0, 0.0}; ///< Reference point (0,0).
1055
1064
  ```
1056
1065
 
@@ -1062,20 +1071,22 @@ inline constexpr Point2 kOrigin {0.0, 0.0}; ///< Reference point (0,0).
1062
1071
 
1063
1072
  Use a **Doxygen block** above each enum declaration in header files to document the enum type and its enumerators. Each enumerator should have an inline comment describing its purpose.
1064
1073
 
1065
- #### Required tags
1066
-
1067
- `@enum`, `@ingroup`, `@brief`
1074
+ #### Relevant commands
1068
1075
 
1069
- #### Optional tags
1070
-
1071
- `@details`, `@note`, `@bug`, `@see`
1076
+ - `@ingroup`
1077
+ - `@enum`
1078
+ - `@brief`
1079
+ - `@details`
1080
+ - `@note`
1081
+ - `@bug`
1082
+ - `@see`
1072
1083
 
1073
1084
  #### Example
1074
1085
 
1075
1086
  ```cpp
1076
1087
  /**
1077
- * @enum Axis
1078
1088
  * @ingroup geometry
1089
+ * @enum Axis
1079
1090
  * @brief Principal 3-D axes.
1080
1091
  */
1081
1092
  enum class Axis {
@@ -1093,21 +1104,23 @@ enum class Axis {
1093
1104
 
1094
1105
  Use **Doxygen groups** to organize related namespaces, classes, and functions into logical modules.
1095
1106
 
1096
- Place a **Doxygen block** in a central location (e.g., `mainpage.dox`) to define the group and provide an overview. Each related code element should reference the group using the `@ingroup` command in its own documentation block.
1097
-
1098
- #### Required tags
1099
-
1100
- `@defgroup`, `@brief`
1107
+ Large groups must be defined in their own file (e.g., `math.dox`, `geometry.dox`) to avoid cluttering header files. These files should be placed in the `docs/` directory or one of its subdirectories.
1101
1108
 
1102
- #### Optional tags
1109
+ #### Relevant commands
1103
1110
 
1104
- `@details`, `@note`, `@see`
1111
+ - `@defgroup`
1112
+ - `ingroup`
1113
+ - `@brief`
1114
+ - `@details`
1115
+ - `@copydoc`
1116
+ - `@see`
1105
1117
 
1106
1118
  #### Example
1107
1119
 
1108
1120
  ```cpp
1109
1121
  /**
1110
1122
  * @defgroup geometry Geometry
1123
+ * @ingroup math
1111
1124
  * @brief Geometry module for 2D and 3D shapes.
1112
1125
  */
1113
1126
  ```
@@ -1116,6 +1129,24 @@ Place a **Doxygen block** in a central location (e.g., `mainpage.dox`) to define
1116
1129
  **[Return to Index](#documentation-index)**
1117
1130
  <!-- END mdsplit-ignore -->
1118
1131
 
1132
+ <!-- START mdsplit-ignore -->
1133
+ ## Generating Doxygen Documentation
1134
+
1135
+ Use the `Doxyfile` to configure Doxygen settings like input/output directories, file patterns, and more.
1136
+
1137
+ Use the `DoxygenLayout.xml` file to customize the layout of the generated documentation.
1138
+
1139
+ To generate the documentation, follow these steps:
1140
+ 1. Ensure [Doxygen](https://www.doxygen.nl/) is installed.
1141
+ 2. From the project root, run:
1142
+ ```bash
1143
+ doxygen Doxyfile
1144
+ ```
1145
+ 3. The generated HTML and/or LaTeX documentation will appear in the output directory specified in the `Doxyfile`.
1146
+
1147
+ **[Return to Index](#documentation-index)**
1148
+ <!-- END mdsplit-ignore -->
1149
+
1119
1150
  # Conventional Commits
1120
1151
 
1121
1152
  This project follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification for commit messages to ensure clarity, consistency, and automation in version control. This helps in generating changelogs, automating releases, and improving collaboration among contributors.