123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- From 2c767bb260a25b415e8c9c4b3ea37280b2127cec Mon Sep 17 00:00:00 2001
- From: japm48 <japm48@users.noreply.github.com>
- Date: Fri, 10 Apr 2020 23:35:30 +0200
- Subject: [PATCH] boost: remove deprecated math/common_factor.hpp
- Remove deprecation warning and prefer using std::{lcm,gcd} to Boost.
- Fixes #2712.
- [Retrieved from:
- https://github.com/gnuradio/gnuradio/commit/2c767bb260a25b415e8c9c4b3ea37280b2127cec]
- Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
- ---
- .../include/gnuradio/CMakeLists.txt | 1 +
- .../include/gnuradio/integer_math.h | 35 +++++++++++++++++++
- gnuradio-runtime/lib/buffer.cc | 19 ++--------
- gr-digital/lib/symbol_sync_cc_impl.cc | 4 +--
- gr-digital/lib/symbol_sync_ff_impl.cc | 4 +--
- 5 files changed, 43 insertions(+), 20 deletions(-)
- create mode 100644 gnuradio-runtime/include/gnuradio/integer_math.h
- diff --git a/gnuradio-runtime/include/gnuradio/CMakeLists.txt b/gnuradio-runtime/include/gnuradio/CMakeLists.txt
- index 8d718e87b5b..056af5d6f48 100644
- --- a/gnuradio-runtime/include/gnuradio/CMakeLists.txt
- +++ b/gnuradio-runtime/include/gnuradio/CMakeLists.txt
- @@ -31,6 +31,7 @@ install(FILES
- gr_complex.h
- hier_block2.h
- high_res_timer.h
- + integer_math.h
- io_signature.h
- logger.h
- math.h
- diff --git a/gnuradio-runtime/include/gnuradio/integer_math.h b/gnuradio-runtime/include/gnuradio/integer_math.h
- new file mode 100644
- index 00000000000..15141049fa4
- --- /dev/null
- +++ b/gnuradio-runtime/include/gnuradio/integer_math.h
- @@ -0,0 +1,35 @@
- +/* -*- c++ -*- */
- +/*
- + * Copyright 2020 Free Software Foundation, Inc.
- + *
- + * This file is part of GNU Radio
- + *
- + * SPDX-License-Identifier: GPL-3.0-or-later
- + *
- + */
- +#ifndef INCLUDED_GR_INTEGER_MATH_H
- +#define INCLUDED_GR_INTEGER_MATH_H
- +
- +#if (__cplusplus >= 201703L)
- +
- +// Prefer C++17 goodness.
- +#include <numeric>
- +#define GR_GCD std::gcd
- +#define GR_LCM std::lcm
- +
- +#elif (BOOST_VERSION >= 105800)
- +
- +// Fallback: newer boost API (introduced in Boost 1.58.0).
- +#include <boost/integer/common_factor_rt.hpp>
- +#define GR_GCD boost::integer::gcd
- +#define GR_LCM boost::integer::lcm
- +
- +#else
- +
- +// Last resort: old deprecated boost API.
- +#include <boost/math/common_factor_rt.hpp>
- +#define GR_GCD boost::math::gcd
- +#define GR_LCM boost::math::lcm
- +
- +#endif /* __cplusplus >= 201703L */
- +#endif /* INCLUDED_GR_INTEGER_MATH_H */
- diff --git a/gnuradio-runtime/lib/buffer.cc b/gnuradio-runtime/lib/buffer.cc
- index 720c72c4ee8..46d704542b1 100644
- --- a/gnuradio-runtime/lib/buffer.cc
- +++ b/gnuradio-runtime/lib/buffer.cc
- @@ -13,22 +13,13 @@
- #endif
- #include "vmcircbuf.h"
- #include <gnuradio/buffer.h>
- +#include <gnuradio/integer_math.h>
- #include <gnuradio/math.h>
- #include <assert.h>
- #include <algorithm>
- #include <iostream>
- #include <stdexcept>
-
- -// the following header is deprecated as of Boost 1.66.0, and the
- -// other API was introduced in Boost 1.58.0. Since we still support
- -// Boost back to 1.54.0, use the older API if pre-1.5.80 and otherwise
- -// use the newer API.
- -#if (BOOST_VERSION < 105800)
- -#include <boost/math/common_factor_rt.hpp>
- -#else
- -#include <boost/integer/common_factor_rt.hpp>
- -#endif
- -
- namespace gr {
-
- static long s_buffer_count = 0; // counts for debugging storage mgmt
- @@ -68,13 +59,9 @@ static long s_buffer_reader_count = 0;
- *
- * type_size * nitems == k * page_size
- */
- -static long minimum_buffer_items(long type_size, long page_size)
- +static inline long minimum_buffer_items(long type_size, long page_size)
- {
- -#if (BOOST_VERSION < 105800)
- - return page_size / boost::math::gcd(type_size, page_size);
- -#else
- - return page_size / boost::integer::gcd(type_size, page_size);
- -#endif
- + return page_size / GR_GCD(type_size, page_size);
- }
-
-
- diff --git a/gr-digital/lib/symbol_sync_cc_impl.cc b/gr-digital/lib/symbol_sync_cc_impl.cc
- index 55f85e7c6a7..55f162dc727 100644
- --- a/gr-digital/lib/symbol_sync_cc_impl.cc
- +++ b/gr-digital/lib/symbol_sync_cc_impl.cc
- @@ -13,9 +13,9 @@
- #endif
-
- #include "symbol_sync_cc_impl.h"
- +#include <gnuradio/integer_math.h>
- #include <gnuradio/io_signature.h>
- #include <gnuradio/math.h>
- -#include <boost/math/common_factor.hpp>
- #include <stdexcept>
-
- namespace gr {
- @@ -95,7 +95,7 @@ symbol_sync_cc_impl::symbol_sync_cc_impl(enum ted_type detector_type,
- throw std::runtime_error("unable to create interpolating_resampler_ccf");
-
- // Block Internal Clocks
- - d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);
- + d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);
- d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();
- d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;
-
- diff --git a/gr-digital/lib/symbol_sync_ff_impl.cc b/gr-digital/lib/symbol_sync_ff_impl.cc
- index d0ec32ab192..1172c1b4f8a 100644
- --- a/gr-digital/lib/symbol_sync_ff_impl.cc
- +++ b/gr-digital/lib/symbol_sync_ff_impl.cc
- @@ -13,9 +13,9 @@
- #endif
-
- #include "symbol_sync_ff_impl.h"
- +#include <gnuradio/integer_math.h>
- #include <gnuradio/io_signature.h>
- #include <gnuradio/math.h>
- -#include <boost/math/common_factor.hpp>
- #include <stdexcept>
-
- namespace gr {
- @@ -97,7 +97,7 @@ symbol_sync_ff_impl::symbol_sync_ff_impl(enum ted_type detector_type,
- throw std::runtime_error("unable to create interpolating_resampler_fff");
-
- // Block Internal Clocks
- - d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);
- + d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);
- d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();
- d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;
-
|