diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e2eee81a06..4fc38573d0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -97,25 +97,61 @@ jobs: - run: export CXX=clang++ && make install-coverage-dependencies - run: export CXX=clang++ && make coverage - run: curl -s https://codecov.io/bash | bash + # adapted from https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#publishing-a-package-using-an-action + build-container: + name: Build Docker Image + runs-on: ubuntu-22.04 + env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + - name: Log in to GitHub Container Registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: type=raw,value=ACTIONS_BUILD_${{ github.run_number }} + - name: Push to GHCR + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} test-documentation: name: Test Documentation Build runs-on: ubuntu-22.04 + needs: build-container + container: + image: ghcr.io/devosoft/empirical:ACTIONS_BUILD_${{ github.run_number }} + # github actions requires root to access mounted volumes + options: --user root steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 with: submodules: 'recursive' - - uses: mmore500/actions-setup-docker@94429ebc8d9edb4e8c8afb2667bce1e89435f74f - - run: docker build -t devosoft/empirical . - - run: docker ps -a - - run: sudo docker run --name empirical devosoft/empirical /bin/bash -c "set -o pipefail && cd /opt/Empirical/doc && make html coverage | ./headtail.sh && python3 /opt/Empirical/doc/parse_documentation_coverage.py /opt/Empirical/doc/_build/doc-coverage.json >> /opt/Empirical/doc-coverage.json" - - run: sudo docker cp empirical:/opt/Empirical/doc-coverage.json . + - run: | + make -C doc html coverage | ./doc/headtail.sh + python doc/parse_documentation_coverage.py doc/_build/doc-coverage.json >> doc/doc-coverage.json - uses: sylvanld/action-storage@v1 if: github.ref == 'refs/heads/master' with: src: doc-coverage.json dst: stats/doc-coverage.json - deploy-dockerhub: - name: Deploy to DockerHub + deploy-container: + name: Deploy to DockerHub and ghcr.io runs-on: ubuntu-22.04 if: github.ref == 'refs/heads/master' needs: @@ -137,3 +173,12 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} repository: devosoft/empirical tag_with_ref: true + - name: Push to GHCR + uses: docker/build-push-action@v1 + with: + context: . + push: true + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + repository: devosoft/empirical + tag_with_ref: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..cee67ba4ef --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,48 @@ +# Contributing to Empirical + +We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: + +- Reporting a bug +- Proposing new features +- Submitting new code +- Writing documentation + +## Reporting bugs + +To report bugs, please [open an issue on Github](https://github.com/devosoft/Empirical/issues) +clearly stating the observed (buggy) behavior (screenshots are encouraged), the desired behavior, +which operating system and compiler you're using (including version), and any additional information that might +help us fix the bug. If possible, please provide a minimum example that reproduces the bug. + +## Requesting features + +We welcome suggestions for how to make Empirical better! To give us your ideas, [open an issue on Github](https://github.com/devosoft/Empirical/issues). + +## Submitting new code and documentation + +Empirical is developed by a group of computational scientists, none of whom can be full-time software developers. +We try to fix bugs and implement new features as quickly as we can, but we can't make any promises. +For these reasons, we highly encourage contributors to submit code fixing bugs or implementing new features! +By working together, we can have a more versatile and robust library than any of us could write individually. + +Before writing new code, we reccomend opening an issue or commenting on an existing one to make sure that we're all on the +same page and agree that your contribution will be consistent with Empirical's goals. + +In-depth guides to [getting started with Empirical development](https://empirical.readthedocs.io/en/latest/dev/getting-started.html), +[coding guidelines for Empirical development](https://empirical.readthedocs.io/en/latest/dev/contribution-guidelines-and-review.html), +[writing documentation](https://empirical.readthedocs.io/en/latest/dev/adding-documentation.html), and +[writing tests](https://empirical.readthedocs.io/en/latest/dev/guide-to-testing.html) are available in the documentation. + +Once you start working on a feature, we recommend making a pull request and giving it the "Merge: not ready" label. This way it's easy for everyone +to keep tabs on ongoing Empirical development and the status of new features. Once you're done developing, remove the "Merge: not ready" label and +add the "Merge: ready" label so that we know your pull request is ready for review. + +As part of your pull request, please add yourself to the list of contributors in the [license file](LICENSE.md). + +## Code of Conduct + +Please note we have a [code of conduct](CODE_OF_CONDUCT.md) and follow it in all your interactions with the project. + +## License + +By contributing, you agree that your contributions will be released under [Empirical's MIT License](LICENSE.md). diff --git a/doc/LICENSE.md b/LICENSE.md similarity index 74% rename from doc/LICENSE.md rename to LICENSE.md index 937f082ae4..1e0fc700e9 100644 --- a/doc/LICENSE.md +++ b/LICENSE.md @@ -1,11 +1,27 @@ -=============================================================================== -The MIT License (MIT) +# The MIT License (MIT) + +Copyright (c) 2015-2023 Michigan State University Digital Evolution Laboratory + +Contributors: Charles Ofria, + Emily Dolson, + Jacob Fenton, + Riley Hoffman, + Steven Jorgensen, + Alex Lalejini, + Robin Miller, + Matthew Moreno, + Katherine Perry, + Santiago Rodriguez-Papa, + Oliver Baldwin Edwards, + Jason Stredwick, + Raheem Clemons, + Anya Vostinar, + Luis Zaman, + Ryan Moreno, + Nitash C G, + Jory Schossau, + and Dylan Rainbow -Copyright (c) 2015-2020 Michigan State University -Contributers: Charles Ofria, Emily Dolson, Jacob Fenton, Riley Hoffman, - Steven Jorgensen, Alex Lalejini, Robin Miller, Matthew Moreno, - Katherine Perry, Santiago Rodriguez-Papa, Jory Schossau, - Jason Stredwick, Anya Vostinar, and Luis Zaman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -57,31 +73,6 @@ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -=============================================================================== -This repository also contains the source code for C3.js (https://github.com/c3js/c3), which is available -under the MIT License: - -The MIT License (MIT) - -Copyright (c) 2013 Masayuki Tanaka - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - =============================================================================== This repository also contains the source code for d3-tip.js (https://github.com/Caged/d3-tip), which is available @@ -113,3 +104,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This repository contains source code adapted from the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. See https://llvm.org/LICENSE.txt for license information. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception. + +=============================================================================== + +This repository also contains a Bloom filter class was written by Arash Partow (http://www.partow.net/programming/hashfunctions/index.html) and distributed under the MIT License. @copyright Arash Partow, 2000 (modified slightly by Emily Dolson) + +=============================================================================== + +See directories within the third-party directory for information about the licenses dependencies are under. diff --git a/doc/dev/contribution-guidelines-and-review.md b/doc/dev/contribution-guidelines-and-review.md index 84b7452a3c..03bd50e891 100644 --- a/doc/dev/contribution-guidelines-and-review.md +++ b/doc/dev/contribution-guidelines-and-review.md @@ -161,19 +161,29 @@ Specific cases include: ## Checklist -Copy and paste the following into a pull request comment when it is -ready for review: +To submit code to Empirical, open a Pull Request on Github. When you are ready for it to be reviewed, add the "Merge Ready" label. Before requesting a review, you should ensure that all checks on Github pass and confirm that the following automatically-checkable things are true: - - [ ] Is it mergeable? - - [ ] Did it pass the tests? - - [ ] Does the source code follow the Empirical coding standards? - - [ ] Has the code been commented (especially non-intuitive sections) - - [ ] Was a spellchecker run on the source code and documentation after - changes were made? +- The code is merge-able into master (checked by Github) +- All tests pass (checked by Github actions CI) +- The documentation builds successfully (checked by readthedocs action and Github actions CI) + +You should also verify that the following are true. These cannot be manually checked, so copy and paste the following checklist into a pull request comment and check them off as you do them: + + - [ ] The source code follows the Empirical coding standards + - [ ] The code been commented (especially non-intuitive sections) + - [ ] A spellchecker was run on the source code and documentation after changes were made? + - [ ] All newly added/modified code has high-quality tests associated with it (the CodeCov Github Automation will check this, but you should verify it) + - [ ] All newly-added functions and classes have doxygen-compatible docstrings It's expected that before requesting a code review the author of the PR will have checked all these things on their own. It's also expected that whomever reviews the PR will check these individual items as well. -Though the CI runs most of these and will pass/fail the PR accordingly -it is not infallible and the whole point of having a code review process +The CI is not infallible and the whole point of having a code review process is to have human eyes go over the changes to the codebase. + +The code reviewer should verify that the above requirements are met, and also that: + + - The code is well-organized + - The code is commented appropriately + - Any new tests are of acceptable quality + - The addition represents an improvement to Empirical diff --git a/doc/requirements.in b/doc/requirements.in index b828b68d43..74a9e9b744 100644 --- a/doc/requirements.in +++ b/doc/requirements.in @@ -1,6 +1,8 @@ -sphinx -exhale -sphinx-rtd-theme -coverxygen -breathe -myst-parser +sphinx==7.2.6 +sphinx-rtd-theme==2.0.0 +coverxygen==1.8.1 +breathe==4.35.0 +myst-parser==2.0.0 +sphinx-tippy==0.4.1 +sphinxcontrib-bibtex==2.6.1 +docutils==0.20.1 \ No newline at end of file diff --git a/doc/requirements.txt b/doc/requirements.txt index 688edaba1f..6d06c70c47 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,92 +1,114 @@ # -# This file is autogenerated by pip-compile with Python 3.9 +# This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --resolver=backtracking +# pip-compile /tmp/requirements.in # alabaster==0.7.13 # via sphinx -babel==2.12.1 +babel==2.13.1 # via sphinx beautifulsoup4==4.12.2 - # via exhale + # via sphinx-tippy breathe==4.35.0 - # via - # -r requirements.in - # exhale -certifi==2023.5.7 + # via -r /tmp/requirements.in +certifi==2023.11.17 # via requests -charset-normalizer==3.1.0 +charset-normalizer==3.3.2 # via requests -coverxygen==1.7.0 - # via -r requirements.in -docutils==0.19 +coverxygen==1.8.1 + # via -r /tmp/requirements.in +docutils==0.20.1 # via + # -r /tmp/requirements.in # breathe # myst-parser + # pybtex-docutils # sphinx -exhale==0.2.4 - # via -r requirements.in -idna==3.4 + # sphinx-rtd-theme + # sphinxcontrib-bibtex +idna==3.6 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==6.6.0 - # via sphinx jinja2==3.1.2 # via # myst-parser # sphinx -lxml==4.9.2 - # via exhale -markdown-it-py==2.2.0 + # sphinx-tippy +latexcodec==2.0.1 + # via pybtex +markdown-it-py==3.0.0 # via # mdit-py-plugins # myst-parser markupsafe==2.1.3 # via jinja2 -mdit-py-plugins==0.3.5 +mdit-py-plugins==0.4.0 # via myst-parser mdurl==0.1.2 # via markdown-it-py -myst-parser==1.0.0 - # via -r requirements.in -packaging==23.1 +myst-parser==2.0.0 + # via -r /tmp/requirements.in +packaging==23.2 # via sphinx -pygments==2.15.1 +pybtex==0.24.0 + # via + # pybtex-docutils + # sphinxcontrib-bibtex +pybtex-docutils==1.0.3 + # via sphinxcontrib-bibtex +pygments==2.17.2 # via sphinx -pyyaml==6.0 - # via myst-parser +pyyaml==6.0.1 + # via + # myst-parser + # pybtex requests==2.31.0 - # via sphinx + # via + # sphinx + # sphinx-tippy six==1.16.0 - # via exhale + # via + # latexcodec + # pybtex snowballstemmer==2.2.0 # via sphinx -soupsieve==2.4.1 +soupsieve==2.5 # via beautifulsoup4 -sphinx==6.2.1 +sphinx==7.2.6 # via - # -r requirements.in + # -r /tmp/requirements.in # breathe - # exhale # myst-parser # sphinx-rtd-theme -sphinx-rtd-theme==0.5.1 - # via -r requirements.in -sphinxcontrib-applehelp==1.0.4 + # sphinx-tippy + # sphinxcontrib-applehelp + # sphinxcontrib-bibtex + # sphinxcontrib-devhelp + # sphinxcontrib-htmlhelp + # sphinxcontrib-jquery + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml +sphinx-rtd-theme==2.0.0 + # via -r /tmp/requirements.in +sphinx-tippy==0.4.1 + # via -r /tmp/requirements.in +sphinxcontrib-applehelp==1.0.7 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-bibtex==2.6.1 + # via -r /tmp/requirements.in +sphinxcontrib-devhelp==1.0.5 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.0.4 # via sphinx +sphinxcontrib-jquery==4.1 + # via sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==1.0.6 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==1.1.9 # via sphinx -urllib3==2.0.3 +urllib3==2.1.0 # via requests -zipp==3.15.0 - # via importlib-metadata diff --git a/include/emp/Evolve/NK-const.hpp b/include/emp/Evolve/NK-const.hpp index 868116ead8..5416ee540e 100644 --- a/include/emp/Evolve/NK-const.hpp +++ b/include/emp/Evolve/NK-const.hpp @@ -14,6 +14,7 @@ #define EMP_EVOLVE_NK_CONST_HPP_INCLUDE #include +#include #include "../base/assert.hpp" #include "../bits/BitSet.hpp" diff --git a/include/emp/Evolve/NK.hpp b/include/emp/Evolve/NK.hpp index a19fa8cece..5902fab781 100644 --- a/include/emp/Evolve/NK.hpp +++ b/include/emp/Evolve/NK.hpp @@ -19,6 +19,7 @@ #define EMP_EVOLVE_NK_HPP_INCLUDE #include +#include #include "../base/vector.hpp" #include "../bits/BitVector.hpp" diff --git a/include/emp/Evolve/OEE.hpp b/include/emp/Evolve/OEE.hpp index ceb9f619a9..40237478ac 100644 --- a/include/emp/Evolve/OEE.hpp +++ b/include/emp/Evolve/OEE.hpp @@ -11,6 +11,7 @@ #define EMP_EVOLVE_OEE_HPP_INCLUDE #include +#include #include "../base/Ptr.hpp" #include "../base/vector.hpp" diff --git a/include/emp/Evolve/Resource.hpp b/include/emp/Evolve/Resource.hpp index 3d4028a504..05768a05c1 100644 --- a/include/emp/Evolve/Resource.hpp +++ b/include/emp/Evolve/Resource.hpp @@ -15,6 +15,7 @@ #ifndef EMP_EVOLVE_RESOURCE_HPP_INCLUDE #define EMP_EVOLVE_RESOURCE_HPP_INCLUDE +#include #include "World.hpp" diff --git a/include/emp/Evolve/StateGrid.hpp b/include/emp/Evolve/StateGrid.hpp index a779e9fbce..ba73c3b153 100644 --- a/include/emp/Evolve/StateGrid.hpp +++ b/include/emp/Evolve/StateGrid.hpp @@ -21,6 +21,7 @@ #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/Evolve/Systematics.hpp b/include/emp/Evolve/Systematics.hpp index e5e549a3c8..26728f0e83 100644 --- a/include/emp/Evolve/Systematics.hpp +++ b/include/emp/Evolve/Systematics.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/Evolve/World.hpp b/include/emp/Evolve/World.hpp index a4d609f086..8d1f331a81 100644 --- a/include/emp/Evolve/World.hpp +++ b/include/emp/Evolve/World.hpp @@ -26,6 +26,7 @@ #include #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/Evolve/World_iterator.hpp b/include/emp/Evolve/World_iterator.hpp index 852a61f0bb..c5ca2e017c 100644 --- a/include/emp/Evolve/World_iterator.hpp +++ b/include/emp/Evolve/World_iterator.hpp @@ -15,6 +15,8 @@ #ifndef EMP_EVOLVE_WORLD_ITERATOR_HPP_INCLUDE #define EMP_EVOLVE_WORLD_ITERATOR_HPP_INCLUDE +#include + #include "../base/Ptr.hpp" namespace emp { diff --git a/include/emp/Evolve/World_output.hpp b/include/emp/Evolve/World_output.hpp index 79b6cb1949..2fd6432155 100644 --- a/include/emp/Evolve/World_output.hpp +++ b/include/emp/Evolve/World_output.hpp @@ -12,6 +12,8 @@ #ifndef EMP_EVOLVE_WORLD_OUTPUT_HPP_INCLUDE #define EMP_EVOLVE_WORLD_OUTPUT_HPP_INCLUDE +#include + #include "../base/vector.hpp" #include "../data/DataFile.hpp" // Helper to determine when specific events should occur. #include "../tools/string_utils.hpp" diff --git a/include/emp/Evolve/World_select.hpp b/include/emp/Evolve/World_select.hpp index 65214f7356..148544b579 100644 --- a/include/emp/Evolve/World_select.hpp +++ b/include/emp/Evolve/World_select.hpp @@ -12,6 +12,7 @@ #include #include +#include #include "../base/array.hpp" #include "../base/assert.hpp" diff --git a/include/emp/Evolve/World_structure.hpp b/include/emp/Evolve/World_structure.hpp index cc97ec8144..5183528a3e 100644 --- a/include/emp/Evolve/World_structure.hpp +++ b/include/emp/Evolve/World_structure.hpp @@ -10,7 +10,9 @@ #ifndef EMP_EVOLVE_WORLD_STRUCTURE_HPP_INCLUDE #define EMP_EVOLVE_WORLD_STRUCTURE_HPP_INCLUDE +#include #include +#include #include "../base/array.hpp" #include "../base/assert.hpp" diff --git a/include/emp/base/Ptr.hpp b/include/emp/base/Ptr.hpp index db3ff5968b..da9c6b082f 100644 --- a/include/emp/base/Ptr.hpp +++ b/include/emp/base/Ptr.hpp @@ -31,6 +31,7 @@ #define EMP_BASE_PTR_HPP_INCLUDE #include +#include #include #include "assert.hpp" diff --git a/include/emp/base/_emscripten_assert_trigger.hpp b/include/emp/base/_emscripten_assert_trigger.hpp index 7dcfd867fa..203d86cefa 100644 --- a/include/emp/base/_emscripten_assert_trigger.hpp +++ b/include/emp/base/_emscripten_assert_trigger.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include diff --git a/include/emp/base/_emscripten_error_trigger.hpp b/include/emp/base/_emscripten_error_trigger.hpp index 9d6ce0a0f4..a00e411b43 100644 --- a/include/emp/base/_emscripten_error_trigger.hpp +++ b/include/emp/base/_emscripten_error_trigger.hpp @@ -13,6 +13,7 @@ #define EMP_BASE__EMSCRIPTEN_ERROR_TRIGGER_HPP_INCLUDE #include +#include #include namespace emp { diff --git a/include/emp/base/_native_assert_trigger.hpp b/include/emp/base/_native_assert_trigger.hpp index a52c695ae6..5f6374e7f2 100644 --- a/include/emp/base/_native_assert_trigger.hpp +++ b/include/emp/base/_native_assert_trigger.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include "_is_streamable.hpp" diff --git a/include/emp/base/_native_error_trigger.hpp b/include/emp/base/_native_error_trigger.hpp index d92305a9bc..35ec074e12 100644 --- a/include/emp/base/_native_error_trigger.hpp +++ b/include/emp/base/_native_error_trigger.hpp @@ -12,6 +12,7 @@ #define EMP_BASE__NATIVE_ERROR_TRIGGER_HPP_INCLUDE +#include #include namespace emp { diff --git a/include/emp/base/_tdebug_assert_trigger.hpp b/include/emp/base/_tdebug_assert_trigger.hpp index 10233817c2..0d14fe8ac4 100644 --- a/include/emp/base/_tdebug_assert_trigger.hpp +++ b/include/emp/base/_tdebug_assert_trigger.hpp @@ -11,6 +11,7 @@ #ifndef EMP_BASE__TDEBUG_ASSERT_TRIGGER_HPP_INCLUDE #define EMP_BASE__TDEBUG_ASSERT_TRIGGER_HPP_INCLUDE +#include #include namespace emp { diff --git a/include/emp/base/_tdebug_error_trigger.hpp b/include/emp/base/_tdebug_error_trigger.hpp index 3c174e60c5..4466920af9 100644 --- a/include/emp/base/_tdebug_error_trigger.hpp +++ b/include/emp/base/_tdebug_error_trigger.hpp @@ -12,6 +12,7 @@ #define EMP_BASE__TDEBUG_ERROR_TRIGGER_HPP_INCLUDE +#include #include namespace emp { diff --git a/include/emp/base/array.hpp b/include/emp/base/array.hpp index e8cfd8f482..a7236bcd99 100644 --- a/include/emp/base/array.hpp +++ b/include/emp/base/array.hpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include "assert.hpp" diff --git a/include/emp/base/errors.hpp b/include/emp/base/errors.hpp index f4ab4e8461..83934ae43e 100644 --- a/include/emp/base/errors.hpp +++ b/include/emp/base/errors.hpp @@ -42,6 +42,7 @@ #include #include #include +#include #include /// If we are in emscripten, make sure to include the header. diff --git a/include/emp/base/map.hpp b/include/emp/base/map.hpp index 7d58125a8d..f6a4205400 100644 --- a/include/emp/base/map.hpp +++ b/include/emp/base/map.hpp @@ -19,6 +19,7 @@ #include #include +#include #include "assert.hpp" #include "MapProxy.hpp" diff --git a/include/emp/base/optional.hpp b/include/emp/base/optional.hpp index e0902fb6ed..afd8305e67 100644 --- a/include/emp/base/optional.hpp +++ b/include/emp/base/optional.hpp @@ -15,6 +15,7 @@ #define EMP_BASE_OPTIONAL_HPP_INCLUDE #include +#include #include #include diff --git a/include/emp/base/unordered_map.hpp b/include/emp/base/unordered_map.hpp index 9b4c4c664a..d75dcf13df 100644 --- a/include/emp/base/unordered_map.hpp +++ b/include/emp/base/unordered_map.hpp @@ -12,6 +12,7 @@ #define EMP_BASE_UNORDERED_MAP_HPP_INCLUDE #include +#include #include #include "assert.hpp" diff --git a/include/emp/base/vector.hpp b/include/emp/base/vector.hpp index 3baaacad35..fdcca4c641 100644 --- a/include/emp/base/vector.hpp +++ b/include/emp/base/vector.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include diff --git a/include/emp/bits/BitArray.hpp b/include/emp/bits/BitArray.hpp index d045a6c64f..847be6c0ae 100644 --- a/include/emp/bits/BitArray.hpp +++ b/include/emp/bits/BitArray.hpp @@ -17,10 +17,12 @@ #include +#include #include #include #include #include +#include #include "../base/assert.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/bits/BitMatrix.hpp b/include/emp/bits/BitMatrix.hpp index a15ef586ee..674a18f246 100644 --- a/include/emp/bits/BitMatrix.hpp +++ b/include/emp/bits/BitMatrix.hpp @@ -12,6 +12,7 @@ #define EMP_BITS_BITMATRIX_HPP_INCLUDE #include +#include #include diff --git a/include/emp/bits/BitSet.hpp b/include/emp/bits/BitSet.hpp index 3904464147..1f03f7955b 100644 --- a/include/emp/bits/BitSet.hpp +++ b/include/emp/bits/BitSet.hpp @@ -12,6 +12,7 @@ #ifndef EMP_BITS_BITSET_HPP_INCLUDE #define EMP_BITS_BITSET_HPP_INCLUDE +#include #include "BitArray.hpp" diff --git a/include/emp/bits/BitVector.hpp b/include/emp/bits/BitVector.hpp index f4ec6e6045..06ef9bc4e5 100644 --- a/include/emp/bits/BitVector.hpp +++ b/include/emp/bits/BitVector.hpp @@ -30,10 +30,12 @@ #include +#include #include #include #include #include +#include #include "../base/assert.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/bits/_bitset_helpers.hpp b/include/emp/bits/_bitset_helpers.hpp index a64bf242b0..72d1dbb9b4 100644 --- a/include/emp/bits/_bitset_helpers.hpp +++ b/include/emp/bits/_bitset_helpers.hpp @@ -10,6 +10,7 @@ #ifndef EMP_BITS__BITSET_HELPERS_HPP_INCLUDE #define EMP_BITS__BITSET_HELPERS_HPP_INCLUDE +#include namespace emp { diff --git a/include/emp/bits/bitset_utils.hpp b/include/emp/bits/bitset_utils.hpp index 31b44c5008..9f9db99283 100644 --- a/include/emp/bits/bitset_utils.hpp +++ b/include/emp/bits/bitset_utils.hpp @@ -11,8 +11,10 @@ #ifndef EMP_BITS_BITSET_UTILS_HPP_INCLUDE #define EMP_BITS_BITSET_UTILS_HPP_INCLUDE +#include #include #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/compiler/DFA.hpp b/include/emp/compiler/DFA.hpp index c9b827512f..5f3d354093 100644 --- a/include/emp/compiler/DFA.hpp +++ b/include/emp/compiler/DFA.hpp @@ -11,7 +11,9 @@ #ifndef EMP_COMPILER_DFA_HPP_INCLUDE #define EMP_COMPILER_DFA_HPP_INCLUDE +#include #include +#include #include #include "../base/array.hpp" diff --git a/include/emp/compiler/Lexer.hpp b/include/emp/compiler/Lexer.hpp index d60a935395..6067ca77c1 100644 --- a/include/emp/compiler/Lexer.hpp +++ b/include/emp/compiler/Lexer.hpp @@ -30,8 +30,10 @@ #ifndef EMP_COMPILER_LEXER_HPP_INCLUDE #define EMP_COMPILER_LEXER_HPP_INCLUDE +#include #include #include +#include #include #include "../base/map.hpp" diff --git a/include/emp/compiler/NFA.hpp b/include/emp/compiler/NFA.hpp index ae3bd23dcd..bce8382d31 100644 --- a/include/emp/compiler/NFA.hpp +++ b/include/emp/compiler/NFA.hpp @@ -23,8 +23,10 @@ #define EMP_COMPILER_NFA_HPP_INCLUDE +#include #include #include +#include #include "../base/vector.hpp" #include "../bits/BitSet.hpp" diff --git a/include/emp/compiler/RegEx.hpp b/include/emp/compiler/RegEx.hpp index e605808942..49e56521b8 100644 --- a/include/emp/compiler/RegEx.hpp +++ b/include/emp/compiler/RegEx.hpp @@ -42,6 +42,7 @@ #include #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/compiler/lexer_utils.hpp b/include/emp/compiler/lexer_utils.hpp index 458f0485d4..6744693940 100644 --- a/include/emp/compiler/lexer_utils.hpp +++ b/include/emp/compiler/lexer_utils.hpp @@ -13,6 +13,7 @@ #include +#include #include // std::pair #include "../base/vector.hpp" diff --git a/include/emp/config/ArgManager.hpp b/include/emp/config/ArgManager.hpp index f84fce2c27..5827dc6825 100644 --- a/include/emp/config/ArgManager.hpp +++ b/include/emp/config/ArgManager.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/config/SettingCombos.hpp b/include/emp/config/SettingCombos.hpp index 879c878946..d0a2c5dccd 100644 --- a/include/emp/config/SettingCombos.hpp +++ b/include/emp/config/SettingCombos.hpp @@ -12,6 +12,7 @@ #define EMP_CONFIG_SETTINGCOMBOS_HPP_INCLUDE #include +#include #include #include #include diff --git a/include/emp/config/SettingConfig.hpp b/include/emp/config/SettingConfig.hpp index 7b059c8a4a..7dae78193b 100644 --- a/include/emp/config/SettingConfig.hpp +++ b/include/emp/config/SettingConfig.hpp @@ -12,6 +12,7 @@ #define EMP_CONFIG_SETTINGCONFIG_HPP_INCLUDE #include +#include #include #include #include diff --git a/include/emp/config/command_line.hpp b/include/emp/config/command_line.hpp index 1bc0c251e5..a9bda8a3e8 100644 --- a/include/emp/config/command_line.hpp +++ b/include/emp/config/command_line.hpp @@ -34,6 +34,7 @@ #ifndef EMP_CONFIG_COMMAND_LINE_HPP_INCLUDE #define EMP_CONFIG_COMMAND_LINE_HPP_INCLUDE +#include #include #include "../base/vector.hpp" diff --git a/include/emp/config/config.hpp b/include/emp/config/config.hpp index dccfcfefbd..900c8a84ae 100644 --- a/include/emp/config/config.hpp +++ b/include/emp/config/config.hpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/config/config_web_interface.hpp b/include/emp/config/config_web_interface.hpp index 647539fcd1..c88d06778c 100644 --- a/include/emp/config/config_web_interface.hpp +++ b/include/emp/config/config_web_interface.hpp @@ -12,6 +12,7 @@ #include #include +#include #include "../datastructs/set_utils.hpp" #include "../tools/string_utils.hpp" diff --git a/include/emp/control/Action.hpp b/include/emp/control/Action.hpp index 2004ef2037..0ff1393ff7 100644 --- a/include/emp/control/Action.hpp +++ b/include/emp/control/Action.hpp @@ -15,6 +15,7 @@ #define EMP_CONTROL_ACTION_HPP_INCLUDE #include +#include #include namespace emp { diff --git a/include/emp/control/ActionManager.hpp b/include/emp/control/ActionManager.hpp index 32bf6df875..f71efa6189 100644 --- a/include/emp/control/ActionManager.hpp +++ b/include/emp/control/ActionManager.hpp @@ -11,6 +11,7 @@ #ifndef EMP_CONTROL_ACTIONMANAGER_HPP_INCLUDE #define EMP_CONTROL_ACTIONMANAGER_HPP_INCLUDE +#include #include #include diff --git a/include/emp/control/Signal.hpp b/include/emp/control/Signal.hpp index d347df85e1..15fff4d424 100644 --- a/include/emp/control/Signal.hpp +++ b/include/emp/control/Signal.hpp @@ -15,7 +15,9 @@ #define EMP_CONTROL_SIGNAL_HPP_INCLUDE +#include #include +#include #include #include "../datastructs/map_utils.hpp" diff --git a/include/emp/control/SignalControl.hpp b/include/emp/control/SignalControl.hpp index 82bf0a7982..19428f0288 100644 --- a/include/emp/control/SignalControl.hpp +++ b/include/emp/control/SignalControl.hpp @@ -17,6 +17,8 @@ #ifndef EMP_CONTROL_SIGNALCONTROL_HPP_INCLUDE #define EMP_CONTROL_SIGNALCONTROL_HPP_INCLUDE +#include +#include #include #include diff --git a/include/emp/control/SignalManager.hpp b/include/emp/control/SignalManager.hpp index 570c26bd18..ca55d2a57d 100644 --- a/include/emp/control/SignalManager.hpp +++ b/include/emp/control/SignalManager.hpp @@ -11,6 +11,8 @@ #ifndef EMP_CONTROL_SIGNALMANAGER_HPP_INCLUDE #define EMP_CONTROL_SIGNALMANAGER_HPP_INCLUDE +#include +#include #include #include diff --git a/include/emp/data/DataFile.hpp b/include/emp/data/DataFile.hpp index 86dd2496f8..74f6c38021 100644 --- a/include/emp/data/DataFile.hpp +++ b/include/emp/data/DataFile.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/data/DataInterface.hpp b/include/emp/data/DataInterface.hpp index 14b42e0978..84cf82c561 100644 --- a/include/emp/data/DataInterface.hpp +++ b/include/emp/data/DataInterface.hpp @@ -10,6 +10,7 @@ #ifndef EMP_DATA_DATAINTERFACE_HPP_INCLUDE #define EMP_DATA_DATAINTERFACE_HPP_INCLUDE +#include #include "DataNode.hpp" diff --git a/include/emp/data/DataLayout.hpp b/include/emp/data/DataLayout.hpp index 5ad2ea44c3..a02b835ef3 100644 --- a/include/emp/data/DataLayout.hpp +++ b/include/emp/data/DataLayout.hpp @@ -11,6 +11,7 @@ #ifndef EMP_DATA_DATALAYOUT_HPP_INCLUDE #define EMP_DATA_DATALAYOUT_HPP_INCLUDE +#include #include #include diff --git a/include/emp/data/DataLog.hpp b/include/emp/data/DataLog.hpp index 9e9b9fa276..b9dc62548d 100644 --- a/include/emp/data/DataLog.hpp +++ b/include/emp/data/DataLog.hpp @@ -16,6 +16,7 @@ #include #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/data/DataManager.hpp b/include/emp/data/DataManager.hpp index 58f1febb98..72cdd48a5f 100644 --- a/include/emp/data/DataManager.hpp +++ b/include/emp/data/DataManager.hpp @@ -11,6 +11,7 @@ #define EMP_DATA_DATAMANAGER_HPP_INCLUDE #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/data/DataMap.hpp b/include/emp/data/DataMap.hpp index f2c2d0f6e7..c15f0a698c 100644 --- a/include/emp/data/DataMap.hpp +++ b/include/emp/data/DataMap.hpp @@ -89,6 +89,7 @@ #include // For std::memcpy #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/data/DataNode.hpp b/include/emp/data/DataNode.hpp index 6d978a2a8f..08627db1d7 100644 --- a/include/emp/data/DataNode.hpp +++ b/include/emp/data/DataNode.hpp @@ -26,6 +26,7 @@ #include #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/data/MemoryImage.hpp b/include/emp/data/MemoryImage.hpp index 4731dfb23b..4a45446819 100644 --- a/include/emp/data/MemoryImage.hpp +++ b/include/emp/data/MemoryImage.hpp @@ -15,6 +15,7 @@ #include // For std::memcpy #include // For placement new #include +#include #include "../base/assert.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/data/Trait.hpp b/include/emp/data/Trait.hpp index 92cf00f316..09397e90bc 100644 --- a/include/emp/data/Trait.hpp +++ b/include/emp/data/Trait.hpp @@ -13,6 +13,7 @@ #ifndef EMP_DATA_TRAIT_HPP_INCLUDE #define EMP_DATA_TRAIT_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/data/VarMap.hpp b/include/emp/data/VarMap.hpp index 30132b2ac1..b5eb472c37 100644 --- a/include/emp/data/VarMap.hpp +++ b/include/emp/data/VarMap.hpp @@ -11,6 +11,7 @@ #ifndef EMP_DATA_VARMAP_HPP_INCLUDE #define EMP_DATA_VARMAP_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/datastructs/Cache.hpp b/include/emp/datastructs/Cache.hpp index 70e465de4e..836f379a62 100644 --- a/include/emp/datastructs/Cache.hpp +++ b/include/emp/datastructs/Cache.hpp @@ -12,6 +12,7 @@ #define EMP_DATASTRUCTS_CACHE_HPP_INCLUDE #include +#include #include namespace emp { diff --git a/include/emp/datastructs/DynamicString.hpp b/include/emp/datastructs/DynamicString.hpp index a17457c8bf..3a8c208510 100644 --- a/include/emp/datastructs/DynamicString.hpp +++ b/include/emp/datastructs/DynamicString.hpp @@ -13,6 +13,7 @@ #include +#include #include #include "../base/vector.hpp" diff --git a/include/emp/datastructs/Graph.hpp b/include/emp/datastructs/Graph.hpp index 2ba86b5935..fb76210471 100644 --- a/include/emp/datastructs/Graph.hpp +++ b/include/emp/datastructs/Graph.hpp @@ -12,6 +12,7 @@ #define EMP_DATASTRUCTS_GRAPH_HPP_INCLUDE #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/datastructs/IndexMap.hpp b/include/emp/datastructs/IndexMap.hpp index 853e8f5db9..c1c35cfb5b 100644 --- a/include/emp/datastructs/IndexMap.hpp +++ b/include/emp/datastructs/IndexMap.hpp @@ -23,6 +23,8 @@ #ifndef EMP_DATASTRUCTS_INDEXMAP_HPP_INCLUDE #define EMP_DATASTRUCTS_INDEXMAP_HPP_INCLUDE +#include + #include "../base/vector.hpp" namespace emp { diff --git a/include/emp/datastructs/QueueCache.hpp b/include/emp/datastructs/QueueCache.hpp index 2205c73282..4a2c9f8bc4 100644 --- a/include/emp/datastructs/QueueCache.hpp +++ b/include/emp/datastructs/QueueCache.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/datastructs/SmallFifoMap.hpp b/include/emp/datastructs/SmallFifoMap.hpp index 7ec3d156c0..1cc6b4090f 100644 --- a/include/emp/datastructs/SmallFifoMap.hpp +++ b/include/emp/datastructs/SmallFifoMap.hpp @@ -13,6 +13,7 @@ #define EMP_DATASTRUCTS_SMALLFIFOMAP_HPP_INCLUDE #include +#include #include #include "../base/array.hpp" diff --git a/include/emp/datastructs/StringMap.hpp b/include/emp/datastructs/StringMap.hpp index 14fc22af87..230da41913 100644 --- a/include/emp/datastructs/StringMap.hpp +++ b/include/emp/datastructs/StringMap.hpp @@ -22,6 +22,7 @@ #ifndef EMP_DATASTRUCTS_STRINGMAP_HPP_INCLUDE #define EMP_DATASTRUCTS_STRINGMAP_HPP_INCLUDE +#include #include "../base/unordered_map.hpp" #include "../tools/string_utils.hpp" diff --git a/include/emp/datastructs/TimeQueue.hpp b/include/emp/datastructs/TimeQueue.hpp index ce2bb6e70f..504ba17e65 100644 --- a/include/emp/datastructs/TimeQueue.hpp +++ b/include/emp/datastructs/TimeQueue.hpp @@ -49,6 +49,7 @@ #include #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/datastructs/TypeMap.hpp b/include/emp/datastructs/TypeMap.hpp index a7327dae44..290f867750 100644 --- a/include/emp/datastructs/TypeMap.hpp +++ b/include/emp/datastructs/TypeMap.hpp @@ -11,6 +11,7 @@ #ifndef EMP_DATASTRUCTS_TYPEMAP_HPP_INCLUDE #define EMP_DATASTRUCTS_TYPEMAP_HPP_INCLUDE +#include #include #include "../meta/TypeID.hpp" diff --git a/include/emp/datastructs/UnorderedIndexMap.hpp b/include/emp/datastructs/UnorderedIndexMap.hpp index 9e6dbe985f..58fd4506f1 100644 --- a/include/emp/datastructs/UnorderedIndexMap.hpp +++ b/include/emp/datastructs/UnorderedIndexMap.hpp @@ -14,6 +14,8 @@ #ifndef EMP_DATASTRUCTS_UNORDEREDINDEXMAP_HPP_INCLUDE #define EMP_DATASTRUCTS_UNORDEREDINDEXMAP_HPP_INCLUDE +#include + #include "../base/vector.hpp" namespace emp { diff --git a/include/emp/datastructs/graph_utils.hpp b/include/emp/datastructs/graph_utils.hpp index ab5439d01b..ee166a3095 100644 --- a/include/emp/datastructs/graph_utils.hpp +++ b/include/emp/datastructs/graph_utils.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include diff --git a/include/emp/datastructs/hash_utils.hpp b/include/emp/datastructs/hash_utils.hpp index 0573b7294e..bbc6167dec 100644 --- a/include/emp/datastructs/hash_utils.hpp +++ b/include/emp/datastructs/hash_utils.hpp @@ -12,6 +12,7 @@ #define EMP_DATASTRUCTS_HASH_UTILS_HPP_INCLUDE #include +#include #include #include #include diff --git a/include/emp/datastructs/ra_set.hpp b/include/emp/datastructs/ra_set.hpp index 62aa079b17..f5316a6be7 100644 --- a/include/emp/datastructs/ra_set.hpp +++ b/include/emp/datastructs/ra_set.hpp @@ -12,6 +12,7 @@ #define EMP_DATASTRUCTS_RA_SET_HPP_INCLUDE #include +#include #include "../base/map.hpp" #include "../base/vector.hpp" diff --git a/include/emp/datastructs/reference_vector.hpp b/include/emp/datastructs/reference_vector.hpp index 931b272380..5cd6e2129c 100644 --- a/include/emp/datastructs/reference_vector.hpp +++ b/include/emp/datastructs/reference_vector.hpp @@ -11,6 +11,8 @@ #ifndef EMP_DATASTRUCTS_REFERENCE_VECTOR_HPP_INCLUDE #define EMP_DATASTRUCTS_REFERENCE_VECTOR_HPP_INCLUDE +#include + #include "../base/Ptr.hpp" #include "../base/vector.hpp" diff --git a/include/emp/datastructs/tuple_utils.hpp b/include/emp/datastructs/tuple_utils.hpp index 3f1e028009..4bb85f847e 100644 --- a/include/emp/datastructs/tuple_utils.hpp +++ b/include/emp/datastructs/tuple_utils.hpp @@ -12,6 +12,7 @@ #define EMP_DATASTRUCTS_TUPLE_UTILS_HPP_INCLUDE #include +#include #include #include "../meta/ValPack.hpp" diff --git a/include/emp/datastructs/valsort_map.hpp b/include/emp/datastructs/valsort_map.hpp index 3faf29b382..64a1b38a4e 100644 --- a/include/emp/datastructs/valsort_map.hpp +++ b/include/emp/datastructs/valsort_map.hpp @@ -20,6 +20,7 @@ #include #include +#include #include "../base/vector.hpp" diff --git a/include/emp/datastructs/vector_utils.hpp b/include/emp/datastructs/vector_utils.hpp index 64e8150553..b5f80280e1 100644 --- a/include/emp/datastructs/vector_utils.hpp +++ b/include/emp/datastructs/vector_utils.hpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "../base/vector.hpp" #include "../tools/string_utils.hpp" diff --git a/include/emp/debug/alert.hpp b/include/emp/debug/alert.hpp index 70be769cd2..a6b667cf4d 100644 --- a/include/emp/debug/alert.hpp +++ b/include/emp/debug/alert.hpp @@ -11,6 +11,8 @@ #ifndef EMP_DEBUG_ALERT_HPP_INCLUDE #define EMP_DEBUG_ALERT_HPP_INCLUDE +#include + #include "../tools/string_utils.hpp" // If we are in emscripten, make sure to include the header. diff --git a/include/emp/functional/AnyFunction.hpp b/include/emp/functional/AnyFunction.hpp index 42ebffb489..82dbc6cca9 100644 --- a/include/emp/functional/AnyFunction.hpp +++ b/include/emp/functional/AnyFunction.hpp @@ -14,6 +14,7 @@ #define EMP_FUNCTIONAL_ANYFUNCTION_HPP_INCLUDE #include +#include #include "../base/assert.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/functional/FunctionSet.hpp b/include/emp/functional/FunctionSet.hpp index 46d5c1fce8..31cf6f4fc3 100644 --- a/include/emp/functional/FunctionSet.hpp +++ b/include/emp/functional/FunctionSet.hpp @@ -12,6 +12,7 @@ #define EMP_FUNCTIONAL_FUNCTIONSET_HPP_INCLUDE #include +#include #include "../base/vector.hpp" diff --git a/include/emp/functional/GenericFunction.hpp b/include/emp/functional/GenericFunction.hpp index e8e3240aad..bc5095cfce 100644 --- a/include/emp/functional/GenericFunction.hpp +++ b/include/emp/functional/GenericFunction.hpp @@ -15,6 +15,7 @@ #define EMP_FUNCTIONAL_GENERICFUNCTION_HPP_INCLUDE #include +#include #include "../base/assert.hpp" diff --git a/include/emp/functional/flex_function.hpp b/include/emp/functional/flex_function.hpp index 191d24273a..1e757b3562 100644 --- a/include/emp/functional/flex_function.hpp +++ b/include/emp/functional/flex_function.hpp @@ -13,6 +13,7 @@ #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/functional/memo_function.hpp b/include/emp/functional/memo_function.hpp index e802cafe54..9b81787292 100644 --- a/include/emp/functional/memo_function.hpp +++ b/include/emp/functional/memo_function.hpp @@ -11,6 +11,7 @@ #ifndef EMP_FUNCTIONAL_MEMO_FUNCTION_HPP_INCLUDE #define EMP_FUNCTIONAL_MEMO_FUNCTION_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/games/Mancala.hpp b/include/emp/games/Mancala.hpp index cd92bc9dbc..3b8dd3995f 100644 --- a/include/emp/games/Mancala.hpp +++ b/include/emp/games/Mancala.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "../base/array.hpp" diff --git a/include/emp/games/Othello.hpp b/include/emp/games/Othello.hpp index a3d17530a3..f37e4f4e14 100644 --- a/include/emp/games/Othello.hpp +++ b/include/emp/games/Othello.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "../base/array.hpp" diff --git a/include/emp/games/Othello8.hpp b/include/emp/games/Othello8.hpp index 93d5d22574..a0851194e7 100644 --- a/include/emp/games/Othello8.hpp +++ b/include/emp/games/Othello8.hpp @@ -13,9 +13,11 @@ #ifndef EMP_GAMES_OTHELLO8_HPP_INCLUDE #define EMP_GAMES_OTHELLO8_HPP_INCLUDE +#include #include #include #include +#include #include #include "../base/array.hpp" diff --git a/include/emp/games/PayoffMatrix.hpp b/include/emp/games/PayoffMatrix.hpp index 20ea76b3ba..bba247c8e2 100644 --- a/include/emp/games/PayoffMatrix.hpp +++ b/include/emp/games/PayoffMatrix.hpp @@ -11,6 +11,7 @@ #ifndef EMP_GAMES_PAYOFFMATRIX_HPP_INCLUDE #define EMP_GAMES_PAYOFFMATRIX_HPP_INCLUDE +#include #include #include "../base/array.hpp" diff --git a/include/emp/geometry/Angle2D.hpp b/include/emp/geometry/Angle2D.hpp index b0b62914ff..3bbdf1e75e 100644 --- a/include/emp/geometry/Angle2D.hpp +++ b/include/emp/geometry/Angle2D.hpp @@ -15,6 +15,7 @@ #define EMP_GEOMETRY_ANGLE2D_HPP_INCLUDE #include +#include #include "../math/constants.hpp" diff --git a/include/emp/geometry/Body2D.hpp b/include/emp/geometry/Body2D.hpp index 553228aefa..bad63c083c 100644 --- a/include/emp/geometry/Body2D.hpp +++ b/include/emp/geometry/Body2D.hpp @@ -23,6 +23,9 @@ #ifndef EMP_GEOMETRY_BODY2D_HPP_INCLUDE #define EMP_GEOMETRY_BODY2D_HPP_INCLUDE +#include +#include + #include "../base/assert.hpp" #include "../base/Ptr.hpp" #include "../base/vector.hpp" diff --git a/include/emp/geometry/Physics2D.hpp b/include/emp/geometry/Physics2D.hpp index 9fe311607d..1e02c61fcd 100644 --- a/include/emp/geometry/Physics2D.hpp +++ b/include/emp/geometry/Physics2D.hpp @@ -12,6 +12,7 @@ #define EMP_GEOMETRY_PHYSICS2D_HPP_INCLUDE #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/geometry/Surface.hpp b/include/emp/geometry/Surface.hpp index decf6d596e..b3581a3f74 100644 --- a/include/emp/geometry/Surface.hpp +++ b/include/emp/geometry/Surface.hpp @@ -20,6 +20,7 @@ #include #include +#include #include "../base/Ptr.hpp" #include "../datastructs/vector_utils.hpp" diff --git a/include/emp/hardware/AvidaCPU_InstLib.hpp b/include/emp/hardware/AvidaCPU_InstLib.hpp index e5c270c226..f05acedf59 100644 --- a/include/emp/hardware/AvidaCPU_InstLib.hpp +++ b/include/emp/hardware/AvidaCPU_InstLib.hpp @@ -10,6 +10,8 @@ #ifndef EMP_HARDWARE_AVIDACPU_INSTLIB_HPP_INCLUDE #define EMP_HARDWARE_AVIDACPU_INSTLIB_HPP_INCLUDE +#include + #include "../math/math.hpp" #include "InstLib.hpp" diff --git a/include/emp/hardware/AvidaGP.hpp b/include/emp/hardware/AvidaGP.hpp index 1b812852d8..9e2cfe2421 100644 --- a/include/emp/hardware/AvidaGP.hpp +++ b/include/emp/hardware/AvidaGP.hpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "../base/array.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/hardware/BitSorter.hpp b/include/emp/hardware/BitSorter.hpp index 746a4eab48..da09f74cab 100644 --- a/include/emp/hardware/BitSorter.hpp +++ b/include/emp/hardware/BitSorter.hpp @@ -10,6 +10,8 @@ #ifndef EMP_HARDWARE_BITSORTER_HPP_INCLUDE #define EMP_HARDWARE_BITSORTER_HPP_INCLUDE +#include +#include #include #include "../base/vector.hpp" diff --git a/include/emp/hardware/EventDrivenGP.hpp b/include/emp/hardware/EventDrivenGP.hpp index bbaca6cdd6..fdc4f0f32d 100644 --- a/include/emp/hardware/EventDrivenGP.hpp +++ b/include/emp/hardware/EventDrivenGP.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/hardware/EventLib.hpp b/include/emp/hardware/EventLib.hpp index 4fd9db33e1..d0e0e2f5cb 100644 --- a/include/emp/hardware/EventLib.hpp +++ b/include/emp/hardware/EventLib.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/hardware/Genome.hpp b/include/emp/hardware/Genome.hpp index ad35313162..68e23d199b 100644 --- a/include/emp/hardware/Genome.hpp +++ b/include/emp/hardware/Genome.hpp @@ -11,10 +11,10 @@ #ifndef EMP_HARDWARE_GENOME_HPP_INCLUDE #define EMP_HARDWARE_GENOME_HPP_INCLUDE -#include "../base/Ptr.hpp" - +#include #include "../base/array.hpp" +#include "../base/Ptr.hpp" #include "../base/vector.hpp" #include "../datastructs/map_utils.hpp" #include "../io/File.hpp" diff --git a/include/emp/hardware/InstLib.hpp b/include/emp/hardware/InstLib.hpp index 072e14d019..a9385c1cac 100644 --- a/include/emp/hardware/InstLib.hpp +++ b/include/emp/hardware/InstLib.hpp @@ -11,6 +11,7 @@ #define EMP_HARDWARE_INSTLIB_HPP_INCLUDE #include +#include #include #include diff --git a/include/emp/hardware/LinearCode.hpp b/include/emp/hardware/LinearCode.hpp index 17d0f2d9bd..d2bda8af7d 100644 --- a/include/emp/hardware/LinearCode.hpp +++ b/include/emp/hardware/LinearCode.hpp @@ -10,6 +10,8 @@ #ifndef EMP_HARDWARE_LINEARCODE_HPP_INCLUDE #define EMP_HARDWARE_LINEARCODE_HPP_INCLUDE +#include + #include "../base/array.hpp" #include "../base/vector.hpp" diff --git a/include/emp/hardware/signalgp_utils.hpp b/include/emp/hardware/signalgp_utils.hpp index 7206cb8dc7..4a47aa3f07 100644 --- a/include/emp/hardware/signalgp_utils.hpp +++ b/include/emp/hardware/signalgp_utils.hpp @@ -13,7 +13,9 @@ #define EMP_HARDWARE_SIGNALGP_UTILS_HPP_INCLUDE #include +#include #include +#include #include #include diff --git a/include/emp/in_progress/BatchConfig.hpp b/include/emp/in_progress/BatchConfig.hpp index 756b897bc2..34d48285cf 100644 --- a/include/emp/in_progress/BatchConfig.hpp +++ b/include/emp/in_progress/BatchConfig.hpp @@ -13,6 +13,7 @@ #define EMP_IN_PROGRESS_BATCHCONFIG_HPP_INCLUDE #include +#include #include "../base/vector.hpp" diff --git a/include/emp/in_progress/Empower/Empower.hpp b/include/emp/in_progress/Empower/Empower.hpp index 5e9f8ba202..a1fefcb8cb 100644 --- a/include/emp/in_progress/Empower/Empower.hpp +++ b/include/emp/in_progress/Empower/Empower.hpp @@ -34,6 +34,7 @@ #include #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/in_progress/Empower/MemoryImage.hpp b/include/emp/in_progress/Empower/MemoryImage.hpp index adf3a8e80e..471ad06894 100644 --- a/include/emp/in_progress/Empower/MemoryImage.hpp +++ b/include/emp/in_progress/Empower/MemoryImage.hpp @@ -10,6 +10,8 @@ #ifndef EMP_IN_PROGRESS_EMPOWER_MEMORYIMAGE_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER_MEMORYIMAGE_HPP_INCLUDE +#include + #include "../base/assert.hpp" #include "../base/Ptr.hpp" #include "../base/vector.hpp" diff --git a/include/emp/in_progress/Empower/Struct.hpp b/include/emp/in_progress/Empower/Struct.hpp index efacb088cc..c010ae7429 100644 --- a/include/emp/in_progress/Empower/Struct.hpp +++ b/include/emp/in_progress/Empower/Struct.hpp @@ -10,6 +10,8 @@ #ifndef EMP_IN_PROGRESS_EMPOWER_STRUCT_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER_STRUCT_HPP_INCLUDE +#include + #include "../base/assert.hpp" #include "../base/Ptr.hpp" #include "../base/vector.hpp" diff --git a/include/emp/in_progress/Empower/StructType.hpp b/include/emp/in_progress/Empower/StructType.hpp index fb3e31974d..380c2b45cd 100644 --- a/include/emp/in_progress/Empower/StructType.hpp +++ b/include/emp/in_progress/Empower/StructType.hpp @@ -12,6 +12,7 @@ #ifndef EMP_IN_PROGRESS_EMPOWER_STRUCTTYPE_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER_STRUCTTYPE_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/in_progress/Empower/Type.hpp b/include/emp/in_progress/Empower/Type.hpp index dfaa0fafb8..ea923a4279 100644 --- a/include/emp/in_progress/Empower/Type.hpp +++ b/include/emp/in_progress/Empower/Type.hpp @@ -11,6 +11,7 @@ #define EMP_IN_PROGRESS_EMPOWER_TYPE_HPP_INCLUDE #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/in_progress/Empower/TypeManager.hpp b/include/emp/in_progress/Empower/TypeManager.hpp index 2e2b138b70..be4da7ade6 100644 --- a/include/emp/in_progress/Empower/TypeManager.hpp +++ b/include/emp/in_progress/Empower/TypeManager.hpp @@ -11,6 +11,7 @@ #define EMP_IN_PROGRESS_EMPOWER_TYPEMANAGER_HPP_INCLUDE #include +#include #include #include diff --git a/include/emp/in_progress/Empower/Var.hpp b/include/emp/in_progress/Empower/Var.hpp index 84061f3526..ea179b6e46 100644 --- a/include/emp/in_progress/Empower/Var.hpp +++ b/include/emp/in_progress/Empower/Var.hpp @@ -10,6 +10,8 @@ #ifndef EMP_IN_PROGRESS_EMPOWER_VAR_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER_VAR_HPP_INCLUDE +#include + #include "../base/assert.hpp" #include "../base/Ptr.hpp" #include "../meta/TypeID.hpp" diff --git a/include/emp/in_progress/Empower/VarInfo.hpp b/include/emp/in_progress/Empower/VarInfo.hpp index 7d0e30477d..c3be02f10a 100644 --- a/include/emp/in_progress/Empower/VarInfo.hpp +++ b/include/emp/in_progress/Empower/VarInfo.hpp @@ -10,6 +10,8 @@ #ifndef EMP_IN_PROGRESS_EMPOWER_VARINFO_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER_VARINFO_HPP_INCLUDE +#include + #include "../base/assert.hpp" #include "../base/Ptr.hpp" diff --git a/include/emp/in_progress/Empower2/Var.hpp b/include/emp/in_progress/Empower2/Var.hpp index fd9604f255..8df3a6c7f2 100644 --- a/include/emp/in_progress/Empower2/Var.hpp +++ b/include/emp/in_progress/Empower2/Var.hpp @@ -18,6 +18,7 @@ #ifndef EMP_IN_PROGRESS_EMPOWER2_VAR_HPP_INCLUDE #define EMP_IN_PROGRESS_EMPOWER2_VAR_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/in_progress/Parser.hpp b/include/emp/in_progress/Parser.hpp index d681d64afa..57fb33643e 100644 --- a/include/emp/in_progress/Parser.hpp +++ b/include/emp/in_progress/Parser.hpp @@ -27,6 +27,7 @@ #define EMP_IN_PROGRESS_PARSER_HPP_INCLUDE #include +#include #include "../base/vector.hpp" #include "../bits/BitVector.hpp" diff --git a/include/emp/in_progress/constexpr/ce_array.hpp b/include/emp/in_progress/constexpr/ce_array.hpp index 74d50281dd..fcc90650e6 100644 --- a/include/emp/in_progress/constexpr/ce_array.hpp +++ b/include/emp/in_progress/constexpr/ce_array.hpp @@ -13,6 +13,7 @@ #ifndef EMP_IN_PROGRESS_CONSTEXPR_CE_ARRAY_HPP_INCLUDE #define EMP_IN_PROGRESS_CONSTEXPR_CE_ARRAY_HPP_INCLUDE +#include #include #include "../base/assert.hpp" diff --git a/include/emp/in_progress/constexpr/ce_random.hpp b/include/emp/in_progress/constexpr/ce_random.hpp index 8cb0e9a673..25dd3de6ee 100644 --- a/include/emp/in_progress/constexpr/ce_random.hpp +++ b/include/emp/in_progress/constexpr/ce_random.hpp @@ -43,8 +43,10 @@ // #include #include #include +#include #include #include +#include #include #include "../math/math.hpp" diff --git a/include/emp/in_progress/constexpr/ce_string.hpp b/include/emp/in_progress/constexpr/ce_string.hpp index 87ff2d7e5d..05b1283f77 100644 --- a/include/emp/in_progress/constexpr/ce_string.hpp +++ b/include/emp/in_progress/constexpr/ce_string.hpp @@ -12,6 +12,7 @@ #ifndef EMP_IN_PROGRESS_CONSTEXPR_CE_STRING_HPP_INCLUDE #define EMP_IN_PROGRESS_CONSTEXPR_CE_STRING_HPP_INCLUDE +#include #include #include diff --git a/include/emp/io/ContiguousStream.hpp b/include/emp/io/ContiguousStream.hpp index 224bd45758..dd343c2908 100644 --- a/include/emp/io/ContiguousStream.hpp +++ b/include/emp/io/ContiguousStream.hpp @@ -12,6 +12,7 @@ #define EMP_IO_CONTIGUOUSSTREAM_HPP_INCLUDE #include +#include #include "../base/vector.hpp" diff --git a/include/emp/io/File.hpp b/include/emp/io/File.hpp index f7ac262634..a00c4908f6 100644 --- a/include/emp/io/File.hpp +++ b/include/emp/io/File.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "../base/vector.hpp" diff --git a/include/emp/io/MemoryIStream.hpp b/include/emp/io/MemoryIStream.hpp index 040b0d3c84..25cd4d4d39 100644 --- a/include/emp/io/MemoryIStream.hpp +++ b/include/emp/io/MemoryIStream.hpp @@ -12,6 +12,7 @@ #define EMP_IO_MEMORYISTREAM_HPP_INCLUDE #include +#include #include namespace emp { diff --git a/include/emp/io/ascii_utils.hpp b/include/emp/io/ascii_utils.hpp index 5e14132887..985d53ef5f 100644 --- a/include/emp/io/ascii_utils.hpp +++ b/include/emp/io/ascii_utils.hpp @@ -14,6 +14,7 @@ #include #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/io/serialize.hpp b/include/emp/io/serialize.hpp index a6b27e339a..1dd4706262 100644 --- a/include/emp/io/serialize.hpp +++ b/include/emp/io/serialize.hpp @@ -52,6 +52,7 @@ #ifndef EMP_IO_SERIALIZE_HPP_INCLUDE #define EMP_IO_SERIALIZE_HPP_INCLUDE +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/matching/MatchBin.hpp b/include/emp/matching/MatchBin.hpp index c9199e9e85..d0687c37c9 100644 --- a/include/emp/matching/MatchBin.hpp +++ b/include/emp/matching/MatchBin.hpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/matching/MatchDepository.hpp b/include/emp/matching/MatchDepository.hpp index 67550bae6a..4818220960 100644 --- a/include/emp/matching/MatchDepository.hpp +++ b/include/emp/matching/MatchDepository.hpp @@ -14,6 +14,7 @@ #include #include +#include #include "../datastructs/SmallFifoMap.hpp" #include "../datastructs/SmallVector.hpp" diff --git a/include/emp/matching/matchbin_metrics.hpp b/include/emp/matching/matchbin_metrics.hpp index 3126f631cf..dbc5492919 100644 --- a/include/emp/matching/matchbin_metrics.hpp +++ b/include/emp/matching/matchbin_metrics.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/matching/matchbin_regulators.hpp b/include/emp/matching/matchbin_regulators.hpp index d6a9bb7398..f922b746a7 100644 --- a/include/emp/matching/matchbin_regulators.hpp +++ b/include/emp/matching/matchbin_regulators.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/matching/matchbin_selectors.hpp b/include/emp/matching/matchbin_selectors.hpp index 1e7057e5c5..14986259c1 100644 --- a/include/emp/matching/matchbin_selectors.hpp +++ b/include/emp/matching/matchbin_selectors.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/matching/selectors_static/RankedSelector.hpp b/include/emp/matching/selectors_static/RankedSelector.hpp index a3d339e45d..fb2bd71330 100644 --- a/include/emp/matching/selectors_static/RankedSelector.hpp +++ b/include/emp/matching/selectors_static/RankedSelector.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "../../base/vector.hpp" #include "../../datastructs/SmallVector.hpp" diff --git a/include/emp/math/Distribution.hpp b/include/emp/math/Distribution.hpp index 0f82d90a47..45666e1ca1 100644 --- a/include/emp/math/Distribution.hpp +++ b/include/emp/math/Distribution.hpp @@ -27,6 +27,8 @@ #ifndef EMP_MATH_DISTRIBUTION_HPP_INCLUDE #define EMP_MATH_DISTRIBUTION_HPP_INCLUDE +#include + #include "../datastructs/UnorderedIndexMap.hpp" #include "Random.hpp" diff --git a/include/emp/math/Fraction.hpp b/include/emp/math/Fraction.hpp index d53eabbeec..94af61d7dd 100644 --- a/include/emp/math/Fraction.hpp +++ b/include/emp/math/Fraction.hpp @@ -11,6 +11,8 @@ #ifndef EMP_MATH_FRACTION_HPP_INCLUDE #define EMP_MATH_FRACTION_HPP_INCLUDE +#include + #include "math.hpp" namespace emp { diff --git a/include/emp/math/Random.hpp b/include/emp/math/Random.hpp index 8b915bba4e..bcd9d58275 100644 --- a/include/emp/math/Random.hpp +++ b/include/emp/math/Random.hpp @@ -13,9 +13,11 @@ #include #include +#include #include #include #include +#include #include "../base/assert.hpp" #include "../base/Ptr.hpp" @@ -88,6 +90,10 @@ namespace emp { weyl_state *= 2; // Make sure starting state is even. + // Reset other internal state + value = 0; + expRV = 0.0; + Get(); // Prime the new sequence by skipping the first number. } diff --git a/include/emp/math/Range.hpp b/include/emp/math/Range.hpp index 225276fc25..6eeb300968 100644 --- a/include/emp/math/Range.hpp +++ b/include/emp/math/Range.hpp @@ -12,6 +12,7 @@ #define EMP_MATH_RANGE_HPP_INCLUDE #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/math/combos.hpp b/include/emp/math/combos.hpp index 0327fff62b..7ddbfd6c92 100644 --- a/include/emp/math/combos.hpp +++ b/include/emp/math/combos.hpp @@ -21,6 +21,7 @@ #define EMP_MATH_COMBOS_HPP_INCLUDE #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/math/distances.hpp b/include/emp/math/distances.hpp index 3407dc83f9..87b7bef485 100644 --- a/include/emp/math/distances.hpp +++ b/include/emp/math/distances.hpp @@ -11,6 +11,8 @@ #ifndef EMP_MATH_DISTANCES_HPP_INCLUDE #define EMP_MATH_DISTANCES_HPP_INCLUDE +#include + #include "../meta/type_traits.hpp" #include "math.hpp" diff --git a/include/emp/math/math.hpp b/include/emp/math/math.hpp index db9ca895cb..a0f3723834 100644 --- a/include/emp/math/math.hpp +++ b/include/emp/math/math.hpp @@ -14,8 +14,10 @@ #include #include +#include #include #include +#include #include "../base/assert.hpp" #include "../meta/reflection.hpp" diff --git a/include/emp/math/random_utils.hpp b/include/emp/math/random_utils.hpp index 7a8aaec4df..5ebd5090b7 100644 --- a/include/emp/math/random_utils.hpp +++ b/include/emp/math/random_utils.hpp @@ -12,6 +12,7 @@ #define EMP_MATH_RANDOM_UTILS_HPP_INCLUDE #include +#include #include "../base/vector.hpp" #include "../bits/BitVector.hpp" diff --git a/include/emp/math/sequence_utils.hpp b/include/emp/math/sequence_utils.hpp index adc4dd5ba2..a948a692bd 100644 --- a/include/emp/math/sequence_utils.hpp +++ b/include/emp/math/sequence_utils.hpp @@ -14,6 +14,8 @@ #ifndef EMP_MATH_SEQUENCE_UTILS_HPP_INCLUDE #define EMP_MATH_SEQUENCE_UTILS_HPP_INCLUDE +#include + #include "../base/notify.hpp" #include "../base/vector.hpp" #include "../tools/string_utils.hpp" diff --git a/include/emp/math/spatial_stats.hpp b/include/emp/math/spatial_stats.hpp index f471d142ff..28ab32d6cc 100644 --- a/include/emp/math/spatial_stats.hpp +++ b/include/emp/math/spatial_stats.hpp @@ -12,6 +12,7 @@ #define EMP_MATH_SPATIAL_STATS_HPP_INCLUDE #include +#include #include "../base/vector.hpp" #include "../Evolve/World.hpp" diff --git a/include/emp/meta/ConceptWrapper.hpp b/include/emp/meta/ConceptWrapper.hpp index 2854cd9ef6..7d07212032 100644 --- a/include/emp/meta/ConceptWrapper.hpp +++ b/include/emp/meta/ConceptWrapper.hpp @@ -97,6 +97,7 @@ #ifndef EMP_META_CONCEPTWRAPPER_HPP_INCLUDE #define EMP_META_CONCEPTWRAPPER_HPP_INCLUDE +#include #include #include diff --git a/include/emp/meta/TypeID.hpp b/include/emp/meta/TypeID.hpp index fbad14a1d4..e0260cdde6 100644 --- a/include/emp/meta/TypeID.hpp +++ b/include/emp/meta/TypeID.hpp @@ -68,7 +68,9 @@ #define EMP_META_TYPEID_HPP_INCLUDE #include +#include #include +#include #include #include "../base/Ptr.hpp" diff --git a/include/emp/meta/TypePack.hpp b/include/emp/meta/TypePack.hpp index 74f38a8647..0b7a73fccf 100644 --- a/include/emp/meta/TypePack.hpp +++ b/include/emp/meta/TypePack.hpp @@ -69,6 +69,8 @@ #ifndef EMP_META_TYPEPACK_HPP_INCLUDE #define EMP_META_TYPEPACK_HPP_INCLUDE +#include + #include "meta.hpp" namespace emp { diff --git a/include/emp/meta/ValPack.hpp b/include/emp/meta/ValPack.hpp index a8b446be3e..0aaa21fd14 100644 --- a/include/emp/meta/ValPack.hpp +++ b/include/emp/meta/ValPack.hpp @@ -12,11 +12,12 @@ #ifndef EMP_META_VALPACK_HPP_INCLUDE #define EMP_META_VALPACK_HPP_INCLUDE +#include +#include +#include #include "meta.hpp" -#include -#include namespace emp { diff --git a/include/emp/meta/meta.hpp b/include/emp/meta/meta.hpp index f61bec721c..d245963d25 100644 --- a/include/emp/meta/meta.hpp +++ b/include/emp/meta/meta.hpp @@ -16,6 +16,7 @@ #define EMP_META_META_HPP_INCLUDE #include +#include #include #include diff --git a/include/emp/meta/type_traits.hpp b/include/emp/meta/type_traits.hpp index 268053bae1..aa40599953 100644 --- a/include/emp/meta/type_traits.hpp +++ b/include/emp/meta/type_traits.hpp @@ -11,8 +11,10 @@ #define EMP_META_TYPE_TRAITS_HPP_INCLUDE +#include #include #include +#include #include #include #include diff --git a/include/emp/prefab/ConfigPanel.hpp b/include/emp/prefab/ConfigPanel.hpp index 7c6b5e3916..fa8822c393 100644 --- a/include/emp/prefab/ConfigPanel.hpp +++ b/include/emp/prefab/ConfigPanel.hpp @@ -11,6 +11,7 @@ #define EMP_PREFAB_CONFIGPANEL_HPP_INCLUDE #include +#include #include "../datastructs/set_utils.hpp" #include "../tools/string_utils.hpp" diff --git a/include/emp/scholar/Author.hpp b/include/emp/scholar/Author.hpp index dd7ee5ea6d..dec00b5a1a 100644 --- a/include/emp/scholar/Author.hpp +++ b/include/emp/scholar/Author.hpp @@ -16,6 +16,7 @@ #ifndef EMP_SCHOLAR_AUTHOR_HPP_INCLUDE #define EMP_SCHOLAR_AUTHOR_HPP_INCLUDE +#include #include #include "../compiler/Lexer.hpp" diff --git a/include/emp/scholar/Citation.hpp b/include/emp/scholar/Citation.hpp index 15d90fcc65..0035337979 100644 --- a/include/emp/scholar/Citation.hpp +++ b/include/emp/scholar/Citation.hpp @@ -12,6 +12,7 @@ #include #include +#include #include #include "../base/map.hpp" diff --git a/include/emp/testing/unit_tests.hpp b/include/emp/testing/unit_tests.hpp index 1fd1440710..b4a4c68b3f 100644 --- a/include/emp/testing/unit_tests.hpp +++ b/include/emp/testing/unit_tests.hpp @@ -19,6 +19,7 @@ #include #include +#include #include "../config/command_line.hpp" #include "../meta/macros.hpp" diff --git a/include/emp/tools/SolveState.hpp b/include/emp/tools/SolveState.hpp index 933107a75e..c3916102f1 100644 --- a/include/emp/tools/SolveState.hpp +++ b/include/emp/tools/SolveState.hpp @@ -11,9 +11,9 @@ #ifndef EMP_TOOLS_SOLVESTATE_HPP_INCLUDE #define EMP_TOOLS_SOLVESTATE_HPP_INCLUDE +#include #include "../base/assert.hpp" - #include "../bits/BitVector.hpp" namespace emp { diff --git a/include/emp/tools/TypeTracker.hpp b/include/emp/tools/TypeTracker.hpp index bb0b8b3dcb..3512f57e29 100644 --- a/include/emp/tools/TypeTracker.hpp +++ b/include/emp/tools/TypeTracker.hpp @@ -21,6 +21,7 @@ #ifndef EMP_TOOLS_TYPETRACKER_HPP_INCLUDE #define EMP_TOOLS_TYPETRACKER_HPP_INCLUDE +#include #include #include "../base/array.hpp" diff --git a/include/emp/tools/attrs.hpp b/include/emp/tools/attrs.hpp index b1dcbcaf17..3cba605d92 100644 --- a/include/emp/tools/attrs.hpp +++ b/include/emp/tools/attrs.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/tools/hash_namify.hpp b/include/emp/tools/hash_namify.hpp index b7a89346d4..a24a11b8e4 100644 --- a/include/emp/tools/hash_namify.hpp +++ b/include/emp/tools/hash_namify.hpp @@ -10,6 +10,7 @@ #ifndef EMP_TOOLS_HASH_NAMIFY_HPP_INCLUDE #define EMP_TOOLS_HASH_NAMIFY_HPP_INCLUDE +#include #include #include "../base/vector.hpp" diff --git a/include/emp/tools/string_utils.hpp b/include/emp/tools/string_utils.hpp index c64be4bd42..d5ef9c26df 100644 --- a/include/emp/tools/string_utils.hpp +++ b/include/emp/tools/string_utils.hpp @@ -229,6 +229,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/tools/unique.hpp b/include/emp/tools/unique.hpp index 50fbc6911f..afe5830b5d 100644 --- a/include/emp/tools/unique.hpp +++ b/include/emp/tools/unique.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "../base/assert.hpp" diff --git a/include/emp/web/Animate.hpp b/include/emp/web/Animate.hpp index e45039136f..40dbfdd9f2 100644 --- a/include/emp/web/Animate.hpp +++ b/include/emp/web/Animate.hpp @@ -15,8 +15,8 @@ #ifndef EMP_WEB_ANIMATE_HPP_INCLUDE #define EMP_WEB_ANIMATE_HPP_INCLUDE - #include +#include #include "../base/assert.hpp" #include "../base/vector.hpp" diff --git a/include/emp/web/Button.hpp b/include/emp/web/Button.hpp index 5919d0f9d2..87f37fd4dd 100644 --- a/include/emp/web/Button.hpp +++ b/include/emp/web/Button.hpp @@ -30,6 +30,8 @@ #ifndef EMP_WEB_BUTTON_HPP_INCLUDE #define EMP_WEB_BUTTON_HPP_INCLUDE +#include + #include "init.hpp" #include "Widget.hpp" diff --git a/include/emp/web/CanvasShape.hpp b/include/emp/web/CanvasShape.hpp index 59d9c6ce07..e29bf952c7 100644 --- a/include/emp/web/CanvasShape.hpp +++ b/include/emp/web/CanvasShape.hpp @@ -16,7 +16,7 @@ #ifndef EMP_WEB_CANVASSHAPE_HPP_INCLUDE #define EMP_WEB_CANVASSHAPE_HPP_INCLUDE - +#include #include #include "../base/vector.hpp" diff --git a/include/emp/web/FileInput.hpp b/include/emp/web/FileInput.hpp index 268f7a7097..33d4b8253c 100644 --- a/include/emp/web/FileInput.hpp +++ b/include/emp/web/FileInput.hpp @@ -12,6 +12,7 @@ #ifndef EMP_WEB_FILEINPUT_HPP_INCLUDE #define EMP_WEB_FILEINPUT_HPP_INCLUDE +#include #include #include diff --git a/include/emp/web/Input.hpp b/include/emp/web/Input.hpp index b22d03b6b7..606daaaa53 100644 --- a/include/emp/web/Input.hpp +++ b/include/emp/web/Input.hpp @@ -30,6 +30,7 @@ #ifndef EMP_WEB_INPUT_HPP_INCLUDE #define EMP_WEB_INPUT_HPP_INCLUDE +#include #include "Widget.hpp" diff --git a/include/emp/web/JSWrap.hpp b/include/emp/web/JSWrap.hpp index 5526d45441..381d8fcdde 100644 --- a/include/emp/web/JSWrap.hpp +++ b/include/emp/web/JSWrap.hpp @@ -40,7 +40,9 @@ #define EMP_WEB_JSWRAP_HPP_INCLUDE #include +#include #include +#include #include #include diff --git a/include/emp/web/KeypressManager.hpp b/include/emp/web/KeypressManager.hpp index d83ec0f00d..4868aa201a 100644 --- a/include/emp/web/KeypressManager.hpp +++ b/include/emp/web/KeypressManager.hpp @@ -43,6 +43,7 @@ #ifndef EMP_WEB_KEYPRESSMANAGER_HPP_INCLUDE #define EMP_WEB_KEYPRESSMANAGER_HPP_INCLUDE +#include #include #include #include diff --git a/include/emp/web/Listeners.hpp b/include/emp/web/Listeners.hpp index 43fabef042..bec13a4908 100644 --- a/include/emp/web/Listeners.hpp +++ b/include/emp/web/Listeners.hpp @@ -19,6 +19,7 @@ #include "../tools/string_utils.hpp" #include +#include #include namespace emp { diff --git a/include/emp/web/RawImage.hpp b/include/emp/web/RawImage.hpp index 3e4f453c68..8d6fb21f8e 100644 --- a/include/emp/web/RawImage.hpp +++ b/include/emp/web/RawImage.hpp @@ -12,6 +12,7 @@ #include #include +#include #include #include diff --git a/include/emp/web/Selector.hpp b/include/emp/web/Selector.hpp index a63fc4f838..8dbf609e9a 100644 --- a/include/emp/web/Selector.hpp +++ b/include/emp/web/Selector.hpp @@ -24,6 +24,7 @@ #ifndef EMP_WEB_SELECTOR_HPP_INCLUDE #define EMP_WEB_SELECTOR_HPP_INCLUDE +#include #include "../base/vector.hpp" diff --git a/include/emp/web/Style.hpp b/include/emp/web/Style.hpp index 73a3f032bd..567d364656 100644 --- a/include/emp/web/Style.hpp +++ b/include/emp/web/Style.hpp @@ -20,6 +20,7 @@ #include #include +#include #include namespace emp { diff --git a/include/emp/web/Table.hpp b/include/emp/web/Table.hpp index 487e483e15..cab21ca3bf 100644 --- a/include/emp/web/Table.hpp +++ b/include/emp/web/Table.hpp @@ -27,6 +27,8 @@ #ifndef EMP_WEB_TABLE_HPP_INCLUDE #define EMP_WEB_TABLE_HPP_INCLUDE +#include + #include "../base/vector.hpp" #include "Div.hpp" diff --git a/include/emp/web/Text.hpp b/include/emp/web/Text.hpp index 1e28d868c9..84e5f2a65f 100644 --- a/include/emp/web/Text.hpp +++ b/include/emp/web/Text.hpp @@ -15,6 +15,8 @@ #ifndef EMP_WEB_TEXT_HPP_INCLUDE #define EMP_WEB_TEXT_HPP_INCLUDE +#include + #include "../datastructs/DynamicString.hpp" #include "Widget.hpp" diff --git a/include/emp/web/TextArea.hpp b/include/emp/web/TextArea.hpp index d866ab46bc..80aa676919 100644 --- a/include/emp/web/TextArea.hpp +++ b/include/emp/web/TextArea.hpp @@ -13,6 +13,8 @@ #ifndef EMP_WEB_TEXTAREA_HPP_INCLUDE #define EMP_WEB_TEXTAREA_HPP_INCLUDE +#include + #include "Widget.hpp" namespace emp { diff --git a/include/emp/web/Tween.hpp b/include/emp/web/Tween.hpp index b832f01960..0bd380b141 100644 --- a/include/emp/web/Tween.hpp +++ b/include/emp/web/Tween.hpp @@ -32,9 +32,9 @@ #ifndef EMP_WEB_TWEEN_HPP_INCLUDE #define EMP_WEB_TWEEN_HPP_INCLUDE +#include #include "emfunctions.hpp" - #include "Widget.hpp" diff --git a/include/emp/web/Widget.hpp b/include/emp/web/Widget.hpp index afdc243a81..5bf0a75b91 100644 --- a/include/emp/web/Widget.hpp +++ b/include/emp/web/Widget.hpp @@ -33,6 +33,7 @@ #define EMP_WEB_WIDGET_HPP_INCLUDE +#include #include #include "../base/error.hpp" diff --git a/include/emp/web/_MochaTestRunner.hpp b/include/emp/web/_MochaTestRunner.hpp index 14449b2e36..220968f261 100644 --- a/include/emp/web/_MochaTestRunner.hpp +++ b/include/emp/web/_MochaTestRunner.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/include/emp/web/_TableCell.hpp b/include/emp/web/_TableCell.hpp index 6d3f037e97..535a973f75 100644 --- a/include/emp/web/_TableCell.hpp +++ b/include/emp/web/_TableCell.hpp @@ -12,6 +12,8 @@ #ifndef EMP_WEB__TABLECELL_HPP_INCLUDE #define EMP_WEB__TABLECELL_HPP_INCLUDE +#include + #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace emp { diff --git a/include/emp/web/_TableCol.hpp b/include/emp/web/_TableCol.hpp index daeaa86e93..d438f10014 100644 --- a/include/emp/web/_TableCol.hpp +++ b/include/emp/web/_TableCol.hpp @@ -12,6 +12,8 @@ #ifndef EMP_WEB__TABLECOL_HPP_INCLUDE #define EMP_WEB__TABLECOL_HPP_INCLUDE +#include + #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace emp { diff --git a/include/emp/web/_TableColGroup.hpp b/include/emp/web/_TableColGroup.hpp index c3b4eb7d09..f0ec97fe57 100644 --- a/include/emp/web/_TableColGroup.hpp +++ b/include/emp/web/_TableColGroup.hpp @@ -12,6 +12,8 @@ #ifndef EMP_WEB__TABLECOLGROUP_HPP_INCLUDE #define EMP_WEB__TABLECOLGROUP_HPP_INCLUDE +#include + #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace emp { diff --git a/include/emp/web/_TableRow.hpp b/include/emp/web/_TableRow.hpp index 16289f02ee..88cd7003f4 100644 --- a/include/emp/web/_TableRow.hpp +++ b/include/emp/web/_TableRow.hpp @@ -12,6 +12,8 @@ #ifndef EMP_WEB__TABLEROW_HPP_INCLUDE #define EMP_WEB__TABLEROW_HPP_INCLUDE +#include + #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace emp { diff --git a/include/emp/web/_TableRowGroup.hpp b/include/emp/web/_TableRowGroup.hpp index 354299d91c..e18b0deb7a 100644 --- a/include/emp/web/_TableRowGroup.hpp +++ b/include/emp/web/_TableRowGroup.hpp @@ -12,6 +12,8 @@ #ifndef EMP_WEB__TABLEROWGROUP_HPP_INCLUDE #define EMP_WEB__TABLEROWGROUP_HPP_INCLUDE +#include + #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace emp { diff --git a/include/emp/web/canvas_utils.hpp b/include/emp/web/canvas_utils.hpp index d6018050f8..888786ca0b 100644 --- a/include/emp/web/canvas_utils.hpp +++ b/include/emp/web/canvas_utils.hpp @@ -13,6 +13,8 @@ #ifndef EMP_WEB_CANVAS_UTILS_HPP_INCLUDE #define EMP_WEB_CANVAS_UTILS_HPP_INCLUDE +#include + #include "../base/vector.hpp" #include "../bits/BitMatrix.hpp" #include "../Evolve/StateGrid.hpp" diff --git a/include/emp/web/color_map.hpp b/include/emp/web/color_map.hpp index db559d58aa..86b2035404 100644 --- a/include/emp/web/color_map.hpp +++ b/include/emp/web/color_map.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include diff --git a/include/emp/web/d3/axis.hpp b/include/emp/web/d3/axis.hpp index 93dbfb4808..0df1f84ba3 100644 --- a/include/emp/web/d3/axis.hpp +++ b/include/emp/web/d3/axis.hpp @@ -10,6 +10,8 @@ #ifndef EMP_WEB_D3_AXIS_HPP_INCLUDE #define EMP_WEB_D3_AXIS_HPP_INCLUDE +#include + #include "../../tools/string_utils.hpp" #include "../js_utils.hpp" diff --git a/include/emp/web/d3/dataset.hpp b/include/emp/web/d3/dataset.hpp index 01e31a35c5..e736d0d34c 100644 --- a/include/emp/web/d3/dataset.hpp +++ b/include/emp/web/d3/dataset.hpp @@ -10,7 +10,9 @@ #ifndef EMP_WEB_D3_DATASET_HPP_INCLUDE #define EMP_WEB_D3_DATASET_HPP_INCLUDE +#include #include +#include #include "d3_init.hpp" diff --git a/include/emp/web/d3/histogram.hpp b/include/emp/web/d3/histogram.hpp index 9d98995261..1342cab29d 100644 --- a/include/emp/web/d3/histogram.hpp +++ b/include/emp/web/d3/histogram.hpp @@ -10,6 +10,8 @@ #ifndef EMP_WEB_D3_HISTOGRAM_HPP_INCLUDE #define EMP_WEB_D3_HISTOGRAM_HPP_INCLUDE +#include + #include "../../base/vector.hpp" #include "d3_init.hpp" #include "dataset.hpp" diff --git a/include/emp/web/d3/scales.hpp b/include/emp/web/d3/scales.hpp index 0b80faa2d3..29bf38689b 100644 --- a/include/emp/web/d3/scales.hpp +++ b/include/emp/web/d3/scales.hpp @@ -10,6 +10,8 @@ #ifndef EMP_WEB_D3_SCALES_HPP_INCLUDE #define EMP_WEB_D3_SCALES_HPP_INCLUDE +#include + #include "d3_init.hpp" #include "utils.hpp" diff --git a/include/emp/web/d3/selection.hpp b/include/emp/web/d3/selection.hpp index 588261e676..9fb4edf184 100644 --- a/include/emp/web/d3/selection.hpp +++ b/include/emp/web/d3/selection.hpp @@ -15,6 +15,7 @@ #include "utils.hpp" #include +#include #include #include #include diff --git a/include/emp/web/d3/svg_shapes.hpp b/include/emp/web/d3/svg_shapes.hpp index b0860f3cc1..0c9fa1ccca 100644 --- a/include/emp/web/d3/svg_shapes.hpp +++ b/include/emp/web/d3/svg_shapes.hpp @@ -10,6 +10,8 @@ #ifndef EMP_WEB_D3_SVG_SHAPES_HPP_INCLUDE #define EMP_WEB_D3_SVG_SHAPES_HPP_INCLUDE +#include + #include "../js_utils.hpp" #include "d3_init.hpp" diff --git a/include/emp/web/d3/utils.hpp b/include/emp/web/d3/utils.hpp index b5d315dc71..c3632e2463 100644 --- a/include/emp/web/d3/utils.hpp +++ b/include/emp/web/d3/utils.hpp @@ -10,6 +10,7 @@ #ifndef EMP_WEB_D3_UTILS_HPP_INCLUDE #define EMP_WEB_D3_UTILS_HPP_INCLUDE +#include #include #include diff --git a/include/emp/web/emfunctions.hpp b/include/emp/web/emfunctions.hpp index 1602d8041c..c7074536b7 100644 --- a/include/emp/web/emfunctions.hpp +++ b/include/emp/web/emfunctions.hpp @@ -10,6 +10,7 @@ #ifndef EMP_WEB_EMFUNCTIONS_HPP_INCLUDE #define EMP_WEB_EMFUNCTIONS_HPP_INCLUDE +#include #include #include "../debug/alert.hpp" diff --git a/include/emp/web/events.hpp b/include/emp/web/events.hpp index 41450a855c..91b5d31f57 100644 --- a/include/emp/web/events.hpp +++ b/include/emp/web/events.hpp @@ -18,6 +18,7 @@ #ifndef EMP_WEB_EVENTS_HPP_INCLUDE #define EMP_WEB_EVENTS_HPP_INCLUDE +#include #include #include "JSWrap.hpp" diff --git a/include/emp/web/js_utils.hpp b/include/emp/web/js_utils.hpp index 0c4cd97f15..44b4a82a05 100644 --- a/include/emp/web/js_utils.hpp +++ b/include/emp/web/js_utils.hpp @@ -11,6 +11,7 @@ #define EMP_WEB_JS_UTILS_HPP_INCLUDE #include +#include #include #include diff --git a/tests/math/Random.cpp b/tests/math/Random.cpp index eb10e91691..4ae04b43b8 100644 --- a/tests/math/Random.cpp +++ b/tests/math/Random.cpp @@ -89,7 +89,7 @@ TEST_CASE("Test Random", "[math]") REQUIRE(b2_result < 50); emp::RandomStdAdaptor randomStd(rnd); - REQUIRE(randomStd(4) == 1); + REQUIRE(randomStd(4) == 3); REQUIRE(rnd.GetGeometric(1) == 1); // REQUIRE(rnd.GetGeometric(0) == std::numeric_limits::infinity()); @@ -312,3 +312,48 @@ TEST_CASE("Another Test random", "[math]") REQUIRE(v.first + v.second == 0); } } + +TEST_CASE("Calling ResetSeed should reset all generator internal state", "[math]") { + + SECTION("Test internal 'value'") { + // Get Seed + emp::Random rnd(-1); // Initialize without a seed + rnd.ResetSeed(5); + REQUIRE(rnd.GetSeed() == 5); + + emp::vector sequence_a; + for (size_t i = 0; i < 10; ++i) { + sequence_a.emplace_back(rnd.GetInt(10000)); + } + + rnd.ResetSeed(5); + emp::vector sequence_b; + for (size_t i = 0; i < 10; ++i) { + sequence_b.emplace_back(rnd.GetInt(10000)); + } + + // Tests internal 'value' + REQUIRE(sequence_a == sequence_b); + } + + SECTION("Test internal expV") { + emp::Random rnd(10); + rnd.GetRandNormal(); // Adjusts expV with time-based seed generator + + rnd.ResetSeed(4); // Should reset expV + emp::vector norm_seq_a; + for (size_t i = 0; i < 1000; ++i) { + norm_seq_a.emplace_back(rnd.GetRandNormal()); + } + + rnd.ResetSeed(4); + emp::vector norm_seq_b; + for (size_t i = 0; i < 1000; ++i) { + norm_seq_b.emplace_back(rnd.GetRandNormal()); + } + + // Tests internal expV + REQUIRE(norm_seq_a == norm_seq_b); + } + +}