| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ |
|
| | |
|
| |
| |
| |
| | |
INSTALL_INTERFACE
|
| |
| |
| |
| | |
currently there is nothing to check the absolute accuracy of PMT serialization, and it is easy for changes to break this provided serialize_str() and deserialize_str() are inverse functions. this provides some absolute reference PMT strings to ensure compatibility is retained.
|
| |
| |
| |
| | |
per 3.8 behavior, and the GR wiki, the __repr__ function of a PMT object should be overloaded to call pmt::write_string. This is currently not bound so this adds this binding.
|
|/ |
|
|
|
|
| |
Fixes an incorrectly named Doxygen parameter.
|
|
|
|
|
| |
This fixes compilation with MSVC on conda-forge, although why this
wasn't needed earlier is a mystery.
|
|
|
|
| |
This changes how the blocks are identified when they need to be notified that they have messages waiting. It also clarifies the name the block is registered with explicitly, and adds exceptions for looking up blocks that do not exist.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All of the removed `from __future__ import` were needed in older
versions of Python (mostly 2.5.x and below) but later became mandatory
in most versions of Python 3 hence are not necessary anymore.
More specifically, according to __future__.py[1]:
- unicode_literals is part of Python since versions 2.6.0 and 3.0.0;
- print_function is part of Python since versions 2.6.0 and 3.0.0;
- absolute_import is part of Python since versions 2.5.0 and 3.0.0;
- division is part of Python since versions 2.2.0 and 3.0.0;
Get rid of those unnecessary imports to slightly clean up the codebase.
[1] https://github.com/python/cpython/blob/master/Lib/__future__.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First batch of changes:
```
find […] -print0 | xargs -0 sed -i -r '/get_initial_sptr/{:nxt N;/;/!b nxt;s/get_initial_sptr\(\s*new ([^(]+)(.*)\)\)/make_block_sptr<\1>\2)/}'
```
Then:
* Back out `sptr_magic.h` edits
* Change some `friend` clauses
* clang-format the whole thing
* Update checksums in the pybind11 bindings files
|
|
|
|
|
| |
This includes the first edit of a block, so that it's easy to review.
A following commit changes this globally.
|
|
|
|
|
| |
std::for_each() is defined in <algorithm>, so that if it is not
included, it doesn't build in some platforms
|
|
|
|
|
| |
This solves the issue of gr.enable_realtime_scheduling() failing because
rt_status_t wasn't wrapped without.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
With this commit, all calls to `set_msg_handler` in `gr-blocks` use
lambdas. This helps to use `std::function` instead of `boost::function`.
|
|
|
|
|
|
|
| |
This commit is a first stab at moving from `boost::function` to `std::function`.
For now, it does only update gr-blocks. Also, this requires more testing.
If others can confirm that this change works, I'll continue to update all modules.
|
| |
|
| |
|
|
|
|
|
|
|
| |
pygccxml seems to replace int64_t and uint64_t with long and unsigned
long. This causes a mismatch in the overload on 32b systems
Fixes #3408
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
create a new derived class for pmt dicts so they can be distinguished without complicated try/catch logic, updated QA with a few additional checks. also added an is_pdu() method which returns true if the pmt is a pair of a dict-type PMT and a uniform-vector type, otherwise false
|
|
|
|
|
| |
gcc 4 has been a requirement for many years now, so we can remove the
check for gcc 3.
|
|
|
|
| |
this is more portable since endian.h is not available on all platforms, and may have some implementation inconsistencies
|
|
|
|
|
|
|
| |
No reason to assume only `general_work`-containing blocks would want to
log.
This enables us especially to log in `basic_block` itself.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes the volk/ submodule pointer and updates the CMake to detect
VOLK like any other dependency. The VOLK_MIN_VERSION CMake variable is
added (and set to 2.1.0).
The GR_VOLK_LIB variable is replaced with Volk::volk everywhere.
The VOLK_INSTALL_LIBRARY_DIR and VOLK_INSTALL_INCLUDE_DIR variables
weren't used and were removed.
CMake will now fail if VOLK cannot be detected. Therefore, ENABLE_VOLK
was also removed as a variable; all in-tree components may assume the
existence of VOLK.
|
| |
|
|
|
|
|
| |
Remove deprecation warning and prefer using std::{lcm,gcd} to Boost.
Fixes #2712.
|
|
|
|
| |
This is the last boost::lexical_cast in gnuradio.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
boost::lexical_cast seems not not be consistent given different
inputs. E.g. std::complex is stringified like iostream, but float and
double avoid scientific notation… mostly. See below for comparisons
between before and after (`printf` is what this commit switches to).
I don't think the differences matter.
```
int main() {
constexpr float low_float = 200000000.2;
constexpr float high_float = 20000000000.2;
constexpr float low_double = 200000000.2;
constexpr float mid_double = 20000000000.2;
constexpr float high_double = 200000000000000000.2;
const std::complex<float> c(1.3,low_float);
const std::complex<double> d(1.3,low_double);
const std::complex<double> d2(1.3,high_double);
const std::vector<float> fs = {low_float, high_float};
const std::vector<double> ds = {low_double, mid_double, high_double};
std::cout << "# complex\n";
std::cout << "iostream: " << c << std::endl;
std::cout << "lexical_cast: " << boost::lexical_cast<std::string>(c) << std::endl;
std::cout << std::endl;
for (int i = 0; i < fs.size(); i++) {
std::cout << "# float " << i << std::endl;
std::cout << "iostream: " << fs[i] << std::endl;
std::cout << "to_string: " << std::to_string(fs[i]) << std::endl;
printf("printf %.f\n", std::numeric_limits<float>::digits10, fs[i]);
std::cout << "lexical: " << boost::lexical_cast<std::string, float>(fs[i]) << std::endl;
std::cout << std::endl;
}
for (int i = 0; i < ds.size(); i++) {
std::cout << "# double " << i << std::endl;
std::cout << "iostream: " << ds[i] << std::endl;
std::cout << "to_string: " << std::to_string(ds[i]) << std::endl;
printf("printf %.*g\n", std::numeric_limits<double>::digits10, ds[i]);
std::cout << "lexical: " << boost::lexical_cast<std::string, double>(ds[i]) << std::endl;
std::cout << std::endl;
}
}
```
Output (Debian amd64):
```
iostream: (1.3,2e+08)
lexical_cast: (1.3,2e+08)
iostream: 2e+08
to_string: 200000000.000000
printf 200000000
lexical: 200000000
iostream: 2e+10
to_string: 20000000000.000000
printf 20000000000
lexical: 2e+10
iostream: 2e+08
to_string: 200000000.000000
printf 200000000
lexical: 200000000
iostream: 2e+10
to_string: 20000000000.000000
printf 20000000000
lexical: 20000000000
iostream: 2e+17
to_string: 199999996861349888.000000
printf 1.9999999686135e+17
lexical: 1.9999999686134989e+17
```
|
| |
|
|
|
|
|
|
| |
The remaining ones:
* `pmt_pool.cc`, which is a memory allocator so that makes sense
* the tricky and aptly named `sptr_magic.cc`.
|
|
|
|
|
| |
This exposed some missing forwarding of RNG seed from one object to
another, also fixed in this commit.
|
|
|
|
|
|
|
|
|
|
|
| |
This is what gnuradio currently documents seeding will do, but it's
not what C++ defaults to.
See C++11 26.5.3.2, paragraph 3. Default for mersenne twister is
constexpr 5489.
Or easier, the bottom of
https://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine
|
| |
|
| |
|