HIBF 1.0.0-rc.1
All Classes Namespaces Files Functions Variables Typedefs Friends Macros Modules Pages Concepts
build_data.hpp
1// SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
5#pragma once
6
7#include <atomic> // for atomic_fetch_add, atomic
8#include <cstddef> // for size_t
9#include <vector> // for vector
10
11#include <hibf/config.hpp> // for config
12#include <hibf/layout/graph.hpp> // for node_data
13#include <hibf/misc/timer.hpp> // for concurrent, timer
14
15namespace seqan::hibf::build
16{
17
22{
23 std::atomic<size_t> ibf_number{};
24
26
27 layout::graph ibf_graph{};
28
29 std::vector<double> fpr_correction{};
30
31 // Timers do not copy the stored duration upon copy construction/assignment
32 mutable concurrent_timer index_allocation_timer{};
33 mutable concurrent_timer user_bin_io_timer{};
34 mutable concurrent_timer merge_kmers_timer{};
35 mutable concurrent_timer fill_ibf_timer{};
36
37 size_t request_ibf_idx()
38 {
39 return std::atomic_fetch_add(&ibf_number, 1u);
40 }
41};
42
43} // namespace seqan::hibf::build
T atomic_fetch_add(T... args)
A timer with a thread-safe operator+=().
Definition timer.hpp:155
Implements seqan::hibf::layout::graph.
Contains information used for building.
Definition build_data.hpp:22
The configuration used to build an (H)IBF.
Definition config.hpp:75
Contains the layout graph structure.
Definition graph.hpp:25
Provides seqan::hibf::timer.