Skip to content

Commit

Permalink
Merge pull request #245 from paulsengroup/maintenance/refactor
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
robomics committed Sep 11, 2024
2 parents 1001623 + 53cc3ae commit 784477d
Show file tree
Hide file tree
Showing 20 changed files with 116 additions and 103 deletions.
2 changes: 1 addition & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ HeaderFilterRegex: ""
FormatStyle: none
CheckOptions:
- key: cppcoreguidelines-macro-usage.AllowedRegexp
value: "DISABLE_WARNING_.*"
value: "HICTK_DISABLE_WARNING_.*"
- key: misc-include-cleaner.IgnoreHeaders
value: "fmt/.*"
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
Expand Down
6 changes: 3 additions & 3 deletions src/hictk/metadata/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ inline void emplace_if_valid(std::string_view key, const T& value, toml::table&
if (key.empty()) {
return;
}
DISABLE_WARNING_PUSH
DISABLE_WARNING_BOOL_COMPARE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_BOOL_COMPARE
if (value <= std::numeric_limits<std::int64_t>::max()) {
buff.insert(key, static_cast<std::int64_t>(value));
} else {
emplace_if_valid(key, fmt::to_string(value), buff);
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
}

template <typename T, typename std::enable_if_t<std::is_floating_point_v<T>>* = nullptr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,11 @@ inline std::vector<std::uint64_t> BinTableFixed::compute_num_bins_prefix_sum(
const Reference &chroms, std::uint32_t bin_size, std::size_t bin_offset) {
assert(bin_size != 0);

DISABLE_WARNING_PUSH
DISABLE_WARNING_NULL_DEREF
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_NULL_DEREF
std::vector<std::uint64_t> prefix_sum(chroms.size() + 1);
prefix_sum.front() = bin_offset;
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

// I am using transform instead of inclusive_scan because the latter is not always available
std::transform(chroms.begin(), chroms.end(), prefix_sum.begin() + 1,
Expand Down
6 changes: 3 additions & 3 deletions src/libhictk/bin_table/include/hictk/impl/bin_table_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ inline auto BinTable::find_overlap(const GenomicInterval &query) const
return std::visit(
[&](const auto &t) {
auto its = t.find_overlap(query);
DISABLE_WARNING_PUSH
DISABLE_WARNING_MAYBE_UNINITIALIZED
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_MAYBE_UNINITIALIZED
return std::make_pair(iterator{its.first}, iterator{its.second});
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
},
_table);
}
Expand Down
63 changes: 33 additions & 30 deletions src/libhictk/common/include/hictk/suppress_warnings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,59 +13,62 @@

// Defines for MSVC
#ifdef _MSC_VER
#define DISABLE_WARNING_PUSH __pragma(warning(push))
#define DISABLE_WARNING_POP __pragma(warning(pop))
#define HICTK_DISABLE_WARNING_PUSH __pragma(warning(push))
#define HICTK_DISABLE_WARNING_POP __pragma(warning(pop))
#define DISABLE_WARNING(warningNumber) __pragma(warning(disable : warningNumber))

#define DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING(4806)
#define DISABLE_WARNING_DEPRECATED_DECLARATIONS DISABLE_WARNING(4996)
#define DISABLE_WARNING_MAYBE_UNINITIALIZED
#define DISABLE_WARNING_NULL_DEREF
#define DISABLE_WARNING_USELESS_CAST
#define DISABLE_WARNING_SIGN_COMPARE
#define DISABLE_WARNING_UNREACHABLE_CODE DISABLE_WARNING(4702)
#define HICTK_DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING(4806)
#define HICTK_DISABLE_WARNING_CONVERSION DISABLE_WARNING(C4244)
#define HICTK_DISABLE_WARNING_DEPRECATED_DECLARATIONS DISABLE_WARNING(4996)
#define HICTK_DISABLE_WARNING_MAYBE_UNINITIALIZED
#define HICTK_DISABLE_WARNING_NULL_DEREF
#define HICTK_DISABLE_WARNING_USELESS_CAST
#define HICTK_DISABLE_WARNING_SIGN_COMPARE
#define HICTK_DISABLE_WARNING_UNREACHABLE_CODE DISABLE_WARNING(4702)
#endif

// Defines for GCC and Clang
#if defined(__GNUC__) || defined(__clang__)
#define DO_PRAGMA(X) _Pragma(#X)
#define DISABLE_WARNING_PUSH DO_PRAGMA(GCC diagnostic push)
#define DISABLE_WARNING_POP DO_PRAGMA(GCC diagnostic pop)
#define HICTK_DISABLE_WARNING_PUSH DO_PRAGMA(GCC diagnostic push)
#define HICTK_DISABLE_WARNING_POP DO_PRAGMA(GCC diagnostic pop)
#define DISABLE_WARNING(warningName) DO_PRAGMA(GCC diagnostic ignored warningName)

#define DISABLE_WARNING_DEPRECATED_DECLARATIONS DISABLE_WARNING("-Wdeprecated-declarations")
#define DISABLE_WARNING_NULL_DEREF DISABLE_WARNING("-Wnull-dereference")
#define DISABLE_WARNING_SIGN_COMPARE DISABLE_WARNING("-Wsign-compare")
#define DISABLE_WARNING_UNREACHABLE_CODE
#define HICTK_DISABLE_WARNING_CONVERSION DISABLE_WARNING("-Wconversion")
#define HICTK_DISABLE_WARNING_DEPRECATED_DECLARATIONS DISABLE_WARNING("-Wdeprecated-declarations")
#define HICTK_DISABLE_WARNING_NULL_DEREF DISABLE_WARNING("-Wnull-dereference")
#define HICTK_DISABLE_WARNING_SIGN_COMPARE DISABLE_WARNING("-Wsign-compare")
#define HICTK_DISABLE_WARNING_UNREACHABLE_CODE
#endif

// Defines for GCC only
#if defined(__GNUC__) && !defined(__clang__)
#define DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING("-Wbool-compare")
#define DISABLE_WARNING_MAYBE_UNINITIALIZED DISABLE_WARNING("-Wmaybe-uninitialized")
#define DISABLE_WARNING_USELESS_CAST DISABLE_WARNING("-Wuseless-cast")
#define HICTK_DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING("-Wbool-compare")
#define HICTK_DISABLE_WARNING_MAYBE_UNINITIALIZED DISABLE_WARNING("-Wmaybe-uninitialized")
#define HICTK_DISABLE_WARNING_USELESS_CAST DISABLE_WARNING("-Wuseless-cast")
#endif

// Defines for Clang only
#ifdef __clang__
#define DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING("-Wtautological-constant-out-of-range-compare")
#define DISABLE_WARNING_MAYBE_UNINITIALIZED
#define DISABLE_WARNING_USELESS_CAST
#define HICTK_DISABLE_WARNING_BOOL_COMPARE DISABLE_WARNING("-Wtautological-constant-out-of-range-compare")
#define HICTK_DISABLE_WARNING_MAYBE_UNINITIALIZED
#define HICTK_DISABLE_WARNING_USELESS_CAST
#endif

// Defines for unknown/unsupported compilers
#if !defined(_MSC_VER) && !defined(__GNUC__) && !defined(__clang__)
#define DISABLE_WARNING
#define DISABLE_WARNING_PUSH
#define DISABLE_WARNING_POP
#define HICTK_DISABLE_WARNING_PUSH
#define HICTK_DISABLE_WARNING_POP

#define DISABLE_WARNING_BOOL_COMPARE
#define DISABLE_WARNING_DEPRECATED_DECLARATIONS
#define DISABLE_WARNING_MAYBE_UNINITIALIZED
#define DISABLE_WARNING_NULL_DEREF
#define DISABLE_WARNING_USELESS_CAST
#define DISABLE_WARNING_SIGN_COMPARE
#define DISABLE_WARNING_UNREACHABLE_CODE
#define HICTK_DISABLE_WARNING_BOOL_COMPARE
#define HICTK_DISABLE_WARNING_CONVERSION
#define HICTK_DISABLE_WARNING_DEPRECATED_DECLARATIONS
#define HICTK_DISABLE_WARNING_MAYBE_UNINITIALIZED
#define HICTK_DISABLE_WARNING_NULL_DEREF
#define HICTK_DISABLE_WARNING_USELESS_CAST
#define HICTK_DISABLE_WARNING_SIGN_COMPARE
#define HICTK_DISABLE_WARNING_UNREACHABLE_CODE
#endif

// NOLINTEND(cppcoreguidelines-macro-usage)
Expand Down
6 changes: 3 additions & 3 deletions src/libhictk/cooler/include/hictk/cooler/cooler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
// clang-format off
#include "hictk/suppress_warnings.hpp"
// clang-format on
DISABLE_WARNING_PUSH
DISABLE_WARNING_NULL_DEREF
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_NULL_DEREF
#include <highfive/H5File.hpp>
#include <highfive/H5Group.hpp>
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

#include <initializer_list>
#include <memory>
Expand Down
12 changes: 6 additions & 6 deletions src/libhictk/cooler/include/hictk/cooler/dataset.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

#include <cstddef>
#include <cstdint>
DISABLE_WARNING_PUSH
DISABLE_WARNING_NULL_DEREF
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_NULL_DEREF
#include <highfive/H5DataSet.hpp>
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
#include <highfive/H5DataSpace.hpp>
#include <highfive/H5DataType.hpp>
#include <highfive/H5PropertyList.hpp>
Expand Down Expand Up @@ -53,8 +53,8 @@ template <typename T>
inline constexpr bool is_atomic_buffer_v = is_atomic_buffer<T>::value;
} // namespace internal

DISABLE_WARNING_PUSH
DISABLE_WARNING_DEPRECATED_DECLARATIONS
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_DEPRECATED_DECLARATIONS
class Dataset {
using VariantBuffer = hictk::internal::VariantBuffer;
using GenericVariant = hictk::internal::GenericVariant;
Expand Down Expand Up @@ -308,7 +308,7 @@ class Dataset {
std::size_t chunk_size) -> iterator;
};
};
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

