172 Commits

Author SHA1 Message Date
Roland Reichwein
b83cef5668
Fix compilation with -Wsign-conversion (#1367)
* Fix compilation with -Wsign-conversion

For tests with GCC and Clang

Fixes https://github.com/ETLCPP/etl/issues/632

* Fix support of negative Id in type_lookup.h: type_from_id

* Fix element access arithmetic in atomic_gcc_sync.h fetch_add/fetch_sub

* Fix rounded_integral_division.h: divide_round_half_odd(): direction is always 1
2026-03-28 11:15:56 +00:00
Roland Reichwein
31b87b5419
Add C++ ranges library for C++17 (#1316)
* Add ranges

* Print test names at test time (#1343)

* Fix conflit commit errors

* Cast return value of operator* to value_type

Fixed warning on VS2022

---------

Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
2026-03-26 08:56:17 +00:00
Timon Zijnge
2f6a3e04aa
Manchester big endian support (#1353)
* 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>
2026-03-26 07:56:50 +00:00
Roland Reichwein
d5fc8d0cd1
Add code coverage report (#1357)
* Print test names at test time (#1343)

* Add code coverage report
2026-03-25 20:48:41 +00:00
Roland Reichwein
67ecc8e11e
Add missing tests (#1321)
* Add missing tests

* Typo fixes

---------

Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
2026-03-06 21:34:54 +00:00
Timon Zijnge
810a106bdf
#1258 Manchester coding (#1285)
* 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

---------

Co-authored-by: Timon Zijnge <timon.zijnge@imec.nl>
2026-02-27 09:40:42 +00:00
John Wellbelove
fa8f07ab80 Added missing test files CMakeLists.txt 2026-01-28 17:46:35 +00:00
John Wellbelove
8320b35d47 Work in progress 2026-01-26 17:56:32 +00:00
John Wellbelove
6d6ecc9fb5
Add etl::inplace_function (#1251)
* Imported inplace_function and invoke functionality from original branch

* Fixed spelling mistake

* Update test/CMakeLists.txt

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update test/test_inplace_function.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Moved member type function_ptr to private section

* Updated comments in inplace_function.h

* Updated action workflows to be triggered on a pull-request based on development branch

* Added suggested changes from PR reviews

---------

Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.co.uk>
2026-01-10 09:46:50 +01:00
Roland Reichwein
8c90eb8ba8 Add etl::format (#1204)
* Synchronize on C++ 17 for "Windows - STL" and "Windows - No STL"

MSVC C++20 handles char* differently on iteration

* Add etl::format

This adds etl::format, guided by std::format, avoiding dynamic memory
allocation
2025-12-22 10:04:15 +00:00
Roland Reichwein
e85d29b1dd Added concepts.h and tests (#1213) 2025-12-22 10:04:13 +00:00
whitfijs-jw
269f3ffdfd Topic/expected monadic operations (#1219)
* topic/expected-monadic-operations:
	- added and_then, or_else, transform, and transform_error with simple tests

* topic/expected-monadic-operation:
	- added void TValue specialization operations
	- updated unit tests to include expected<void, TError>
	- added is_expected to expected.h, used in and_then to ensure that the returned type is an expected

* topic/expected-monadic-operations:
	- made implementation c++11 compatible

* topic/expected-monadic-operations:
	- started addressing coderabbit feedback

* topic/expected-monadic-operations:
	- adapted invoke to etl
	- reworked return type deduction
	- filled in or_else unit tests to be more complete
	- still need to add invoke unit tests

* topic/expected-monadic-operations:
	-c++14 compliance

* topic/expected-monadic-operations:
	- completed coderabbit suggestions

* topic/expected-monadic-operations:
	- formatting in invoke and expected
	- added test suite for invoke

* topic/expected-monadic-operations:
	- fixed missing moves for const TValue&& and const TError&&

* topic/expected-monadic-operations:
	- made everything c++11 compatible, very verbose as a result

* topic/expected-monadic-operations:
	- fixed code rabbit rewivew for move semantics in const && overloads

* topic/expected-monadic-operations:
	- moved around a move

* topic/expected-monadic-operations:
	- added etl:: to invoke_result calls that were missing it

* topic/expected-monadic-operations:
	- formatting

* topic/expected-monadic-operations:
	- added invoke for void f() calls for consistency

* topic/expected-monadic-operations:
	- reworked entire thing to be able to handle expected<T,E> to expected<void,E> without even more code duplication

* topic/expected-monadic-operations:
	- added trailing return type to maintain c++11 compatibility

* topic/expected-monadic-operations:
	- fixed mismatch between deduced type and return for a few functions

* topic/expected-monadic-operations:
	- replaced calls to get<TError> and get<TValue> with get<Error_Type> and get<Value_Type>

---------

Co-authored-by: Jon Whitfield <jon@volumetrix.com>
2025-12-22 10:04:08 +00:00
John Wellbelove
cb2b3fe6f4 Added --pedandic-errors and -Werror to CMakeLists.txt 2025-12-16 10:41:53 +00:00
John Wellbelove
d884719098 Fixed all 'extra semicolon' warnings 2025-12-16 09:15:26 +00:00
John Wellbelove
85678586c4 Merge branch 'pull-request/#1199-Added-support-for-transitions-on-state-enter-for-HFSM' into development 2025-10-11 11:01:53 +01:00
David Ockey
86b9e0903f
Added support for transitions on state enter for HFSM (#1199)
* Added support for transitions on state enter for HFSM

* Fixed unit test build error

* Comment clean-up

* Changed FSM so that self-transitions can also transition "on enter"

* Fixing C++03 build error for clang
2025-10-08 08:43:09 +01:00
John Wellbelove
62b5a4a6ae Rebased on development 2025-09-20 11:25:09 +01:00
John Wellbelove
119d381570 Fixed compilation issues for const containers unit tests 2025-09-04 10:10:52 +01:00
John Wellbelove
3837e36d71 Fixes to GCC -O2 errors 2025-09-02 13:51:45 +01:00
John Wellbelove
3a25d5934a Added constexpr. Removed some member functions. Removed 'move' member functions for etl::not_null<etl::unique_ptr<T, TDeleter>> 2025-08-18 16:51:49 +01:00
John Wellbelove
877ef005ea Fixed file Id error
Updated CMakeLists.txt for tests and syntax checks
2025-08-18 16:50:58 +01:00
John Wellbelove
86f76933c1 Added full rounded integral division 2025-08-12 15:13:03 +01:00
John Wellbelove
7504646301 Added delegate_observable 2025-08-03 16:22:50 +01:00
John Wellbelove
5d7573e513 Minor changes 2025-07-20 11:05:44 +01:00
Mario Luzeiro
5c5e5df788 Implements deferred callback timer with optional priority (#955)
* Refactored callback_timer_locked to allow base class extention of tick method

* Implement callback timer deferred with priority option

---------

Co-authored-by: Mario Luzeiro <mluzeiro@gliderbits.com>
2025-07-20 08:36:04 +01:00
John Wellbelove
d7875adf9e Added CRC64-ISO added 2025-07-15 10:36:43 +01:00
John Wellbelove
be5a6e2951 Added CRC8 and CRC16 opensafety algorithms 2025-07-14 08:43:20 +01:00
John Wellbelove
7535d9b63a Merge branch 'pull-request/#1144-Add-support-for-CRC8-NRSC5' into development 2025-07-09 10:22:12 +01:00
John Wellbelove
99e3ebd3d5 Added crc8_nrsc5 for VS2022 and CMake projects 2025-07-09 10:21:35 +01:00
Cpt-Seablue
bb496e6262
Add support for CRC8-NRSC5 (#1144)
* Add CRC8-NRSC5 parameters

* Add CRC8-NRSC5 header

* Add CRC8-NRSC5 header

* Add tests
2025-07-08 20:48:17 +01:00
John Wellbelove
9026ef8933 Merge branch 'pull-request/#1135-Fix-error-on-running-clang-test-only' into development
# Conflicts:
#	test/vs2022/etl.vcxproj
#	test/vs2022/etl.vcxproj.filters
2025-07-07 11:18:49 +01:00
Roland Reichwein
3c783e2de7
Add etl::closure (#1137) 2025-06-28 11:18:46 +01:00
John Wellbelove
39469d29dc Revert "Split classes into ETL standard top level and 'i' base classes."
This reverts commit de13fb8afea9aa2777958d902336dcb04f87968e.

# Conflicts:
#	include/etl/const_map.h
#	include/etl/const_multimap.h
#	test/test_const_map.cpp
#	test/test_const_map_constexpr.cpp
#	test/test_const_multimap.cpp
#	test/test_const_multimap_constexpr.cpp
#	test/vs2022/etl.vcxproj
#	test/vs2022/etl.vcxproj.filters
2025-06-27 09:28:58 +01:00
John Wellbelove
de13fb8afe Split classes into ETL standard top level and 'i' base classes.
Split into const and constexpr unit tests files
2025-06-26 20:23:22 +01:00
John Wellbelove
e84be139c5 Split classes into ETL standard top level and 'i' base classes.
Split into const and constexpr unit tests files
2025-06-24 13:24:17 +01:00
John Wellbelove
276415dc19 Updated release 2025-06-01 18:08:38 +01:00
John Wellbelove
1cb75ff072 Added -Wformat-security 2025-05-30 13:52:37 +01:00
John Wellbelove
84ef87dbf0 Added missing files in unit test CMakeLists.txt 2025-05-26 10:23:56 +01:00
John Wellbelove
a724dd08b8 Removed useless-cast warning 2025-05-15 19:05:49 +01:00
John Wellbelove
7b603e201c Merge branch 'feature/add-time-date-classes' into development
# Conflicts:
#	include/etl/tuple.h
#	test/vs2022/etl.vcxproj.filters
2025-05-14 19:23:21 +01:00
Roland Reichwein
fe928fa53a
Support C++23 (#1069)
* Support C++23

* Fix syntax checks for correct C++ standard version

---------

Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
2025-05-13 21:27:04 +01:00
John Wellbelove
915d668904 Added chrono.h to tests 2025-05-13 08:28:37 +01:00
John Wellbelove
12328670dd Work in progress 2025-05-11 14:11:22 +01:00
BartolomeyKant
2fd4e171ba
rise up cmake minimum required (#1066)
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
2025-04-30 16:47:39 +01:00
John Wellbelove
4485a90c04 Added etl::chrono::year_month 2025-04-25 19:21:41 +01:00
John Wellbelove
d604d40648 Added etl::chrono::hh_mm_ss 2025-04-25 18:07:43 +01:00
John Wellbelove
fedf429d02 Merge branch 'development' into feature/add-time-date-classes
# Conflicts:
#	.gitignore
#	include/etl/platform.h
#	include/etl/ratio.h
#	test/CMakeLists.txt
#	test/test_ratio.cpp
#	test/vs2022/etl.vcxproj
#	test/vs2022/etl.vcxproj.filters
2025-04-19 12:30:36 +01:00
John Wellbelove
bc158cbcbc Updates to chrono classes 2025-04-18 10:50:48 +01:00
John Wellbelove
475674288c Added etl::tuple to VS project
Added tuple to CMakeLists.txt
2025-04-14 17:34:27 +01:00
John Wellbelove
1ada87ad76 Changed minimum cmake version to 3.10.0 2025-04-02 12:58:38 +01:00