Ubuntu 26.04 is not available in github workflows directly and won't be soon.
But ubuntu-26.04 is available as docker container. So use it for running
C++26 workflows which were disabled previously.
* Print test names at test time (#1343)
* Fix operator| conflict with std::ranges (#1395)
* Remove unused reinstall-cmake.sh
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Fix delegate not being cleared by assigning empty braces
Fixes issue #1399.
The non-capturing lambda support (PR#1295) added a non-explicit
delegate(function_ptr) constructor and operator=(function_ptr). This
caused `delegate = {}` to implicitly convert `{}` to a null function
pointer and bind it via function_ptr_stub, leaving the delegate
appearing valid (stub != nullptr) but invoking through a null pointer
(undefined behavior).
Fix:
- Mark delegate(function_ptr) constructor explicit to prevent implicit
conversion from `{}` during initialization.
- In operator=(function_ptr), clear the delegate when fp is null
instead of binding a null pointer through function_ptr_stub.
Added tests verifying that both `delegate d = {}` and `d = {}` produce
an invalid (cleared) delegate.
* Fix Dockerfile for powerpc cross build
Debian snapshot sources were mixed with plain sid sources which
mismatched after a while. Now, aligning all sources from snapshot
server.
* Add development tools to docker image
python3-cogapp, clang-format, treefmt
Add script to run development environment in docker container
Document docker use in docs/docker.md
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Extensions for testing
Generalize run-tests.sh
Test all C++ versions at once
Fix combination of big endian and -Wsign-conversion
Failed on s390x (as reference for big endian)
Add github workflow for s390x
Add armhf container files
Devcontainers for i386 and riscv
Add github workflows for armhf, i386 and riscv64
Add run-tests.sh for foreign architectures
Document testing in doc/testing.md
Adjustments from clang-format run
Fix .devcontainer/s390x/Dockerfile for linebreak syntax
Fix exit code of run-test.sh
Previously, "exit $?" was used, actually the return value of
FailedCompilation and FailedTest which are always 0.
Now just using 1.
In run-tests.sh at ctest, use -V for printing number of tests unconditionally
While ctest suppresses individual test list by default, it didn't even
print the number of tests anymore, as run_tests.sh does because
it suppresses it output completely.
Now, by default print number of tests, and in verbose mode, print test list
in addition.
* Support powerpc as foreign architecture
* Add SFINAE constraints to etl::begin/end and reverse iterator free functions
The unconstrained etl::begin(), etl::end(), etl::cbegin(), etl::cend(),
etl::rbegin(), etl::rend(), etl::crbegin(), and etl::crend() templates
in the no-STL code path were matching iterator types during ADL, causing
a hard error with GCC 15's std::ranges::begin. When std::ranges performed
ADL on an etl::*::iterator, it found etl::begin() as a candidate; since
the iterator type has a nested iterator typedef, the return type TContainer::iterator
was valid, but calling .begin() on the iterator failed.
Fix: add etl::void_t<decltype(...)> SFINAE guards to each template,
ensuring they only participate in overload resolution when TContainer
actually has the corresponding member function (.begin(), .end(), etc.).
* - Fix red unit tests on 32 bits big-endian platform.
* Document powerpc architecture for testing
* Use Dockerfiles in cross testing github workflows
Synchronizes environment setup for github workflows to what is
defined in the development Dockerfiles. So they don't need to
be maintained separately.
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Sergei Shirokov <sergej.shirokov@gmail.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Print test names at test time (#1343)
* Remove python3-cogapp from Dockerfile
Removed python3-cogapp from the Dockerfile installation.
* Update .devcontainer/Dockerfile
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Change base image and update Python package installation
* Change container to use cpp devcontainer version 2
* Point to specific version of the devcontainer
* Update devcontainer to use debian snapshot for reproducability
* Fetch sources via https
* Make devcontainer more robust for debian_snapshot
* Make fetch non-https for snapshot
* Install CMake from apt
* Update devcontainers to remove CMake version
* Change Clang version from 22 to 21
* Apply suggestion from @rolandreichweinbmw
---------
Co-authored-by: Roland Reichwein <Roland.Reichwein@bmw.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* manchester
* Added manchester code and test
* manchester
* Formatting and added missing file
* manchester
* Some functions can only be constexpr since C++14
* manchester
* Manchester decode and some refactoring
* manchester
* Added some missing typenames
* manchester
* constexpr void function not allowed in C++11
* manchester
* condition on static_assert tests
* manchester
* revert CMakeLists.txt
* Using ETL_STATIC_ASSERT
* Some cleanup
* manchester
* Added static_assert message
* manchester
* Added compile time tests
* manchester
* Added invert manchester
* Some refactoring
* manchester
* Disable test for now
* Move ETL_NODISCARD before static
* manchester
* Test for valid_span
* manchester
* Remove redundant (?) storage specifiers for template specializations. Storage specifier already given in base template
* manchester
* refactoring to get rid of specialized template functions in template class
* manchester
* cleanup
* manchester
* Added documentation comments
* Some refactoring
* manchester
* introducing namespace detail_manchester
* manchester
* Some refactoring
* Update tests
* manchester
* Some refactoring
* Removed possible undefined behavior by refactoring encode_span
* constexpr version of encode_span
* Static assertion for rare case where code doesn't work because CHAR_BIT is not the same as the number of bits in uint_least8_t
* manchester
* renamed valid to is_valid
* manchester
* renamed is_valid_span to is_valid
* Using etl exceptions in ETL_ASSERT
* manchester
* Removed _fast functions
* merged encode_in_place with encode and decode_in_place with decode
* removed _span to create normal overloads of encode and decode for span
* Some renaming and minor refactoring
* manchester
* Fix build issues
* manchester
* Conditionally compile manchester_decoded
* Update test_manchester.cpp
Removed redundant semicolon
* #1258 Manchester coding
* Formatting
* consistency: hex literals with lower case 0x
* #1258 Manchester coding
* Moved copyright to top of file
* Make constexpr encode/decode span functions equal for little and big endian platforms
* #1258 Manchester coding
* Added missing include
* Added missing 8bit/64bit guards
* Fixed is_valid for big endian platforms
* #1258 Manchester coding
* private memcpy alias
* #1258 Manchester coding
* Review comments
* #1258 Manchester coding
* Cleanup
* Fix build error
* #1258 Manchester coding
* Add manchester documentation
* #1258 Manchester coding
* Preparation for GitHub pages
* #1324 Manchester documentation
* Some small fixes
* Print test names at test time (#1343)
* IGN-280 biphasic amplitude as float
* Add big-endian devcontainer
* manchester
* fixed the configuration to work with GitHub Codespaces. The changes use cross-compilation with QEMU emulation instead of trying to use a native s390x container.
* manchester
* Made manchester work for big-endian
* Some updates to the container
* Manchester big-endian support
* Cleanup
* Manchester big-endian support
* add sourcedirectory
* Enable running with ctest
* Manchester big-endian support
* Update documentation
* Manchester big-endian support
* QA
* Manchester big-endian support
* QA
* Enable testing with ctest with cross-compiler (#5)
* Enable testing with ctest and with cross-compiler
* Clean up includes in manchester.h
---------
Co-authored-by: Timon Zijnge <timon.zijnge@imec.nl>
---------
Co-authored-by: Timon Zijnge <timon.zijnge@imec.nl>
Co-authored-by: Roland Reichwein <Roland.Reichwein@bmw.de>
Previous changes were wrongfully made in fsm.h and type_traits.h
instead of in their generator counterparts.
Add CI check to ensure generated files are in sync.