From b67fc482508c9eb480a166b5046735783528d724 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Fri, 7 Jul 2023 20:43:06 +0200 Subject: [PATCH] docs: URLs added to the "Introduction" chapter --- docs/getting_started/introduction.md | 46 ++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/docs/getting_started/introduction.md b/docs/getting_started/introduction.md index c67950d5..23060c26 100644 --- a/docs/getting_started/introduction.md +++ b/docs/getting_started/introduction.md @@ -26,8 +26,8 @@ errors and debugging as easy and user-friendly as possible. To achieve this goal, several techniques are applied: - usage of C++20 concepts, -- using strong types for framework entities (instead of type aliases), -- usage of expression templates to improve the readability of generated types, +- [using strong types for framework entities (instead of type aliases)](../../users_guide/framework_basics/interface_introduction/#strong-types-instead-of-aliases), +- [usage of expression templates to improve the readability of generated types](../../users_guide/framework_basics/interface_introduction/#expression-templates), - limiting the number of template arguments to the bare minimum. !!! note @@ -40,11 +40,37 @@ To achieve this goal, several techniques are applied: ## Key Features -| Feature | Description | -|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Safety** | - The affine space strong types (`quantity` and `quantity_point`)
- Compile-time checked conversions of quantities and units
- Unique support for many quantities of the same kind
- Type-safe equations on scalar, vector, and tensor quantities and their units
- Value-preserving conversions | -| **Performance** | - All the compile-time logic implemented as immediate (`consteval`) functions
- As fast or even faster than working with fundamental types
- No space size overhead needed to implement high-level abstractions | -| **Great User Experience** | - Optimized for readable compilation errors and great debugging experience
- Efficient and composable way to specify a unit of choice
- Value-based dimension, unit, and quantity equations | -| **Feature Rich** | - Systems of Quantities
- Systems of Units
- Scalar, vector, and tensor quantities
- The affine space
- [Natural units systems](https://en.wikipedia.org/wiki/Natural_units) support
- Strong angular system
- Supports any unit's magnitude (huge, small, floating-point)
- Faster-than-lightspeed constants
- Highly adjustable text-output formatting | -| **Easy to Extend** | - Each entity can be defined with a single line of code
- User can easily extend the systems with custom dimensions, quantities, and units | -| **Low Standardization Cost** | - Small number of predefined entities needed thanks to composability
- No external dependencies (assuming full C++20 support)
- No macros in the user interface (besides portability and standard-compliance issues)
- Possibility to be standardized as a [freestanding](https://en.cppreference.com/w/cpp/freestanding) part of the C++ Standard Library | +| Feature | Description | +|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Safety** | - [The affine space strong types] (`quantity` and `quantity_point`)
- [Compile-time checked conversions of quantities and units]
- [Unique support for many quantities of the same kind]
- [Type-safe equations on scalar, vector, and tensor quantities and their units]
- [Value-preserving conversions] | +| **Performance** | - All the compile-time logic implemented as immediate (`consteval`) functions
- As fast or even faster than working with fundamental types
- No space size overhead needed to implement high-level abstractions | +| **Great User Experience** | - [Optimized for readable compilation errors and great debugging experience]
- [Efficient and composable way to specify a unit of choice]
- [Value-based dimension, unit, and quantity equations] | +| **Feature Rich** | - [Systems of Quantities]
- [Systems of Units]
- [Scalar, vector, and tensor quantities]
- [The affine space]
- [Natural units systems support]
- [Strong angular system]
- [Supports any unit's magnitude (huge, small, floating-point)]
- [Faster-than-lightspeed constants]
- [Highly adjustable text-output formatting] | +| **Easy to Extend** | - [Each entity can be defined with a single line of code]
- [User can easily extend the systems with custom dimensions, quantities, and units] | +| **Low Standardization Cost** | - Small number of predefined entities needed thanks to composability
- No external dependencies (assuming full C++20 support)
- No macros in the user interface (besides portability and standard-compliance issues)
- Possibility to be standardized as a [freestanding] part of the C++ Standard Library | + + +[The affine space strong types]: ../../users_guide/framework_basics/the_affine_space +[Compile-time checked conversions of quantities and units]: ../../users_guide/framework_basics/systems_of_quantities/#converting-between-quantities +[Unique support for many quantities of the same kind]: ../../users_guide/framework_basics/systems_of_quantities/#quantities-of-the-same-kind +[Type-safe equations on scalar, vector, and tensor quantities and their units]: ../../users_guide/framework_basics/quantity_arithmetics +[Value-preserving conversions]: ../../users_guide/framework_basics/value_conversions/#value-preserving-conversions + +[Optimized for readable compilation errors and great debugging experience]: ../../users_guide/framework_basics/simple_and_typed_quantities/#easy-to-understand-compilation-error-messages +[Efficient and composable way to specify a unit of choice]: ../../users_guide/framework_basics/systems_of_units/#units-compose +[Value-based dimension, unit, and quantity equations]: ../../users_guide/framework_basics/interface_introduction/#value-based-equations + +[Systems of Quantities]: ../../users_guide/framework_basics/systems_of_quantities +[Systems of Units]: ../../users_guide/framework_basics/systems_of_units +[Scalar, vector, and tensor quantities]: ../../users_guide/framework_basics/character_of_a_quantity +[The affine space]: ../../users_guide/framework_basics/the_affine_space +[Natural units systems support]: ../../users_guide/defining_systems/natural_units +[Strong angular system]: ../../users_guide/defining_systems/strong_angular_system +[Supports any unit's magnitude (huge, small, floating-point)]: ../../users_guide/framework_basics/systems_of_units/#scaled-units +[Faster-than-lightspeed constants]: ../../users_guide/framework_basics/faster_than_lightspeed_constants +[Highly adjustable text-output formatting]: ../../users_guide/framework_basics/text_output + +[Each entity can be defined with a single line of code]: ../../users_guide/framework_basics/interface_introduction/#new-style-of-definitions +[User can easily extend the systems with custom dimensions, quantities, and units]: ../../users_guide/framework_basics/interface_introduction/#new-style-of-definitions + +[freestanding]: https://en.cppreference.com/w/cpp/freestanding