From 24af110fb83ea7f1f9f1676447fd70fa2841064b Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 11 Mar 2020 13:04:34 +0100 Subject: [PATCH] Most of the old MD documentation files removed --- docs/DESIGN.md | 8 +- docs/INSTALL.md | 157 ------------------ docs/README.md | 115 ------------- docs/_static/img/{design.png => concepts.png} | Bin docs/{ => _static/img}/downcast_1.png | Bin docs/{ => _static/img}/downcast_2.png | Bin docs/design.png | Bin 27339 -> 0 bytes docs/design.rst | 16 ++ docs/framework/basic_concepts.rst | 2 +- docs/nomnoml.md | 46 ----- docs/units.png | Bin 33552 -> 0 bytes 11 files changed, 21 insertions(+), 323 deletions(-) delete mode 100644 docs/INSTALL.md delete mode 100644 docs/README.md rename docs/_static/img/{design.png => concepts.png} (100%) rename docs/{ => _static/img}/downcast_1.png (100%) rename docs/{ => _static/img}/downcast_2.png (100%) delete mode 100644 docs/design.png delete mode 100644 docs/nomnoml.md delete mode 100644 docs/units.png diff --git a/docs/DESIGN.md b/docs/DESIGN.md index 07318c6c..f50c95fe 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -48,7 +48,7 @@ static_assert(10q_km / 5q_km == 2); The most important concepts in the library are `Unit`, `Dimension`, and `Quantity`: -![Design UML](design.png) +![Design UML](_static/img/concepts.png) `Unit` is a basic building block of the library. Every dimension works with a concrete hierarchy of units. Such hierarchy defines a reference unit and often a few scaled versions of @@ -86,7 +86,7 @@ and `Ratio` is satisfied by any instantiation of `units::ratio`. The `scaled_unit` type is a framework's private type and the user should never instantiate it directly. The public user interface to create units consists of: -![Units UML](units.png) +![Units UML](_static/img/units.png) All below class templates indirectly derive from a `scaled_unit` class template and satisfy a `Unit` concept: @@ -620,7 +620,7 @@ User-friendly, short name printed by the compiler and the debugger. To fix it we have to provide a strong type. As we do not have opaque/strong typedefs in the language we have to use inheritance: -![UML](downcast_1.png) +![UML](_static/img/downcast_1.png) This gives us a nice looking strong type but does not solve the problem of how to switch from a long instantiation of a `derived_dimension_base` class template that was generated by the @@ -636,7 +636,7 @@ specific base class template instantiation. Downcasting facility is provided by injecting two classes into our hierarchy: -![UML](downcast_2.png) +![UML](_static/img/downcast_2.png) In the above example `dim_area` is a downcasting target (child class) and a specific `detail::derived_dimension` class template instantiation is a downcasting source (base class). diff --git a/docs/INSTALL.md b/docs/INSTALL.md deleted file mode 100644 index 658c72ce..00000000 --- a/docs/INSTALL.md +++ /dev/null @@ -1,157 +0,0 @@ -# Installation Guide - -## Repository structure - -This repository contains three independent `cmake`-based projects: -1. `./src` - - header-only project containing whole `mp-units` library -2. `.` - - project used as an entry point for library development (it wraps `./src` project - together with usage examples and tests) - -3. `./test_package` - library installation and Conan package verification - -NOTE: Please note that this repository depends on a git submodule in the `./cmake/common` -subdirectory. - - -## Installation and Reuse - -There are a few different ways of installing/reusing `units` in your project. - -### Conan quick intro - -In case you are not familiar with `conan`, to install it just do: - -```shell -pip3 install -U conan -``` - -After that you might need to add a custom profile in `~/.conan/profile` for your -developnment environment. An example profile can look as follows: - -```text -[settings] -os=Linux -os_build=Linux -arch=x86_64 -arch_build=x86_64 -compiler=gcc -compiler.version=9 -compiler.cppstd=20 -compiler.libcxx=libstdc++11 -build_type=Release - -[options] -[build_requires] - -[env] -CC=/usr/bin/gcc-9 -CXX=/usr/bin/g++-9 -``` - -### Copy - -As `units` is a header-only library you can simply copy `src/include` directory to -your source tree and use it as regular header files. - -NOTE: Until C++20 arrives the library has some 3rd party dependencies that provide -experimental C++20 features. The list of dependencies include: -- `range-v3@ericniebler` (only for gcc-9, gcc-10 uses gcc's concepts implementation) -- `fmt@_` - -All of them are easily to obtain with `conan`. - -NOTE: In case a full library's repository is to be compiled (instead of just copying -`src/include` headers), additionally, the library's unit tests depend on -`Catch2@catchorg` and `linear_algebra@public-conan` conan packages. - -### cmake + conan - -To use `units` as a `cmake` imported library via `cmake` configuration files the following -steps may be done: -- clone the repository with its submodules: - - ```shell - git clone --recurse-submodules https://github.com/mpusz/units.git - ``` - - or in case it is already cloned without submodules initialize, fetch, and checkout them with: - - ```shell - git submodule update --init - ``` - -- add the following remotes to your local `conan` instance - - ```shell - conan remote add conan-mpusz https://api.bintray.com/conan/mpusz/conan-mpusz - ``` - -- add `units` as a dependency to your `conan` file. For example to use testing version of - `0.5.0` of `mp-units` add: - - `conanfile.txt` - - ```ini - [requires] - mp-units/0.5.0@mpusz/testing - ``` - - - `conanfile.py` - - ```python - requires = "mp-units/0.5.0@mpusz/testing" - ``` - -- import `conan` dependencies to top level `CMakeLists.txt` file - - ```cmake - include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) - conan_basic_setup(TARGETS) - ``` - -- link your `cmake` target with units - - ```cmake - target_link_libraries( PUBLIC|PRIVATE|INTERFACE CONAN_PKG::mp-units) - ``` - -- install `conan` dependencies before configuring cmake - - ```shell - cd build - conan install .. -pr -s compiler.cppstd=20 -b=outdated -u - ``` - - -## Full build and unit testing - -In case you would like to build all the code in this repository (with unit tests and examples) -you should use the `CMakeLists.txt` from the parent directory and run Conan with -`CONAN_RUN_TESTS=True`. - -```shell -git clone --recurse-submodules https://github.com/mpusz/units.git -mkdir units/build && cd units/build -conan remote add linear_algebra https://api.bintray.com/conan/twonington/public-conan -conan install .. -pr -s compiler.cppstd=20 -e CONAN_RUN_TESTS=True -b outdated -cmake .. -DCMAKE_BUILD_TYPE=Release -cmake --build . -ctest -VV -``` - - -## Packaging - -To create a `conan` package and test `cmake` installation and `conan` packaging run: - -```shell -conan create . / -pr -s compiler.cppstd=20 -e CONAN_RUN_TESTS=True -b outdated -``` - - -## Upload package to conan server - -```shell -conan upload -r --all mp-units/0.5.0@/ -``` diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 96e41697..00000000 --- a/docs/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# `mp-units` - Documentation - -## How to build? - -1. Install the requirements (Sphinx) with: - - ```shell - pip3 install -r docs/requirements.txt - ``` - -2. Install all dependencies with Conan for a developer's build: - - ```shell - conan install .. -pr -s compiler.cppstd=20 -e CONAN_RUN_TESTS=True -b outdated - ``` - -3. Install Python 3 -4. Build the documentation with a regular CMake build - - -## How to contribute? - -To make any contribution to **mp-units** documentation please fork this repository and open -a Pull Request. - -### Style Guidelines - -This guidelines are just general good practices for the formatting and structure of the whole -documentation and do not pretend to be a stopper for any helpful contribution. Any contribution -that may include relevant information for **mp-units** users will always be welcomed. - -**mp-units** documentation is written in [reStructuredText](http://docutils.sourceforge.net/rst.html) -and follows [reStructuredText Markup Specification](http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html). - -[Quick reStructuredText](http://docutils.sourceforge.net/docs/user/rst/quickref.html) is also -used for reference. - -Any detail not covered by this guidelines will follow the aforementioned rules. - -#### Section titles - -Use section titles in this level of importance: - -```rst -Section Title -============= - -Subsection Title ----------------- - -Subsubsection Title -^^^^^^^^^^^^^^^^^^^ -``` - -#### Text emphasis/highlighting - -- **Bold text** to highlight important text: - - ```rst - **mp-units** is a compile-time enabled Modern C++ library that provides compile-time dimensional - analysis and unit/quantity manipulation. - ``` - -- *Italics* to refer to file names, directory names, and paths. - - ```rst - Create Conan configuration file (either *conanfile.txt* or *conanfile.py*) in your project's - top-level directory... - ``` - -- ``Inline literals`` to refer to the in examples that is not a part of the **mp-units** library: - - ```rst - Let's assume that the user wants to implement an ``avg_speed`` function that will - be calculating the average speed based on provided distance and duration quantities. - ``` - -#### Literal blocks - -Most of the C++ code examples should be provided as literal blocks after double `::` symbol: - -```rst -For this dimension-specific concepts come handy again and with usage of C++20 generic -functions our function can look as simple as:: - - constexpr Velocity auto avg_speed(Length auto d, Time auto t) - { - return d / t; - } -``` - -#### code-blocks - -Use code-blocks for exceptional cases like code samples in other languages or a need -to emphasize specific lines of code: - -```rst -Quantities of the same dimension can be easily added or subtracted with -each other and the result will always be a quantity of the same dimension: - -.. code-block:: - :emphasize-lines: 3-4 - - Length auto dist1 = 2q_m; - Length auto dist2 = 1q_m; - Length auto res1 = dist1 + dist2; - Length auto res2 = dist1 - dist2; -``` - -#### Indentation and line length - -Make sure all indentation is done with spaces. Normally 2 space indentation for bulleted lists -and 4 space indentation for code blocks and RST directives contents: - -Do not leave any unnecessary or trailing spaces. diff --git a/docs/_static/img/design.png b/docs/_static/img/concepts.png similarity index 100% rename from docs/_static/img/design.png rename to docs/_static/img/concepts.png diff --git a/docs/downcast_1.png b/docs/_static/img/downcast_1.png similarity index 100% rename from docs/downcast_1.png rename to docs/_static/img/downcast_1.png diff --git a/docs/downcast_2.png b/docs/_static/img/downcast_2.png similarity index 100% rename from docs/downcast_2.png rename to docs/_static/img/downcast_2.png diff --git a/docs/design.png b/docs/design.png deleted file mode 100644 index 256bbd4af7aeada85fed4fdbfcf5b00d6a8c9698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27339 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 diff --git a/docs/design.rst b/docs/design.rst index 7f75264f..56eaedd3 100644 --- a/docs/design.rst +++ b/docs/design.rst @@ -11,3 +11,19 @@ Design :maxdepth: 2 design/quantity + +The Downcasting Facility +------------------------ + +.. + http://www.nomnoml.com + + [detail::derived_dimension_base>]<:-[dim_area] + + +.. + http://www.nomnoml.com + + [downcast_base>>]<:-[detail::derived_dimension_base>] + [detail::derived_dimension_base>]<:-[downcast_child>>] + [downcast_child>>]<:-[dim_area] diff --git a/docs/framework/basic_concepts.rst b/docs/framework/basic_concepts.rst index 178c7eae..e1f73cb4 100644 --- a/docs/framework/basic_concepts.rst +++ b/docs/framework/basic_concepts.rst @@ -6,7 +6,7 @@ Basic Concepts The most important concepts in the library are `Unit`, `Dimension`, and `Quantity`: -.. image:: /_static/img/design.png +.. image:: /_static/img/concepts.png :align: center .. diff --git a/docs/nomnoml.md b/docs/nomnoml.md deleted file mode 100644 index 878d4ac9..00000000 --- a/docs/nomnoml.md +++ /dev/null @@ -1,46 +0,0 @@ -# nomnoml - -Graphs in the documentation are created with . - -## Concepts - -```text -[Dimension| -[base_dimension]<-[exp] -[derived_dimension]<-[exp] -[exp]<-[derived_dimension] -] - -[Quantity| -[quantity] -] - -[Unit]<-[Dimension] -[Dimension]<-[Quantity] -[Unit]<-[Quantity] -``` - -## Units - -```text -#direction: right - -[scaled_unit]<:-[unit] -[scaled_unit]<:-[named_unit] -[scaled_unit]<:-[named_scaled_unit] -[scaled_unit]<:-[prefixed_unit] -[scaled_unit]<:-[deduced_unit] -``` - -## Downcasting 1 - -```text -[detail::derived_dimension_base>]<:-[dim_area] -``` - -## Downcasting 2 - -```text -[downcast_base>>]<:-[detail::derived_dimension_base>] -[detail::derived_dimension_base>]<:-[downcast_child>>] -[downcast_child>>]<:-[dim_area]``` \ No newline at end of file diff --git a/docs/units.png b/docs/units.png deleted file mode 100644 index 311abd6f1a6ed2ae972c8da5d5fc19df001dce9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33552 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

FFEGpk<$&Y=trouGQZ;>D zbyDJzL+TZSU41WKX$!8`_pOz_9$(JeC8F8%_ICM7DT~f!qMAV#lM`%eeyq5?)5W1z z>R$ZKC%z`4x^`tb(gnib+?6W-J>Pp`CSU4N{FT-n$=~1A&iMCjPLE#1%B8bE|4Xt7_-}VrHMhjcJ1Rh_R%l}Nrs(QBF}tQ* z|G6~Man}<2$e&AJoe-P&^Zwo6A+k%>@Bi{BxAxh&r^)1VqX`#XI<vSKG-q`@E=$ z{1M&ciq*!7Zdt$DeCNx;0W4 z=Po?qw{OSUS$jDiALnyiTK(?J`2{vr=B&wbr83ifnN$j%a=7eDIHOmq6=xVU+a~4L zecN4+f6Iqjm7Hj}_bUBw#ZNzlD>o$5lczza1-_key1(|cb$O7%GuimUr78|gicSqp zA0NH<+HHNlugUPW+SD&guB4uJ~c{H#vftFJ{C|L492T><5aJFbOavdx9s`C~)%)=<8(8vH9l@{z`)??>gTe~DWM4f9C^}4