using DatasetMap = phmap::flat_hash_map<std::string, Dataset>;

Expand Down
12 changes: 6 additions & 6 deletions src/libhictk/cooler/include/hictk/cooler/group.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@
#include <fmt/format.h>
#include <parallel_hashmap/phmap.h>

DISABLE_WARNING_PUSH
DISABLE_WARNING_NULL_DEREF
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_NULL_DEREF
#include <highfive/H5File.hpp>
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
#include <highfive/H5Group.hpp>
#include <string>

namespace hictk::cooler {

DISABLE_WARNING_PUSH
DISABLE_WARNING_DEPRECATED_DECLARATIONS
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_DEPRECATED_DECLARATIONS
struct RootGroup {
HighFive::Group group{};

Expand All @@ -44,7 +44,7 @@ struct Group {
[[nodiscard]] constexpr HighFive::Group &operator()() noexcept { return group; };
[[nodiscard]] constexpr const HighFive::Group &operator()() const noexcept { return group; };
};
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

using GroupMap = phmap::flat_hash_map<std::string, Group>;

Expand Down
12 changes: 6 additions & 6 deletions src/libhictk/cooler/include/hictk/cooler/impl/attribute_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ inline void Attribute::read_vector(const ParentObj& h5obj, std::string_view key,
}
}

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
template <std::size_t i>
inline auto Attribute::read_variant(const HighFive::Attribute& attr) -> AttributeVar {
if constexpr (i < std::variant_size_v<AttributeVar>) {
Expand All @@ -135,10 +135,10 @@ inline auto Attribute::read_variant(const HighFive::Attribute& attr) -> Attribut
}
return std::monostate();
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
template <typename T1, typename Tout, typename Tin>
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
inline Tout Attribute::numeric_converter(T1& buff) {
Expand Down Expand Up @@ -221,6 +221,6 @@ inline Tout Attribute::numeric_converter(T1& buff) {
"Expected type {}, found {}. Unable to safely convert value {} of type {} to type {}"),
type_name<Tout>(), type_name<Tin>(), buff, type_name<Tin>(), type_name<Tout>()));
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

} // namespace hictk::cooler
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ inline std::size_t Dataset::read(std::vector<std::string> &buff, std::size_t num
return offset + buff.size();
}

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
template <std::size_t i>
inline std::size_t Dataset::read(VariantBuffer &vbuff, std::size_t num, std::size_t offset) const {
if constexpr (i == 0) {
Expand Down Expand Up @@ -93,7 +93,7 @@ inline std::size_t Dataset::read(VariantBuffer &vbuff, std::size_t num, std::siz

unreachable_code();
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

template <typename BuffT, typename T, typename>
inline BuffT Dataset::read_n(std::size_t num, std::size_t offset) const {
Expand Down Expand Up @@ -146,8 +146,8 @@ inline std::size_t Dataset::read(std::string &buff, std::size_t offset) const {
return offset + 1;
}

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
template <std::size_t i>
inline std::size_t Dataset::read(GenericVariant &vbuff, std::size_t offset) const {
if constexpr (i == 0) {
Expand Down Expand Up @@ -182,7 +182,7 @@ inline std::size_t Dataset::read(GenericVariant &vbuff, std::size_t offset) cons

unreachable_code();
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

template <typename BuffT, typename T, typename>
inline BuffT Dataset::read(std::size_t offset) const {
Expand Down
6 changes: 3 additions & 3 deletions src/libhictk/cooler/include/hictk/cooler/impl/file_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,8 @@ inline auto File::open_or_create_root_group(HighFive::File f, std::string_view u
return create_root_group(f, uri);
}

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
namespace internal {
template <typename Variant, std::size_t i = 0>
[[nodiscard]] inline Variant read_pixel_variant(const HighFive::DataSet &dset) {
Expand All @@ -328,7 +328,7 @@ template <typename Variant, std::size_t i = 0>
fmt::format(FMT_STRING("Unsupported type for dataset \"{}\""), dset.getPath()));
}
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
} // namespace internal

inline hictk::internal::NumericVariant File::detect_pixel_type(const RootGroup &root_grp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -440,8 +440,8 @@ bool read_sum_optional(const RootGroup &root_grp, std::string_view key, N &buff,

} // namespace internal

DISABLE_WARNING_PUSH
DISABLE_WARNING_UNREACHABLE_CODE
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_UNREACHABLE_CODE
inline auto File::read_standard_attributes(const RootGroup &root_grp,
bool initialize_missing) -> Attributes {
auto attrs = initialize_missing ? Attributes::init(0) : Attributes::init_empty();
Expand Down Expand Up @@ -496,7 +496,7 @@ inline auto File::read_standard_attributes(const RootGroup &root_grp,

return attrs;
}
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

inline auto File::import_chroms(const Dataset &chrom_names, const Dataset &chrom_sizes,
bool missing_ok) -> Reference {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ inline File SingleCellFile::aggregate(std::string_view uri, bool overwrite_if_ex
return File(uri);
}

DISABLE_WARNING_PUSH DISABLE_WARNING_UNREACHABLE_CODE inline SingleCellAttributes
HICTK_DISABLE_WARNING_PUSH HICTK_DISABLE_WARNING_UNREACHABLE_CODE inline SingleCellAttributes
SingleCellFile::read_standard_attributes(const HighFive::File& f, bool initialize_missing) {
const RootGroup root_grp{f.getGroup("/")};
auto attrs =
Expand Down Expand Up @@ -274,7 +274,7 @@ SingleCellFile::read_standard_attributes(const HighFive::File& f, bool initializ

return attrs;
} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP

inline BinTable SingleCellFile::init_bin_table(const HighFive::File& f) {
[[maybe_unused]] HighFive::SilenceHDF5 silencer{}; // NOLINT
Expand Down
6 changes: 3 additions & 3 deletions src/libhictk/cooler/include/hictk/cooler/validation.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
#include <parallel_hashmap/btree.h>

#include <cstdint>
DISABLE_WARNING_PUSH
DISABLE_WARNING_NULL_DEREF
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_NULL_DEREF
#include <highfive/H5File.hpp>
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
#include <highfive/H5Group.hpp>
#include <string>
#include <string_view>
Expand Down
6 changes: 3 additions & 3 deletions src/libhictk/hic/include/hictk/hic/impl/file_writer_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -672,10 +672,10 @@ inline void HiCFileWriter::write_empty_normalized_expected_values() {
offset);
try {
_fs.seekp(offset);
DISABLE_WARNING_PUSH
DISABLE_WARNING_USELESS_CAST
HICTK_DISABLE_WARNING_PUSH
HICTK_DISABLE_WARNING_USELESS_CAST
_fs.write(std::int32_t(0));
DISABLE_WARNING_POP
HICTK_DISABLE_WARNING_POP
} catch (const std::exception &e) {
throw std::runtime_error(
fmt::format(FMT_STRING("an error occurred while writing an empty normalized expected "
Expand Down
Loading

0 comments on commit 784477d

Please sign in to comment.