* Updated message handling to be worst case O(logN)
* Copied optimised message handling from etl::fsm
* Updated fsm generator
* Updated message_router generator
* Added optimised accepts() member function
* Modified comment, as the FSM doesn't support a successor
* Updated version and release notes
* Hotfix/etl multiset iterator invalidation during erase leads to incorrect sorted order in depth first traversal (#1317)
* Fixed issue for both multiset and multimap
* Added std::is_sorted checks to all map/set tests
* Updated with coderabbit suggestions
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
* Updated release notes and version
* Changed std::is_same to etl::is_same in struct type_list_is_unique (#1320)
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
* Updated release notes and version
* Fix etl::rotate (#1327)
Per the C++ standard, std::rotate returns first + (last - middle):
* When first == middle, return last
* When middle == last, return first
* Added missing files from VS2022 project
* Fix greater_equal and less_equal (#1331)
* Align comparison operators (#1330)
In functional.h, the comparison operators for equal_to and not_equal_to
mismatch between the actual comparison execution and the type inference
for the return type. This change adjusts it by using the same operator==()
in the return type inference as used in the comparison execution.
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Add missing tests (#1321)
* Add missing tests
* Typo fixes
---------
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Add ETL_FORMAT_NO_FLOATING_POINT control macro for etl::format (#1329)
When ETL_FORMAT_NO_FLOATING_POINT is defined, all floating-point formatting support (float, double, long double) is excluded from etl::format. This reduces code size on targets that do not require floating-point formatting.
Guarded sections:
- #include <cmath>
- float/double/long double in supported_format_types variant
- float/double/long double constructors in basic_format_arg
- format_floating_* functions and format_aligned_floating
- formatter<float>, formatter<double>, formatter<long double>
- Floating-point test cases in test_format.cpp
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
* Manchester documentation (#1325)
* 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
---------
Co-authored-by: Timon Zijnge <timon.zijnge@imec.nl>
* Changes from review of algorithm.h on development branch (#1340)
* Add missing constexpr in algorithm.h
* Fix call of nth_element
2nd argument (nth) was missing
* Replace partition point with O(log(N)) algorithm
The C++ standard defines O(log(N)) calls of predicate as the
complexity of partition_point(). The old algorithm was linear.
* Use predicate in calculation of is_permutation consistently
In case of predicate not equal_to, the calculation previously
returned wron results
* Omit swap in selection_sort if iterators are equal
* Use difference_type in rotate_general() instead of int
* Typo fix in algorithm.h
* Simplifications in algorithm.h
Application of plain refactoring by keeping semantics
* Guard against past-end iterator in etl::rotate()
And fix scope of rotate_right_by_one for etl::rotate()
* Support empty ranges in selection_sort
* Add tests for swap_ranges
* Add tests for binary_search
* Add tests for find_end
* Add tests for accumulate
* Add tests for move_s
* Added tests for is_heap and sort_heap
* Remove early exit for empty input
* Add adjacent_find
* Add unique
* Add unique_copy
* Add merge
* Add inplace_merge
* Add partial_sort
* Add partial_sort_copy
* copilot review change
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Roland Reichwein <Roland.Reichwein@bmw.de>
Co-authored-by: Niu Zhihong <zhihong@nzhnb.com>
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: Timon Zijnge <47081647+tzijnge@users.noreply.github.com>
Co-authored-by: Timon Zijnge <timon.zijnge@imec.nl>
C++14 compiler compatibility
Updated test run scripts
Changed some ETL_ASSERT macros to ETL_ASSERT_OR_RETURN
Changed unit test macros for C++20 compaibility
Updated test run scripts
Updated CMake files to allow C++ standard selection
Replaced ETL_ASSERT_AND_RETURN with ETL_ASSERT_OR_RETURN
Updated C++14 & C++20 unit test compatibility
Changed native char8_t check
Added optional optimisation argument to bash script
In order to work properly, states with no change need to return ifsm_state::NO_CHANGE rather than their given state id.
Otherwise, when an event isn't handled, it will return the parent state rather than the active state.
Also, in this implementation, a state cannot return a different state during the on_enter_state() function. An assert has been added to check for that.
commit 04ba91bcccc8e12867962bc3746665f430672a23
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sat Feb 6 10:43:34 2021 +0000
Updated shared message unit test
commit fababc5cf748073464b4294a50c201cb0aa4fa13
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Fri Feb 5 09:41:52 2021 +0000
Updated FSM generator
commit ff287bcf0a833ca70933354b42b8b036b422ff81
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Fri Feb 5 09:35:56 2021 +0000
Updated message router generator
commit 52724e1e62b55dad81e2f80dd656026d828b3214
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Thu Feb 4 13:06:50 2021 +0000
Updated unit tests
commit 0d89105262aa050577ccc17ddc6eece9f4fc5d18
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Tue Feb 2 20:09:35 2021 +0000
Interim commit
commit ce8385ff24826103c7a55267ccf3f8a31f517e0b
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Tue Feb 2 18:13:29 2021 +0000
Squashed commit of the following:
commit 007b56d03513887636b84fc246e57d6c4f8b777e
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Tue Feb 2 18:09:51 2021 +0000
Squashed commit of the following:
commit 6107c4538be149137209d85e5f41031291bc7150
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Tue Feb 2 12:15:31 2021 +0000
Added move constructor and move assignment to etl::shared_message
commit c9a5716012db9b614ea67660ebf64dcb790ce571
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:36:29 2021 +0000
Squashed commit of the following:
commit e5f4eb6fb38c337c82fcc250f17a8f21eb788975
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:34:49 2021 +0000
Squashed commit of the following:
commit 23c5f1d3f9b13ff9e46ce3de96aefeb655d5ed97
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:32:35 2021 +0000
Fixed rollover error for etl::queue_spsc_atomic
Added 'required_alignment' parameter to 'allocate' for etl::imemeory_block_allocator.
Updated QueuedMessageRouter example
commit e5f4eb6fb38c337c82fcc250f17a8f21eb788975
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:34:49 2021 +0000
Squashed commit of the following:
commit 23c5f1d3f9b13ff9e46ce3de96aefeb655d5ed97
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:32:35 2021 +0000
Fixed rollover error for etl::queue_spsc_atomic
Added 'required_alignment' parameter to 'allocate' for etl::imemeory_block_allocator.
Updated QueuedMessageRouter example
commit c9a5716012db9b614ea67660ebf64dcb790ce571
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:36:29 2021 +0000
Squashed commit of the following:
commit e5f4eb6fb38c337c82fcc250f17a8f21eb788975
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:34:49 2021 +0000
Squashed commit of the following:
commit 23c5f1d3f9b13ff9e46ce3de96aefeb655d5ed97
Author: John Wellbelove <github@wellbelove.co.uk>
Date: Sun Jan 31 12:32:35 2021 +0000
Fixed rollover error for etl::queue_spsc_atomic
Added 'required_alignment' parameter to 'allocate' for etl::imemeory_block_allocator.
Updated QueuedMessageRouter example