diff --git a/.github/config/codechecker.skip b/.github/config/codechecker.skip new file mode 100644 index 0000000..a9cddab --- /dev/null +++ b/.github/config/codechecker.skip @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +-${GITHUB_WORKSPACE}/include/fpgalign/contrib/* ++${GITHUB_WORKSPACE}/* +-* diff --git a/.github/config/codechecker.yml b/.github/config/codechecker.yml new file mode 100644 index 0000000..233d0ad --- /dev/null +++ b/.github/config/codechecker.yml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +analyze: + - --enable=performance + - --enable=bugprone + - --enable=prefix:clang-diagnostic-shadow + - --disable=bugprone-easily-swappable-parameters + - --disable=clang-diagnostic-implicit-int-float-conversion + - --disable=clang-diagnostic-float-conversion + - --disable=clang-diagnostic-implicit-int-conversion + - --disable=bugprone-exception-escape + - --disable=bugprone-narrowing-conversions + - --disable=deadcode.DeadStores + - --skip=${GITHUB_WORKSPACE}/.github/config/codechecker.skip + - --clean + +parse: + - --export=html + - --output=./html + - --skip=${GITHUB_WORKSPACE}/.github/config/codechecker.skip + - --trim-path-prefix=${GITHUB_WORKSPACE}/ diff --git a/.github/config/custom.imp b/.github/config/custom.imp new file mode 100644 index 0000000..b9ebdbc --- /dev/null +++ b/.github/config/custom.imp @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +[ + { "include": [ "", "public", "", "public"] } +] diff --git a/.github/workflows/cron_codechecker.yml b/.github/workflows/cron_codechecker.yml new file mode 100644 index 0000000..10e8d58 --- /dev/null +++ b/.github/workflows/cron_codechecker.yml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +name: CodeChecker + +on: + schedule: + - cron: "0 4 * * MON" + workflow_dispatch: + +concurrency: + group: codechecker-actions + cancel-in-progress: true + +env: + TZ: Europe/Berlin + +defaults: + run: + shell: bash -Eexuo pipefail {0} + +jobs: + build: + name: CodeChecker + runs-on: ubuntu-latest + if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' + container: + image: ghcr.io/seqan/codechecker + steps: + - name: Run CodeChecker + uses: seqan/actions/codechecker@main + with: + deploy_host: ${{ secrets.DEPLOY_HOST }} + deploy_user: ${{ secrets.DEPLOY_USER }} + deploy_ssh_key: ${{ secrets.DEPLOY_SSH_KEY }} + deploy_path: ${{ secrets.DEPLOY_CODECHECKER_PATH }} diff --git a/.github/workflows/cron_codeql.yml b/.github/workflows/cron_codeql.yml new file mode 100644 index 0000000..51966f6 --- /dev/null +++ b/.github/workflows/cron_codeql.yml @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +name: CodeQL + +on: + schedule: + - cron: "0 6 * * SAT" + workflow_dispatch: + +concurrency: + group: codeql-${{ github.ref }} + cancel-in-progress: true + +env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false + SHARG_NO_VERSION_CHECK: 1 + TZ: Europe/Berlin + +defaults: + run: + shell: bash -Eeuxo pipefail {0} + +jobs: + codeql: + name: CodeQL + runs-on: ubuntu-latest + permissions: + security-events: write + container: + image: ghcr.io/seqan/gcc-second-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: cpp + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:cpp" diff --git a/.github/workflows/cron_cpm.yml b/.github/workflows/cron_cpm.yml new file mode 100644 index 0000000..81053db --- /dev/null +++ b/.github/workflows/cron_cpm.yml @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +name: Update CPM + +on: + schedule: + - cron: "0 12 * * SAT" + workflow_dispatch: + +env: + TZ: Europe/Berlin + +concurrency: + group: update-cpm-actions + cancel-in-progress: true + +jobs: + update_cpm: + name: Update CPM + runs-on: ubuntu-latest + timeout-minutes: 15 + if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' + steps: + - name: Run update CPM + uses: seqan/actions/update_cpm_package_lock@main + with: + token: ${{ secrets.SEQAN_ACTIONS_PAT }} + gpg_key: ${{ secrets.SEQAN_ACTIONS_GPG_KEY }} + gpg_passphrase: ${{ secrets.SEQAN_ACTIONS_GPG_PASSPHRASE }} + package_lock_file: cmake/package-lock.cmake diff --git a/.github/workflows/cron_iwyu.yml b/.github/workflows/cron_iwyu.yml new file mode 100644 index 0000000..9628bc1 --- /dev/null +++ b/.github/workflows/cron_iwyu.yml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +name: IWYU + +on: + schedule: + - cron: "0 4 * * MON" + workflow_dispatch: + +concurrency: + group: iwyu-actions + cancel-in-progress: true + +env: + TZ: Europe/Berlin + +defaults: + run: + shell: bash -Eexuo pipefail {0} + +jobs: + build: + name: IWYU + runs-on: ubuntu-latest + if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' + container: + image: ghcr.io/seqan/iwyu + steps: + - name: Run IWYU + uses: seqan/actions/iwyu@main + with: + configure_path: . + token: ${{ secrets.SEQAN_ACTIONS_PAT }} + gpg_key: ${{ secrets.SEQAN_ACTIONS_GPG_KEY }} + gpg_passphrase: ${{ secrets.SEQAN_ACTIONS_GPG_PASSPHRASE }} diff --git a/.github/workflows/cron_sanitizer.yml b/.github/workflows/cron_sanitizer.yml new file mode 100644 index 0000000..f19b7fb --- /dev/null +++ b/.github/workflows/cron_sanitizer.yml @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +name: Sanitizer + +on: + schedule: + - cron: "0 4 * * SAT" + workflow_dispatch: + +concurrency: + group: sanitizer-actions + cancel-in-progress: true + +env: + TZ: Europe/Berlin + TSAN_OPTIONS: ignore_noninstrumented_modules=1 + UBSAN_OPTIONS: print_stacktrace=1 + +defaults: + run: + shell: bash -Eeuxo pipefail {0} + +jobs: + build: + name: ${{ matrix.name }} ${{ matrix.build_type }} ${{ matrix.os }} + runs-on: ${{ matrix.os }} + if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' + env: + ASAN_OPTIONS: strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1:detect_leaks=${{ contains(matrix.os, 'macos') && '0' || '1' }} + strategy: + fail-fast: false + matrix: + name: [ASan, TSan, UBSan] + os: [ubuntu-latest, macos-latest] + build_type: [Release, RelWithDebInfo, Debug] + exclude: + - name: "TSan" + os: macos-latest + + include: + - name: "ASan" + cxx_flags: "-fno-omit-frame-pointer -fsanitize=address" + + - name: "TSan" + cxx_flags: "-fno-omit-frame-pointer -fsanitize=thread" + + - name: "UBSan" + os: macos-latest + cxx_flags: "-fno-omit-frame-pointer -fsanitize=undefined,float-divide-by-zero,implicit-conversion,local-bounds,nullability -Wno-pass-failed" + + - name: "UBSan" + os: macos-latest + build_type: Release + ctest_excludes: "-E tmp_directory_snippet_cmp_output" + + - name: "UBSan" + os: macos-latest + build_type: RelWithDebInfo + ctest_excludes: "-E tmp_directory_snippet_cmp_output" + + - name: "UBSan" + os: ubuntu-latest + cxx_flags: "-fno-omit-frame-pointer -fsanitize=undefined,float-divide-by-zero" + + - os: macos-latest + compiler: clang-latest + + - os: ubuntu-latest + compiler: gcc-latest + image: ghcr.io/seqan/gcc-latest + + - name: "TSan" + os: ubuntu-latest + compiler: clang-latest + image: ghcr.io/seqan/clang-latest + container: + image: ${{ matrix.image || '' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup compiler + if: contains(matrix.os, 'macos') + uses: seqan/actions/setup-compiler@main + with: + compiler: ${{ matrix.compiler }} + + - name: Configure tests + run: | + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" + make gtest_main + + - name: Build and run tests + working-directory: build + run: make -k check diff --git a/cmake/package-lock.cmake b/cmake/package-lock.cmake index 748e267..b30114d 100644 --- a/cmake/package-lock.cmake +++ b/cmake/package-lock.cmake @@ -88,7 +88,7 @@ CPMDeclarePackage (use_ccache # thresholding CPMDeclarePackage (thresholding NAME thresholding - URL "${PROJECT_SOURCE_DIR}/contrib/threshold.tar.gz" + URL "${PROJECT_SOURCE_DIR}/contrib/threshold.tar.gz" # main URL_HASH SHA256=4990c7fb9778a2fb8a19794b966d57496ca77bcd708b4cee3c93eea6e5b67d80 SYSTEM TRUE EXCLUDE_FROM_ALL TRUE diff --git a/include/fpgalign/argument_parsing.hpp b/include/fpgalign/argument_parsing.hpp index 142dfea..dfd624a 100644 --- a/include/fpgalign/argument_parsing.hpp +++ b/include/fpgalign/argument_parsing.hpp @@ -4,10 +4,11 @@ #pragma once -#include -#include +#include // for uint8_t +#include // for string +#include // for vector -#include +#include // for config enum class subcommand : uint8_t { diff --git a/include/fpgalign/config.hpp b/include/fpgalign/config.hpp index 7bd2775..d612339 100644 --- a/include/fpgalign/config.hpp +++ b/include/fpgalign/config.hpp @@ -4,7 +4,8 @@ #pragma once -#include +#include // for uint8_t, uint16_t, uint32_t +#include // for path struct config { diff --git a/include/fpgalign/contrib/minimiser_hash.hpp b/include/fpgalign/contrib/minimiser_hash.hpp index 3409d11..8b9cc46 100644 --- a/include/fpgalign/contrib/minimiser_hash.hpp +++ b/include/fpgalign/contrib/minimiser_hash.hpp @@ -9,7 +9,10 @@ #include +// IWYU pragma: begin_exports +#include #include +// IWYU pragma: end_exports // Same as seqan3::views::minimiser_hash, but optimized for dna4, with integrated adjust_seed diff --git a/include/fpgalign/meta.hpp b/include/fpgalign/meta.hpp index 8e2065b..35dd677 100644 --- a/include/fpgalign/meta.hpp +++ b/include/fpgalign/meta.hpp @@ -4,14 +4,17 @@ #pragma once -#include -#include -#include +#include // for size_t +#include // for uint8_t, uint32_t +#include // for basic_string, string +#include // for vector -#include +#include // for dna4 +#include // for set_format +#include // for field, fields +#include // for sequence_file_input, sequence_file_input_default_traits_dna -#include -#include +#include // for CEREAL_SERIALIZE_FUNCTION_NAME struct dna4_traits : seqan3::sequence_file_input_default_traits_dna { diff --git a/include/fpgalign/search/search.hpp b/include/fpgalign/search/search.hpp index c6829f8..95ec24f 100644 --- a/include/fpgalign/search/search.hpp +++ b/include/fpgalign/search/search.hpp @@ -4,9 +4,11 @@ #pragma once -#include -#include -#include +#include // for size_t + +#include // for config +#include // for slotted_cart_queue +#include // for meta namespace search { diff --git a/include/fpgalign/utility/fmindex.hpp b/include/fpgalign/utility/fmindex.hpp index 6eeae98..f7e1d29 100644 --- a/include/fpgalign/utility/fmindex.hpp +++ b/include/fpgalign/utility/fmindex.hpp @@ -4,9 +4,11 @@ #pragma once -#include +#include // for size_t -#include +#include // for BiFMIndex + +#include // for config namespace utility { diff --git a/src/argument_parsing.cpp b/src/argument_parsing.cpp index 63590b6..93ef436 100644 --- a/src/argument_parsing.cpp +++ b/src/argument_parsing.cpp @@ -2,9 +2,25 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include - -#include +#include // for find_if +#include // for from_chars +#include // for operator<<, operator>> +#include // for operator<<, quoted +#include // for operator<<, operator>> +#include // for operator+, basic_string, operator==, to_string, char_traits, string +#include // for basic_string_view, operator==, string_view +#include // for move +#include // for vector + +#include // for parser_meta_data +#include // for config +#include // for to_string +#include // for validation_error +#include // for parser +#include // for arithmetic_range_validator, input_file_validator, output_file_open_... + +#include // for parse_result, subcommand, parse_arguments +#include // for config namespace build { diff --git a/src/build/build.cpp b/src/build/build.cpp index d23b3c5..24f9f23 100644 --- a/src/build/build.cpp +++ b/src/build/build.cpp @@ -2,13 +2,17 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include -#include -#include - -#include -#include -#include +#include // for assert +#include // for char_traits, basic_istream, basic_ifstream, getline, operator>>, ifstream +#include // for basic_istringstream +#include // for basic_string, string +#include // for move +#include // for vector + +#include // for fmindex, ibf, build, parse_input +#include // for config +#include // for meta +#include // for store namespace build { diff --git a/src/build/fmindex.cpp b/src/build/fmindex.cpp index 8494955..612ee43 100644 --- a/src/build/fmindex.cpp +++ b/src/build/fmindex.cpp @@ -2,11 +2,28 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for __copy, copy +#include // for size_t +#include // for uint8_t +#include // for path +#include // for back_insert_iterator, back_inserter +#include // for transform_view, views, operator|, __pipeable, __fn, operat... +#include // for basic_string +#include // for get +#include // for vector -#include -#include -#include +#include // for to_rank +#include // for set_format +#include // for fields, field + +#include // for BiFMIndex + +#include // for fmindex +#include // for config +#include // for meta, seqfile_t +#include // for store +#include // for store +#include // for operator| namespace build { diff --git a/src/build/ibf.cpp b/src/build/ibf.cpp index 1273df7..9399d07 100644 --- a/src/build/ibf.cpp +++ b/src/build/ibf.cpp @@ -2,15 +2,27 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for __copy, copy +#include // for size_t +#include // for path +#include // for function +#include // for operator<<, quoted +#include // for basic_ostream, operator<<, basic_ios, cerr +#include // for basic_string, char_traits +#include // for vector -#include -#include +#include // for set_format +#include // for fields, field -#include -#include -#include -#include +#include // for insert_iterator, config +#include // for interleaved_bloom_filter + +#include // for ibf +#include // for colored_strings +#include // for config +#include // for minimiser_hash, operator|, minimiser_hash_fn, operator== +#include // for meta, seqfile_t +#include // for store namespace build { diff --git a/src/colored_strings.cpp b/src/colored_strings.cpp index bd22516..d82e49d 100644 --- a/src/colored_strings.cpp +++ b/src/colored_strings.cpp @@ -2,11 +2,14 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for memcmp +#include // for string, basic_string -#include +#include // for color, fg, format -#include +#include // for stderr_is_terminal + +#include // for colored_strings bool const colored_strings::cerr_is_terminal = sharg::detail::stderr_is_terminal(); diff --git a/src/fpgalign.cpp b/src/fpgalign.cpp index d8ad5d7..3025558 100644 --- a/src/fpgalign.cpp +++ b/src/fpgalign.cpp @@ -2,13 +2,16 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for exit +#include // for exception +#include // for char_traits, basic_ostream, operator<<, cerr +#include // for basic_string +#include // for vector -#include -#include -#include -#include -#include +#include // for parse_result, subcommand, parse_arguments +#include // for build +#include // for colored_strings +#include // for search int main(int argc, char ** argv) { diff --git a/src/search/do_alignment.cpp b/src/search/do_alignment.cpp index 1de85cf..29f6c34 100644 --- a/src/search/do_alignment.cpp +++ b/src/search/do_alignment.cpp @@ -2,12 +2,50 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include -#include -#include -#include +#include // for find_if +#include // for to_chars +#include // for size_t +#include // for uint8_t +#include // for path +#include // for __next, next +#include // for transform_view, __fn, tra... +#include // for basic_string +#include // for tuple, tuple_cat, tie +#include // for pair +#include // for vector -#include +#include // for cigar_from_alignment +#include // for edit_scheme +#include // for gap_cost_affine +#include // for method_global, free_end_g... +#include // for output_alignment, output_... +#include // for scoring_scheme +#include // for operator== +#include // for operator!= +#include // for matrix_major_order +#include // for align_pairwise +#include // for alignment_result +#include // for operator==, operator< +#include // for dna4 +#include // for operator== +#include // for operator| +#include // for get +#include // for get +#include // for operator== +#include // for operator|, operator&, ope... +#include // for algorithm_result_generato... +#include // for algorithm_executor_blocking +#include // for configuration, operator| +#include // for operator| +#include // for set_format +#include // for field, fields +#include // for sam_file_output +#include // for sequence_record + +#include // for config +#include // for span, cart_future, slotte... +#include // for meta +#include // for alignment_info, do_alignment namespace search { diff --git a/src/search/fmindex.cpp b/src/search/fmindex.cpp index f2af1b1..08f4918 100644 --- a/src/search/fmindex.cpp +++ b/src/search/fmindex.cpp @@ -2,12 +2,24 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include -#include +#include // for size_t +#include // for uint8_t +#include // for transform_view, __fn, transform, views +#include // for get +#include // for get +#include // for vector -#include -#include -#include +#include // for dna4 +#include // for sequence_record + +#include // for BiFMIndex +#include // for search + +#include // for config +#include // for slotted_cart_queue, cart_future, slot_id, span +#include // for meta +#include // for alignment_info, fmindex +#include // for load namespace search { diff --git a/src/search/ibf.cpp b/src/search/ibf.cpp index be19de0..d896c4b 100644 --- a/src/search/ibf.cpp +++ b/src/search/ibf.cpp @@ -2,17 +2,31 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include - -#include - -#include -#include - -#include -#include -#include -#include +#include // for __move, __shuffle, move, shuffle +#include // for size_t +#include // for uint64_t +#include // for path +#include // for back_insert_iterator, back_inserter, operator== +#include // for mt19937_64 +#include // for common_view, operator|, __fn, common, views +#include // for get +#include // for vector + +#include // for set_format +#include // for field, fields +#include // for sequence_record +#include // for shape, ungapped + +#include // for interleaved_bloom_filter + +#include // for config +#include // for minimiser_hash, operator==, operator|, minimiser_hash_fn +#include // for slotted_cart_queue, assert, slot_id +#include // for meta, seqfile_t, record_t +#include // for ibf +#include // for load +#include // for threshold +#include // for threshold_parameters namespace search { diff --git a/src/search/search.cpp b/src/search/search.cpp index 31657a7..7122667 100644 --- a/src/search/search.cpp +++ b/src/search/search.cpp @@ -2,9 +2,17 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include -#include -#include +#include // for size_t +#include // for basic_string +#include // for jthread +#include // for vector + +#include // for config +#include // for slotted_cart_queue +#include // for meta +#include // for alignment_info, do_alignment, fmindex, ibf, search +#include // for load +#include // for load namespace search { diff --git a/src/utility/fmindex.cpp b/src/utility/fmindex.cpp index 7433888..15784ef 100644 --- a/src/utility/fmindex.cpp +++ b/src/utility/fmindex.cpp @@ -2,13 +2,17 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for memcmp, size_t +#include // for path +#include // for basic_ifstream, basic_ofstream, basic_ios, ios, ifstream, ofstream -#include +#include // for format -#include +#include // for BinaryInputArchive, BinaryOutputArchive -#include +#include // for BiFMIndex +#include // for config +#include // for load, store namespace utility { diff --git a/src/utility/ibf.cpp b/src/utility/ibf.cpp index 4f9312c..675749c 100644 --- a/src/utility/ibf.cpp +++ b/src/utility/ibf.cpp @@ -2,13 +2,19 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for memcmp +#include // for path +#include // for basic_ifstream, basic_ofstream, basic_ios, ios, ifstream, ofstream +#include // for basic_string -#include +#include // for format -#include +#include // for interleaved_bloom_filter -#include +#include // for BinaryInputArchive, BinaryOutputArchive + +#include // for config +#include // for load, store namespace utility { diff --git a/src/utility/meta.cpp b/src/utility/meta.cpp index f063907..7a3ef6d 100644 --- a/src/utility/meta.cpp +++ b/src/utility/meta.cpp @@ -2,13 +2,19 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for memcmp +#include // for path +#include // for basic_ifstream, basic_ofstream, basic_ios, ios, ifstream, ofstream -#include +#include // for format -#include +#include // for BinaryInputArchive, BinaryOutputArchive +#include // IWYU pragma: keep +#include // IWYU pragma: keep -#include +#include // for config +#include // for meta +#include // for load, store namespace utility { diff --git a/src/utility/reference.cpp b/src/utility/reference.cpp index 248dc59..a397776 100644 --- a/src/utility/reference.cpp +++ b/src/utility/reference.cpp @@ -2,14 +2,20 @@ // SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik // SPDX-License-Identifier: BSD-3-Clause -#include +#include // for uint8_t +#include // for memcmp, size_t +#include // for path +#include // for basic_ifstream, basic_ofstream, basic_ios, ios, ifstream, ofstream +#include // for vector -#include +#include // for format -#include -#include +#include // for BinaryInputArchive, BinaryOutputArchive +#include // for specialization +#include // IWYU pragma: keep -#include +#include // for config +#include // for load, store namespace utility {