diff --git a/.clang-format b/.clang-format index 1c27bb27..a9b82591 100644 --- a/.clang-format +++ b/.clang-format @@ -34,7 +34,7 @@ AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: true BinPackArguments: true BinPackParameters: true -BraceWrapping: +BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false @@ -65,7 +65,7 @@ DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] -IncludeCategories: +IncludeCategories: - Regex: '^"' Priority: 1 - Regex: '^<' diff --git a/.ecp-ci.yml b/.ecp-ci.yml deleted file mode 100644 index e8ab599b..00000000 --- a/.ecp-ci.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2022 NWChemEx-Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -stages: - - build -before_script: - - mkdir -p install - - git clone https://github.com/CMakePP/CMakePackagingProject.git - -variables: - NWX_INSTALL_PATH: "$CI_PROJECT_DIR/install" - CMAKE_OPTIONS: "-DCMAKE_PREFIX_PATH=$NWX_INSTALL_PATH/install -DCMAKE_INSTALL_PREFIX=$NWX_INSTALL_PATH/install -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++" - NUM_CORES: "4" - ANL_PROJECT_SERVICE_USER: "nwchemex" - PATH: "$PATH:/home/nwchemex/cmake-3.14.5-Linux-x86_64/bin" - CI_DEBUG_TRACE: "true" - -default_build: - tags: - - ecp-theta - - shell - stage: build - script: - - module load gcc - - cd $CI_PROJECT_DIR/CMakePackagingProject - - cmake $CMAKE_OPTIONS -DBUILD_TESTS=ON -H. -Bbuild - - cd build - - make install - - cd $CI_PROJECT_DIR/$CI_PROJECT_NAME - - cmake $CMAKE_OPTIONS -DBUILD_TESTS=ON -H. -Bbuild - - cd build - - make -j$NUM_CORES - - ctest -VV diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 20209e14..324392cd 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -24,7 +24,7 @@ jobs: check_formatting: uses: NWChemEx/.github/.github/workflows/check_formatting.yaml@master with: - license_config: ".github/.licenserc.yaml" + license_config: ".licenserc.yaml" test_nwx_docs: uses: NWChemEx/.github/.github/workflows/test_nwx_docs.yaml@master diff --git a/.github/.licenserc.yaml b/.licenserc.yaml similarity index 96% rename from .github/.licenserc.yaml rename to .licenserc.yaml index 539feb88..87c2fcca 100644 --- a/.github/.licenserc.yaml +++ b/.licenserc.yaml @@ -23,5 +23,6 @@ header: - LICENSE - docs/requirements.txt - version.txt + - build/ - comment: never \ No newline at end of file + comment: never diff --git a/LICENSE b/LICENSE index 4947287f..f433b1a5 100644 --- a/LICENSE +++ b/LICENSE @@ -174,4 +174,4 @@ incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS \ No newline at end of file + END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md index 6d0ef23f..b48e5c94 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Utilities Repository The C++ standard library as well as the STL are great for providing many of the features one needs to write a code. However, they leave much to be desired. -This library is intended to be our "Boost" in that it's a series of +This library is intended to be our "Boost" in that it's a series of extensions to the standard libraries for functionality we commonly want. At the moment this functionality can be expressed as falling into one of three @@ -33,10 +33,10 @@ sub libraries: - IterTools: Classes designed to make iteration easier. This includes base classes for writing your own iterators as well as classes for - iterating over common situations such as: - - All permutations of a sequence - - All combinations of a sequence -- Mathematician : Math functionality beyond that of the STL including: + iterating over common situations such as: + - All permutations of a sequence + - All combinations of a sequence +- Mathematician : Math functionality beyond that of the STL including: - Binomial coefficients - Multinomial coefficients - TypeTraits : Structs to make meta-template programming easier @@ -57,12 +57,12 @@ cmake -H. -Bbuild -DCMAKE_PREFIX_PATH= \ cd build cmake --build . #May need to run as an admin depending on where you are installing -cmake --build . --target install +cmake --build . --target install ``` -Note that the configure will appear to hang when it gets to Catch2. -This is because it is building Catch2. Building of Catch2 can be +Note that the configure will appear to hang when it gets to Catch2. +This is because it is building Catch2. Building of Catch2 can be avoided by disabling tests (*i.e.*, passing `-DBUILD_TESTS=OFF` to the first invocation of `cmake`) or by providing CMake with an already built version of -Catch2 by passing `-DCatch2_ROOT=/path/to/catch2` to the first invocation of +Catch2 by passing `-DCatch2_ROOT=/path/to/catch2` to the first invocation of `cmake`. diff --git a/docs/README.md b/docs/README.md index 9259985b..5ee91433 100644 --- a/docs/README.md +++ b/docs/README.md @@ -36,4 +36,3 @@ following Python packages (all available in `pip`): - exhale (The thing that turns Doxygen output into ReST) You also will need Doxygen. - diff --git a/docs/source/IntroToCombinatorics.md b/docs/source/IntroToCombinatorics.md index ffd28225..dbdabb2a 100644 --- a/docs/source/IntroToCombinatorics.md +++ b/docs/source/IntroToCombinatorics.md @@ -19,30 +19,30 @@ Introduction To Combinatorics The purpose of this page is to gather some notes and musings regarding combinatorics that hopefully helps other people out as they peruse the functions -and classes in UtililitesEx. This page also contains details pertaining to the +and classes in UtililitesEx. This page also contains details pertaining to the algorithms behind our implementations. Contents -------- - [Combinations From Permutations](#combinations-from-permutations) -- [Indexing Permutations Without Repetition](#indexing-permutations-without-repetition) +- [Indexing Permutations Without Repetition](#indexing-permutations-without-repetition) - [Indexing Permutations With Repetition](#indexing-permutations-with-repetition) Combinations From Permutations ------------------------------ -The STL provides routines `prev_permutation` and `next_permutation` that can -generate each unique permutation of an \f$n\f$ element sequence, \f$S\f$ with a -complexity \f$\mathcal{O}(n)\f$ (which is the same complexity as doing it -with \f$n\f$ nested loops). It does not however provide the corresponding -generators for combinations. Any combination, \f$C\f$, of \f$S\f$ can be -represented by a sequence \f$P\equiv\left[ x_1,x_2,\ldots,x_N\right]\f$ where -\f$x_i=1\f$ (true) if the \f$i\f$-th element of \f$S\f$ is in \f$C\f$ and -\f$x_i=0\f$ (false) otherwise. Hence, we can generate all possible -combinations of \f$n\f$ objects, taken \f$k\f$ at a time, by iterating over all -unique permutations of \f$k\f$ 1s and \f$n-k\f$ 0s. The resulting algorithm -will then scale the same as the STL permutation routines. +The STL provides routines `prev_permutation` and `next_permutation` that can +generate each unique permutation of an \f$n\f$ element sequence, \f$S\f$ with a +complexity \f$\mathcal{O}(n)\f$ (which is the same complexity as doing it +with \f$n\f$ nested loops). It does not however provide the corresponding +generators for combinations. Any combination, \f$C\f$, of \f$S\f$ can be +represented by a sequence \f$P\equiv\left[ x_1,x_2,\ldots,x_N\right]\f$ where +\f$x_i=1\f$ (true) if the \f$i\f$-th element of \f$S\f$ is in \f$C\f$ and +\f$x_i=0\f$ (false) otherwise. Hence, we can generate all possible +combinations of \f$n\f$ objects, taken \f$k\f$ at a time, by iterating over all +unique permutations of \f$k\f$ 1s and \f$n-k\f$ 0s. The resulting algorithm +will then scale the same as the STL permutation routines. 1. Fill a vector, \f$P\f$ with \f$k\f$ 1s followed by \f$n-k\f$ 0s. 2. First combination is the first \f$k\f$ elements @@ -52,27 +52,27 @@ will then scale the same as the STL permutation routines. 4. Fill combination container based off \f$P\f$ - Time: \f$\mathcal{O}(n)\f$ 5. Repeat 3 and 4, \f${n\choose k}-2\f$ more times - - Time: \f$\mathcal{O}(n^k)\f$ + - Time: \f$\mathcal{O}(n^k)\f$ -Now let us consider combinations with repetition. To that end, assume we want -all combinations with repetitions of an \f$n\f$ element sequence \f$S\f$, -such that we take \f$k\f$ elements at a time. As with our analysis of +Now let us consider combinations with repetition. To that end, assume we want +all combinations with repetitions of an \f$n\f$ element sequence \f$S\f$, +such that we take \f$k\f$ elements at a time. As with our analysis of combinations without repeats, for a given combination with repetition, \f$C\f$, we can again define an \f$n\f$ element sequence \f$P\equiv\left[ x_1,x_2, -\ldots,x_N\right]\f$ where \f$x_i\f$ is now the number of times the -\f$i\f$-th element of \f$S\f$ appears in \f$C\f$ (technically a -generalization of above). Of course this again implies the sum of the -\f$x_i\f$s is equal to \f$k\f$; however, now they are not restricted to 0s -and 1s. Hence its not enough to take all permutations of \f$P\f$, like it -was before. This is easily seen by setting \f$x_i=k\f$ and taking all -permutations. The resulting set is the \f$N\f$ combinations that can be -formed by repeating the same element \f$k\f$ times. This neglects say the -combination where the first element appears \f$k-1\f$ times and the second -element appears \f$k\f$ times. In other words, we need to "unclump" the -\f$x_i\f$s and then take permutations. To this end we can instead think of -\f$P\f$ as being \f$x_1\f$ 1s, a separator, \f$x_2\f$ 1s, a separator, ..., -and then \f$x_n\f$ 1s. Accounting for the separators this gives us a -permutation of \f$k\f$ 1s and \f$n-1\f$ separators. The set of all possible +\ldots,x_N\right]\f$ where \f$x_i\f$ is now the number of times the +\f$i\f$-th element of \f$S\f$ appears in \f$C\f$ (technically a +generalization of above). Of course this again implies the sum of the +\f$x_i\f$s is equal to \f$k\f$; however, now they are not restricted to 0s +and 1s. Hence its not enough to take all permutations of \f$P\f$, like it +was before. This is easily seen by setting \f$x_i=k\f$ and taking all +permutations. The resulting set is the \f$N\f$ combinations that can be +formed by repeating the same element \f$k\f$ times. This neglects say the +combination where the first element appears \f$k-1\f$ times and the second +element appears \f$k\f$ times. In other words, we need to "unclump" the +\f$x_i\f$s and then take permutations. To this end we can instead think of +\f$P\f$ as being \f$x_1\f$ 1s, a separator, \f$x_2\f$ 1s, a separator, ..., +and then \f$x_n\f$ 1s. Accounting for the separators this gives us a +permutation of \f$k\f$ 1s and \f$n-1\f$ separators. The set of all possible unique permutations of \f$k\f$ 1s and \f$n-1\f$ separators (say 0s) then can be used to generate the set of combinations with repetition. @@ -83,18 +83,18 @@ used to generate the set of combinations with repetition. 3. Next permutation of \f$P\f$ - Time \f$\mathcal{O}(n+k)\f$ 4. Count 1s and form combinations - - Time \f$\mathcal{O}(n+k)\f$ + - Time \f$\mathcal{O}(n+k)\f$ 5. Repeat 3 and 4, \f${n+k-1\choose k}-2\f$ more times - - Time: \f$\mathcal{O}(n^k+k^k)\f$ + - Time: \f$\mathcal{O}(n^k+k^k)\f$ Indexing Permutations Without Repetition ---------------------------------------- -Given a sequence of length \f$N\f$ there are \f$N!\f$ permutations. Given a -means of ordering the permutations (here assumed to be lexicographical order), -the goal is to be able to generate the \f$i^\text{th}\f$ permutation on -demand (*i.e.* without permuting \f$i\f$-1 times). To this end let us denote -the elements of our input sequence as the numbers 0 to \f$N\f$-1. We can +Given a sequence of length \f$N\f$ there are \f$N!\f$ permutations. Given a +means of ordering the permutations (here assumed to be lexicographical order), +the goal is to be able to generate the \f$i^\text{th}\f$ permutation on +demand (*i.e.* without permuting \f$i\f$-1 times). To this end let us denote +the elements of our input sequence as the numbers 0 to \f$N\f$-1. We can immediately write down all permutations: ``` 0,1,2,3,...,(N-2),(N-1) @@ -102,33 +102,33 @@ immediately write down all permutations: ... (N-1),(N-2),...,3,2,1,0 ``` -Remember these are sequences and not numbers. We need a unique means of mapping +Remember these are sequences and not numbers. We need a unique means of mapping each of these sequences to a single unique number. It should be clear that simply removing the commas is not sufficient (for example the sequences 0,1,2,3,...11,12,13,... and 0,12,3,...11,1,2,13... would both be identical). Progress can be made by making the \f$i^\text{th}\f$ digit representative of which element was chosen. To this end we aim to devise a number system in which -the \f$i^\text{th}\f$ digit from the left tells us which element was the +the \f$i^\text{th}\f$ digit from the left tells us which element was the \f$i^\text{th}\f$ chosen element of the permutation. Mapping of a number in -this number system to decimal can then be accomplished by the usual -conversions (the value in decimal, \f$D\f$, is given by +this number system to decimal can then be accomplished by the usual +conversions (the value in decimal, \f$D\f$, is given by \f[ D=\sum_{i=0}^N x_ib_i, \f] where \f$x_i\f$ is the \f$i^\text{th}\f$ digit and \f$b_i\f$ is the value of the -\f$i^\text{th}\f$ place). - -To establish our number system we start from the left. There are \f$N\f$ -choices for the value of the zeroth digit. Hence we can encode its value as -a single number in base \f$N\f$. Once we've picked the zeroth digit we have -\f$N\f$-1 choices for the first digit and can thus encode its value in base -\f$N\f$-1 (*N.B.* this means value of the \f$i^\text{th}\f$ digit is always -determined with respect to elements remaining in the sequence and that the +\f$i^\text{th}\f$ place). + +To establish our number system we start from the left. There are \f$N\f$ +choices for the value of the zeroth digit. Hence we can encode its value as +a single number in base \f$N\f$. Once we've picked the zeroth digit we have +\f$N\f$-1 choices for the first digit and can thus encode its value in base +\f$N\f$-1 (*N.B.* this means value of the \f$i^\text{th}\f$ digit is always +determined with respect to elements remaining in the sequence and that the elements are renumbered after each choice, but not reordered). This leads to the general observation that the \f$i^\text{th}\f$ digit of the number can -be expressed in base \f$N-i\f$. Now counting from the right this means there -is only 1 choice for the zeroth digit (0), two choices for first digit (0, 1), -three choices for the second digit (0, 1, 2) and so on. Consequentially, +be expressed in base \f$N-i\f$. Now counting from the right this means there +is only 1 choice for the zeroth digit (0), two choices for first digit (0, 1), +three choices for the second digit (0, 1, 2) and so on. Consequentially, counting in our number system we get: ``` 0000 @@ -147,68 +147,68 @@ counting in our number system we get: ... ``` What we see is that in order to increment the \f$i^\text{th}\f$ digit requires -\f$i!\f$ increments. Hence the \f$i^\text{th}\f$ digit is in the \f$i!\f$ -place (by analogy to the ones, tens, hundreds, *etc.* places). This is the +\f$i!\f$ increments. Hence the \f$i^\text{th}\f$ digit is in the \f$i!\f$ +place (by analogy to the ones, tens, hundreds, *etc.* places). This is the definition of the factorial number system (FNS). -The FNS makes it straightforward to index permutations of length \f$N\f$ when +The FNS makes it straightforward to index permutations of length \f$N\f$ when all values in the sequence are unique. One converts the permutation to its FNS -value, then maps that value to decimal. To convert to the FNS one takes the -decimal number and divides off 1; the remainder is the zeroth digit (from +value, then maps that value to decimal. To convert to the FNS one takes the +decimal number and divides off 1; the remainder is the zeroth digit (from the right). Next, divide 2 off the integer quotient of the previous division; the remainder is the first digit. Then, divide 3 off the integer quotient -of the previous division, the remainder is the second digit and so on and so -forth. Hence the \f$i^\text{th}\f$ digit is the remainder obtained by dividing +of the previous division, the remainder is the second digit and so on and so +forth. Hence the \f$i^\text{th}\f$ digit is the remainder obtained by dividing the integer quotient of the (\f$i\f$-1)\f$^\text{th}\f$ step by \f$i\f$+1. Indexing Permutations With Repetition ------------------------------------- -The internet is all too quick to tell you how to index permutations without -repeats, but information on how to do it when there are repeats is not so +The internet is all too quick to tell you how to index permutations without +repeats, but information on how to do it when there are repeats is not so forthcoming. This section devises such a scheme. As with indexing permutations with all unique elements we again assume we wish to generate the permutations in lexicographical order. -Given a sequence of length \f$N\f$, where there are \f$M\f$ unique elements, -the \f$i^\text{th}\f$ one appearing \f$m_i\f$ times, there are -\f[ +Given a sequence of length \f$N\f$, where there are \f$M\f$ unique elements, +the \f$i^\text{th}\f$ one appearing \f$m_i\f$ times, there are +\f[ {{N} \choose {m_0, m_1, \ldots, m_M}} = \frac{N!}{\prod_{i=1}^Mm_i!} \f] unique permutations. Again our purpose is to devise a number system in which -the \f$i^\text{th}\f$ digit tells us which of the \f$N\f$ elements was the +the \f$i^\text{th}\f$ digit tells us which of the \f$N\f$ elements was the \f$i^\text{th}\f$ element chosen from the sequence. -The procedure for establishing the value of the number in this number system is +The procedure for establishing the value of the number in this number system is the same as for the case where we had no repeats aside from the fact that we, by -convention, always pull the first occurrence of a repeated element from the +convention, always pull the first occurrence of a repeated element from the sequence. The result is a number in the FNS; however, not all values less than -\f$N!\f$ will appear when iterating over permutations (when multiple values -in the FNS map to the same permutation we only obtain the smallest value). What +\f$N!\f$ will appear when iterating over permutations (when multiple values +in the FNS map to the same permutation we only obtain the smallest value). What does differ from the case with no repeats is the value of the places, more over the values of the places depends on the permutation. -To derive the values of the places let us assume our permutation is -\f$\lbrace P\rbrace\f$. This sequence is of length \f$N\f$, with the -\f$i^\text{th}\f$ element being denoted \f$P_i\f$. Starting from \f$P_0\f$ we -can assume that by analogy with the no-repeat case it would have taken a -number of permutations equal to the number of permutations of the sequence -\f$\lbrace P_1,\ldots, P_N\rbrace\f$ to increment this place; however, if -\f$P_0\f$ appears more than once in \f$\lbrace P\rbrace\f$ we actually will get -here quicker. This is perhaps clearer with an -example. Consider the permutation \f$\lbrace 3,4,4\rbrace\f$, there are three +To derive the values of the places let us assume our permutation is +\f$\lbrace P\rbrace\f$. This sequence is of length \f$N\f$, with the +\f$i^\text{th}\f$ element being denoted \f$P_i\f$. Starting from \f$P_0\f$ we +can assume that by analogy with the no-repeat case it would have taken a +number of permutations equal to the number of permutations of the sequence +\f$\lbrace P_1,\ldots, P_N\rbrace\f$ to increment this place; however, if +\f$P_0\f$ appears more than once in \f$\lbrace P\rbrace\f$ we actually will get +here quicker. This is perhaps clearer with an +example. Consider the permutation \f$\lbrace 3,4,4\rbrace\f$, there are three unique permutations \f$\lbrace 3,4,4\rbrace\f$, \f$\lbrace 4,3,4 \rbrace\f$, and -\f$\lbrace 4,4,3\rbrace\f$. Respectively these map to \f$000_!\f$, \f$100_!\f$, -and \f$110_!\f$ (the subscript "!" reminds us these are values in the FNS). If -we look at the second two values we conclude that the first digit will change -after \f$\frac{2!}{1!1!}=2\f$ iterations. However, if instead we consider the -first value we (correctly) conclude that it will change after -\f$\frac{2!}{2!}=1\f$ iterations. So where'd we go wrong in deducing the place -value of the first digit in the second two numbers? The \f$2!\f$ ultimately -assumed we'd also have to iterate over the value \f$\lbrace 0,1,0\rbrace\f$; -however mapping this to a permutation shows that this is just -\f$\lbrace 3,4,4\rbrace\f$, a permutation we've already counted. Ultimately, -what we really want is the number of permutations of length \f$N\f$ that start +\f$\lbrace 4,4,3\rbrace\f$. Respectively these map to \f$000_!\f$, \f$100_!\f$, +and \f$110_!\f$ (the subscript "!" reminds us these are values in the FNS). If +we look at the second two values we conclude that the first digit will change +after \f$\frac{2!}{1!1!}=2\f$ iterations. However, if instead we consider the +first value we (correctly) conclude that it will change after +\f$\frac{2!}{2!}=1\f$ iterations. So where'd we go wrong in deducing the place +value of the first digit in the second two numbers? The \f$2!\f$ ultimately +assumed we'd also have to iterate over the value \f$\lbrace 0,1,0\rbrace\f$; +however mapping this to a permutation shows that this is just +\f$\lbrace 3,4,4\rbrace\f$, a permutation we've already counted. Ultimately, +what we really want is the number of permutations of length \f$N\f$ that start with \f$P_0\f$, which is just: \f[ \frac{{{N} \choose {m_0, m_1, \ldots, m_M}}}{N}= @@ -217,9 +217,9 @@ with \f$P_0\f$, which is just: ] The final trick to this scenario is going from decimal back to FNS. For this -we'll need the original sequence in lexicographical order, we'll call it -\f$\lbrace S\rbrace\f$, let us assume that the number in decimal we are -attempting to convert from is given by \f$D\f$. Furthermore let the number of +we'll need the original sequence in lexicographical order, we'll call it +\f$\lbrace S\rbrace\f$, let us assume that the number in decimal we are +attempting to convert from is given by \f$D\f$. Furthermore let the number of permutations that start with \f$S_i\f$ be \f$P(S_i)\f$. Then we can compute the FNS value by: @@ -230,4 +230,4 @@ FNS value by: 5. \f$D \stackrel{?}{\lt} P\f$ - Yes: The current digit is \f$i\f$ - Remove \f$S_i\f$ from \f$S\f$ and return to step 1 - - No: next iteration + - No: next iteration diff --git a/docs/source/about/about.rst b/docs/source/about/about.rst index 717385a5..3e407972 100644 --- a/docs/source/about/about.rst +++ b/docs/source/about/about.rst @@ -16,7 +16,7 @@ About ======== The C++ standard library as well as the STL are great for providing many of the features one needs to write a code. However, they leave much to be desired. -This library is intended to be our "Boost" in that it's a series of +This library is intended to be our "Boost" in that it's a series of extensions to the standard libraries for functionality we commonly want. At the moment this functionality can be expressed as falling into one of three @@ -24,12 +24,12 @@ sub libraries: - IterTools: Classes designed to make iteration easier. This includes base classes for writing your own iterators as well as classes for - iterating over common situations such as: + iterating over common situations such as: - - All permutations of a sequence - - All combinations of a sequence + - All permutations of a sequence + - All combinations of a sequence -- Mathematician: Math functionality beyond that of the STL including: +- Mathematician: Math functionality beyond that of the STL including: - Binomial coefficients - Multinomial coefficients @@ -37,4 +37,3 @@ sub libraries: - TypeTraits: Structs to make meta-template programming easier - Extended type intraspection (*i.e.* determining if a type has a member) - diff --git a/docs/source/conf.py b/docs/source/conf.py index 09095e14..0a88b215 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,13 +24,13 @@ # -- Project information ----------------------------------------------------- -project = u'utilities' -copyright = u'2020, NWChemEx Team' -author = u'NWChemEx Team' +project = "utilities" +copyright = "2020, NWChemEx Team" +author = "NWChemEx Team" # Get the version from version.txt -with open('../../version.txt', 'r') as file: - version = file.read().replace('\n', '') +with open("../../version.txt", "r") as file: + version = file.read().replace("\n", "") # The full version, including alpha/beta/rc tags release = version @@ -48,32 +48,36 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.mathjax', - 'sphinx.ext.githubpages' + "sphinx.ext.autodoc", + "sphinx.ext.doctest", + "sphinx.ext.intersphinx", + "sphinx.ext.todo", + "sphinx.ext.coverage", + "sphinx.ext.mathjax", + "sphinx.ext.githubpages", ] dir_path = os.path.dirname(os.path.realpath(__file__)) doc_path = os.path.dirname(dir_path) root_path = os.path.dirname(doc_path) # Add any paths that contain templates here, relative to this directory. -#templates_path = ['_templates'] +# templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] -source_suffix = '.rst' +source_suffix = ".rst" # The master toctree document. -master_doc = 'index' +master_doc = "index" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = 'en' +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -81,14 +85,14 @@ exclude_patterns = [] # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -99,7 +103,7 @@ # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] +# html_static_path = ['_static'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -114,7 +118,7 @@ # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. -htmlhelp_basename = project + 'doc' +htmlhelp_basename = project + "doc" # -- Options for LaTeX output ------------------------------------------------ @@ -122,15 +126,12 @@ # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. # # 'preamble': '', - # Latex figure (float) alignment # # 'figure_align': 'htbp', @@ -140,16 +141,22 @@ # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, project + '.tex', project + ' Documentation', author, - 'manual'), + ( + master_doc, + project + ".tex", + project + " Documentation", + author, + "manual", + ), ] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [(master_doc, project.lower(), project + ' Documentation', - [author], 1)] +man_pages = [ + (master_doc, project.lower(), project + " Documentation", [author], 1) +] # -- Options for Texinfo output ---------------------------------------------- @@ -157,8 +164,15 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, project, project + ' Documentation', author, project, - 'One line description of project.', 'Miscellaneous'), + ( + master_doc, + project, + project + " Documentation", + author, + project, + "One line description of project.", + "Miscellaneous", + ), ] # -- Extension configuration ------------------------------------------------- @@ -166,7 +180,7 @@ # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} +intersphinx_mapping = {"python": ("https://docs.python.org/3", None)} # -- Options for todo extension ---------------------------------------------- diff --git a/docs/source/installation/building.rst b/docs/source/installation/building.rst index 71ffc061..642654a6 100644 --- a/docs/source/installation/building.rst +++ b/docs/source/installation/building.rst @@ -35,12 +35,12 @@ following will suffice to build: #May need to run as an admin depending on where you are installing Utilities to make install -Note that the configure will appear to hang when it gets to Catch2. +Note that the configure will appear to hang when it gets to Catch2. This is because it is building `Catch2 `_ -testing framework. Building of Catch2 can be +testing framework. Building of Catch2 can be avoided by disabling tests (*i.e.*, passing ``-DBUILD_TESTS=OFF`` to the first invocation of ``cmake``) or by providing CMake with an already built version of -Catch2 by passing ``-DCatch2_ROOT=/path/to/catch2`` to the first invocation of +Catch2 by passing ``-DCatch2_ROOT=/path/to/catch2`` to the first invocation of ``cmake``. For finer-grained control over the build we direct the reader to the more @@ -62,4 +62,3 @@ installed with ``pip``): You can build the documentation with ``make html`` within ``docs`` directory. You can view the documentation by opening `docs/build/html/index.html` on your browser. - diff --git a/include/utilities/README.md b/include/utilities/README.md index bd1f0f8b..336ca239 100644 --- a/include/utilities/README.md +++ b/include/utilities/README.md @@ -20,12 +20,12 @@ Utilities Source Root The current directory is the root of the Utilities source tree. The source itself is separated into four subtypes for the moment: -- Containers These are classes that implement various non-standard container +- Containers These are classes that implement various non-standard container types. -- IterTools These are classes that aid in condensing multiple loops or +- IterTools These are classes that aid in condensing multiple loops or complicated looping patterns into a single, simple foreach loop. -- Mathematician This directory contains things an omnipotent mathematician -would know (and isn't in the STL or handled by TAMM). This includes things +- Mathematician This directory contains things an omnipotent mathematician +would know (and isn't in the STL or handled by TAMM). This includes things like factorials, binomial coefficients, *etc.* -- TypeTraits These are various template structures meant to facilitate -meta-template programming. +- TypeTraits These are various template structures meant to facilitate +meta-template programming. diff --git a/include/utilities/dsl/add.hpp b/include/utilities/dsl/add.hpp index e3e57151..62350d21 100644 --- a/include/utilities/dsl/add.hpp +++ b/include/utilities/dsl/add.hpp @@ -43,4 +43,4 @@ class Add : public BinaryOp, LHSType, RHSType> { using op_type::op_type; }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/binary_op.hpp b/include/utilities/dsl/binary_op.hpp index 1c02f243..5e0511f1 100644 --- a/include/utilities/dsl/binary_op.hpp +++ b/include/utilities/dsl/binary_op.hpp @@ -205,4 +205,4 @@ bool BinaryOp::operator==( } } -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/detail_/leaf_holder.hpp b/include/utilities/dsl/detail_/leaf_holder.hpp index 0a0d27f7..09785dc3 100644 --- a/include/utilities/dsl/detail_/leaf_holder.hpp +++ b/include/utilities/dsl/detail_/leaf_holder.hpp @@ -88,11 +88,11 @@ class LeafHolderBase { /// Instances of LeafHolderBase will always be created by derived class ///@{ - LeafHolderBase() = default; - LeafHolderBase(const LeafHolderBase&) = default; - LeafHolderBase(LeafHolderBase&&) = delete; + LeafHolderBase() = default; + LeafHolderBase(const LeafHolderBase&) = default; + LeafHolderBase(LeafHolderBase&&) = delete; LeafHolderBase& operator=(const LeafHolderBase&) = delete; - LeafHolderBase& operator=(LeafHolderBase&&) = delete; + LeafHolderBase& operator=(LeafHolderBase&&) = delete; ///@} /// Derived class overrides to implement clone. See clone description. @@ -308,4 +308,4 @@ class QualifiedLeafHolder : public LeafHolder> { /// The actual object holder_type m_value_; }; -} // namespace utilities::dsl::detail_ \ No newline at end of file +} // namespace utilities::dsl::detail_ diff --git a/include/utilities/dsl/divide.hpp b/include/utilities/dsl/divide.hpp index 224bd997..ce3d821b 100644 --- a/include/utilities/dsl/divide.hpp +++ b/include/utilities/dsl/divide.hpp @@ -43,4 +43,4 @@ class Divide : public BinaryOp, LHSType, RHSType> { using op_type::op_type; }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/dsl.hpp b/include/utilities/dsl/dsl.hpp index b97ed2a3..caaea07a 100644 --- a/include/utilities/dsl/dsl.hpp +++ b/include/utilities/dsl/dsl.hpp @@ -22,4 +22,4 @@ #include #include #include -#include \ No newline at end of file +#include diff --git a/include/utilities/dsl/dsl_fwd.hpp b/include/utilities/dsl/dsl_fwd.hpp index 84d98343..6f349ab1 100644 --- a/include/utilities/dsl/dsl_fwd.hpp +++ b/include/utilities/dsl/dsl_fwd.hpp @@ -49,4 +49,4 @@ class Term; template class TermTraits; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/dsl_traits.hpp b/include/utilities/dsl/dsl_traits.hpp index daaeb5d1..79782ae6 100644 --- a/include/utilities/dsl/dsl_traits.hpp +++ b/include/utilities/dsl/dsl_traits.hpp @@ -29,4 +29,4 @@ struct IsTerm> : public std::true_type {}; template constexpr bool is_term_v = IsTerm::value; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/function_call.hpp b/include/utilities/dsl/function_call.hpp index 1f7d48d0..7f0cf4e3 100644 --- a/include/utilities/dsl/function_call.hpp +++ b/include/utilities/dsl/function_call.hpp @@ -44,4 +44,4 @@ class FunctionCall : public NAryOp, Args...> { using op_type::op_type; }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/multiply.hpp b/include/utilities/dsl/multiply.hpp index 257a3cdd..4f985b80 100644 --- a/include/utilities/dsl/multiply.hpp +++ b/include/utilities/dsl/multiply.hpp @@ -43,4 +43,4 @@ class Multiply : public BinaryOp, LHSType, RHSType> { using op_type::op_type; }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/n_ary_op.hpp b/include/utilities/dsl/n_ary_op.hpp index e7ec6137..8f1f22a7 100644 --- a/include/utilities/dsl/n_ary_op.hpp +++ b/include/utilities/dsl/n_ary_op.hpp @@ -199,4 +199,4 @@ bool NAryOp::operator==( } } -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/subtract.hpp b/include/utilities/dsl/subtract.hpp index 95ff79d9..9b06be9a 100644 --- a/include/utilities/dsl/subtract.hpp +++ b/include/utilities/dsl/subtract.hpp @@ -43,4 +43,4 @@ class Subtract : public BinaryOp, LHSType, RHSType> { using op_type::op_type; }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/term.hpp b/include/utilities/dsl/term.hpp index 6b3014d9..9f71f991 100644 --- a/include/utilities/dsl/term.hpp +++ b/include/utilities/dsl/term.hpp @@ -121,4 +121,4 @@ class Term { } }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/dsl/term_traits.hpp b/include/utilities/dsl/term_traits.hpp index 4e47e467..5655caed 100644 --- a/include/utilities/dsl/term_traits.hpp +++ b/include/utilities/dsl/term_traits.hpp @@ -143,4 +143,4 @@ class TermTraits { } }; -} // namespace utilities::dsl \ No newline at end of file +} // namespace utilities::dsl diff --git a/include/utilities/iter_tools.hpp b/include/utilities/iter_tools.hpp index f3c061a8..4fce2c76 100644 --- a/include/utilities/iter_tools.hpp +++ b/include/utilities/iter_tools.hpp @@ -24,6 +24,6 @@ * in any file within the Utilities project. This is to provide the * client a means of avoiding unnecessary includes. */ -//#include +// #include #include #include diff --git a/include/utilities/type_traits/tuple/tuple.hpp b/include/utilities/type_traits/tuple/tuple.hpp index c46f41b3..7b610587 100644 --- a/include/utilities/type_traits/tuple/tuple.hpp +++ b/include/utilities/type_traits/tuple/tuple.hpp @@ -19,4 +19,4 @@ #include "utilities/type_traits/tuple/tuple_cat.hpp" #include "utilities/type_traits/tuple/tuple_product.hpp" #include "utilities/type_traits/tuple/tuple_utilities.hpp" -#include "utilities/type_traits/tuple/variant.hpp" \ No newline at end of file +#include "utilities/type_traits/tuple/variant.hpp" diff --git a/include/utilities/type_traits/variant/cat.hpp b/include/utilities/type_traits/variant/cat.hpp index e84b6226..5511a52f 100644 --- a/include/utilities/type_traits/variant/cat.hpp +++ b/include/utilities/type_traits/variant/cat.hpp @@ -31,4 +31,4 @@ namespace utilities::type_traits::variant { template using cat_t = tuple::to_variant_t...>>; -} // namespace utilities::type_traits::variant \ No newline at end of file +} // namespace utilities::type_traits::variant diff --git a/include/utilities/type_traits/variant/has_type.hpp b/include/utilities/type_traits/variant/has_type.hpp index 7f1fdb10..f5d04fe4 100644 --- a/include/utilities/type_traits/variant/has_type.hpp +++ b/include/utilities/type_traits/variant/has_type.hpp @@ -41,4 +41,4 @@ template using enable_if_has_type_t = std::enable_if_t, T>; -} // namespace utilities::type_traits::variant \ No newline at end of file +} // namespace utilities::type_traits::variant diff --git a/include/utilities/type_traits/variant/to_tuple.hpp b/include/utilities/type_traits/variant/to_tuple.hpp index 2b096270..2363af3d 100644 --- a/include/utilities/type_traits/variant/to_tuple.hpp +++ b/include/utilities/type_traits/variant/to_tuple.hpp @@ -66,4 +66,4 @@ struct to_tuple> { template using to_tuple_t = typename detail_::to_tuple::type; -} // namespace utilities::type_traits::variant \ No newline at end of file +} // namespace utilities::type_traits::variant diff --git a/include/utilities/type_traits/variant/tuple.hpp b/include/utilities/type_traits/variant/tuple.hpp index 2aa0804d..1ac3db53 100644 --- a/include/utilities/type_traits/variant/tuple.hpp +++ b/include/utilities/type_traits/variant/tuple.hpp @@ -67,4 +67,4 @@ struct variant_to_tuple> { template using variant_to_tuple_t = typename detail_::variant_to_tuple::type; -} // namespace utilities \ No newline at end of file +} // namespace utilities diff --git a/include/utilities/type_traits/variant/variant.hpp b/include/utilities/type_traits/variant/variant.hpp index 345886ca..904e9766 100644 --- a/include/utilities/type_traits/variant/variant.hpp +++ b/include/utilities/type_traits/variant/variant.hpp @@ -18,4 +18,4 @@ #include "utilities/type_traits/variant/cat.hpp" #include "utilities/type_traits/variant/has_type.hpp" #include "utilities/type_traits/variant/to_tuple.hpp" -#include "utilities/type_traits/variant/variant_product.hpp" \ No newline at end of file +#include "utilities/type_traits/variant/variant_product.hpp" diff --git a/tests/unit_tests/catch.hpp b/tests/unit_tests/catch.hpp index 73d7d0e9..42e8ef61 100644 --- a/tests/unit_tests/catch.hpp +++ b/tests/unit_tests/catch.hpp @@ -17,4 +17,4 @@ #pragma once #include #include -#include \ No newline at end of file +#include diff --git a/tests/unit_tests/dsl/add.cpp b/tests/unit_tests/dsl/add.cpp index 96d90448..6e3495e6 100644 --- a/tests/unit_tests/dsl/add.cpp +++ b/tests/unit_tests/dsl/add.cpp @@ -48,4 +48,4 @@ TEMPLATE_LIST_TEST_CASE("Add", "", test_utilities::binary_types) { REQUIRE(a_cc.lhs() == lhs); REQUIRE(a_cc.rhs() == rhs); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/binary_op.cpp b/tests/unit_tests/dsl/binary_op.cpp index e1cab7a1..73074d49 100644 --- a/tests/unit_tests/dsl/binary_op.cpp +++ b/tests/unit_tests/dsl/binary_op.cpp @@ -119,4 +119,4 @@ TEMPLATE_LIST_TEST_CASE("BinaryOp", "", test_utilities::binary_types) { REQUIRE_FALSE(a_xx != a_cx); REQUIRE(a_xx != add_r); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/divide.cpp b/tests/unit_tests/dsl/divide.cpp index 63fd90d6..4ba716d1 100644 --- a/tests/unit_tests/dsl/divide.cpp +++ b/tests/unit_tests/dsl/divide.cpp @@ -48,4 +48,4 @@ TEMPLATE_LIST_TEST_CASE("Divide", "", test_utilities::binary_types) { REQUIRE(a_cc.lhs() == lhs); REQUIRE(a_cc.rhs() == rhs); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/function_call.cpp b/tests/unit_tests/dsl/function_call.cpp index 7c41ad60..a50b6fe7 100644 --- a/tests/unit_tests/dsl/function_call.cpp +++ b/tests/unit_tests/dsl/function_call.cpp @@ -50,4 +50,4 @@ TEMPLATE_LIST_TEST_CASE("FunctionCall (N==2)", "", REQUIRE(a_cc.template object<0>() == lhs); REQUIRE(a_cc.template object<1>() == rhs); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/leaf.cpp b/tests/unit_tests/dsl/leaf.cpp index d7ca406a..04cdbffb 100644 --- a/tests/unit_tests/dsl/leaf.cpp +++ b/tests/unit_tests/dsl/leaf.cpp @@ -231,4 +231,4 @@ TEMPLATE_LIST_TEST_CASE("Leaf", "", types_to_test) { REQUIRE_THROWS_AS(unwrap_leaf(defaulted), except_t); REQUIRE_THROWS_AS(unwrap_leaf(wrap_cref), except_t); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/multiply.cpp b/tests/unit_tests/dsl/multiply.cpp index 9ea604ee..10285137 100644 --- a/tests/unit_tests/dsl/multiply.cpp +++ b/tests/unit_tests/dsl/multiply.cpp @@ -48,4 +48,4 @@ TEMPLATE_LIST_TEST_CASE("Multiply", "", test_utilities::binary_types) { REQUIRE(a_cc.lhs() == lhs); REQUIRE(a_cc.rhs() == rhs); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/n_ary_op.cpp b/tests/unit_tests/dsl/n_ary_op.cpp index 9d913be9..205904b6 100644 --- a/tests/unit_tests/dsl/n_ary_op.cpp +++ b/tests/unit_tests/dsl/n_ary_op.cpp @@ -385,4 +385,4 @@ TEST_CASE("NAryOp (N == 3)") { REQUIRE_FALSE(a_xxx != a_cxx); REQUIRE(a_xxx != op0); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/subtract.cpp b/tests/unit_tests/dsl/subtract.cpp index 7b75537b..25216d6f 100644 --- a/tests/unit_tests/dsl/subtract.cpp +++ b/tests/unit_tests/dsl/subtract.cpp @@ -48,4 +48,4 @@ TEMPLATE_LIST_TEST_CASE("Subtract", "", test_utilities::binary_types) { REQUIRE(a_cc.lhs() == lhs); REQUIRE(a_cc.rhs() == rhs); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/term.cpp b/tests/unit_tests/dsl/term.cpp index 0b1c306a..1a997a64 100644 --- a/tests/unit_tests/dsl/term.cpp +++ b/tests/unit_tests/dsl/term.cpp @@ -51,4 +51,4 @@ TEST_CASE("Term") { utilities::dsl::Divide corr(a, forty_two); REQUIRE((a / forty_two) == corr); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/dsl/term_traits.cpp b/tests/unit_tests/dsl/term_traits.cpp index 6e43180e..54f2e911 100644 --- a/tests/unit_tests/dsl/term_traits.cpp +++ b/tests/unit_tests/dsl/term_traits.cpp @@ -139,4 +139,4 @@ TEST_CASE("TermTraits>") { const op_t c(a, b); REQUIRE(traits::make_holder(c) == c); REQUIRE(traits::unwrap_holder(traits::make_holder(c)) == c); -} \ No newline at end of file +} diff --git a/tests/unit_tests/strings/string_tools.cpp b/tests/unit_tests/strings/string_tools.cpp index 14cd02dc..51ae7a21 100644 --- a/tests/unit_tests/strings/string_tools.cpp +++ b/tests/unit_tests/strings/string_tools.cpp @@ -135,4 +135,4 @@ TEST_CASE("toupper_string") { REQUIRE(toupper_string("This is a full sentence! (with a side note)") == "THIS IS A FULL SENTENCE! (WITH A SIDE NOTE)"); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/test_helpers.hpp b/tests/unit_tests/test_helpers.hpp index 55c84ae7..65033272 100644 --- a/tests/unit_tests/test_helpers.hpp +++ b/tests/unit_tests/test_helpers.hpp @@ -72,4 +72,4 @@ void test_copy_and_move(Args&&... args) { } } -} // namespace test_utilities \ No newline at end of file +} // namespace test_utilities diff --git a/tests/unit_tests/type_traits/parameter_pack_traits.cpp b/tests/unit_tests/type_traits/parameter_pack_traits.cpp index 98707a7b..286e88a3 100644 --- a/tests/unit_tests/type_traits/parameter_pack_traits.cpp +++ b/tests/unit_tests/type_traits/parameter_pack_traits.cpp @@ -257,4 +257,4 @@ TEST_CASE("unique_types_t") { using corr_type = std::tuple<>; STATIC_REQUIRE(std::is_same_v>); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/tuple/has_type.cpp b/tests/unit_tests/type_traits/tuple/has_type.cpp index 66216c75..db1c5880 100644 --- a/tests/unit_tests/type_traits/tuple/has_type.cpp +++ b/tests/unit_tests/type_traits/tuple/has_type.cpp @@ -48,4 +48,4 @@ TEMPLATE_LIST_TEST_CASE("has_type_v: tuple w type", "", search_tuple) { using search_type = TestType; using tuple_type = std::tuple; STATIC_REQUIRE(has_type_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/tuple/tuple_cat.cpp b/tests/unit_tests/type_traits/tuple/tuple_cat.cpp index 932affd9..94cee51c 100644 --- a/tests/unit_tests/type_traits/tuple/tuple_cat.cpp +++ b/tests/unit_tests/type_traits/tuple/tuple_cat.cpp @@ -36,4 +36,4 @@ TEST_CASE("tuple_cat_t") { using corr_t = std::tuple; STATIC_REQUIRE(std::is_same_v, corr_t>); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/tuple/tuple_product.cpp b/tests/unit_tests/type_traits/tuple/tuple_product.cpp index e71b21be..8dc0395f 100644 --- a/tests/unit_tests/type_traits/tuple/tuple_product.cpp +++ b/tests/unit_tests/type_traits/tuple/tuple_product.cpp @@ -49,4 +49,4 @@ TEST_CASE("tuple_prod_t") { using pair5 = std::pair; using corr = std::tuple; STATIC_REQUIRE(std::is_same_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/tuple/variant.cpp b/tests/unit_tests/type_traits/tuple/variant.cpp index 1ef981c7..26b05f42 100644 --- a/tests/unit_tests/type_traits/tuple/variant.cpp +++ b/tests/unit_tests/type_traits/tuple/variant.cpp @@ -32,4 +32,4 @@ TEST_CASE("to_variant_t") { using type = to_variant_t; using corr = std::variant; STATIC_REQUIRE(std::is_same_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/variant/cat.cpp b/tests/unit_tests/type_traits/variant/cat.cpp index 0d042e47..2295ff14 100644 --- a/tests/unit_tests/type_traits/variant/cat.cpp +++ b/tests/unit_tests/type_traits/variant/cat.cpp @@ -36,4 +36,4 @@ TEST_CASE("variant::cat_t") { using corr_t = std::variant; STATIC_REQUIRE(std::is_same_v, corr_t>); } -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/variant/has_type.cpp b/tests/unit_tests/type_traits/variant/has_type.cpp index 9e58e4ff..e3715c04 100644 --- a/tests/unit_tests/type_traits/variant/has_type.cpp +++ b/tests/unit_tests/type_traits/variant/has_type.cpp @@ -31,4 +31,4 @@ TEMPLATE_LIST_TEST_CASE("has_type_v: variant w type", "", search_variant) { using search_type = TestType; using variant_type = std::variant; STATIC_REQUIRE(has_type_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/variant/to_tuple.cpp b/tests/unit_tests/type_traits/variant/to_tuple.cpp index 1795987e..6e5c7591 100644 --- a/tests/unit_tests/type_traits/variant/to_tuple.cpp +++ b/tests/unit_tests/type_traits/variant/to_tuple.cpp @@ -32,4 +32,4 @@ TEST_CASE("to_tuple_t") { using type = to_tuple_t; using corr = std::tuple; STATIC_REQUIRE(std::is_same_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/variant/tuple.cpp b/tests/unit_tests/type_traits/variant/tuple.cpp index c11de91f..bb334216 100644 --- a/tests/unit_tests/type_traits/variant/tuple.cpp +++ b/tests/unit_tests/type_traits/variant/tuple.cpp @@ -33,4 +33,4 @@ TEST_CASE("variant_to_tuple_t") { using type = variant_to_tuple_t; using corr = std::tuple; STATIC_REQUIRE(std::is_same_v); -} \ No newline at end of file +} diff --git a/tests/unit_tests/type_traits/variant/variant_product.cpp b/tests/unit_tests/type_traits/variant/variant_product.cpp index fd09922a..15f1faab 100644 --- a/tests/unit_tests/type_traits/variant/variant_product.cpp +++ b/tests/unit_tests/type_traits/variant/variant_product.cpp @@ -32,4 +32,4 @@ TEST_CASE("variant_prod_t") { using pair5 = std::pair; using corr = std::variant; STATIC_REQUIRE(std::is_same_v); -} \ No newline at end of file +}