6342 Commits

Author SHA1 Message Date
John Wellbelove
f6781a2b8d
Add newline at end of children.html
Fix missing newline at end of children.html file
2026-11-03 10:25:54 +00:00
John Wellbelove
357d4765da Changed notification call function name from 'invoke' to 'on_time_to_next_notification'.
Changed `active_notify_time_to_next` to 'notify_time_to_next'.
Updated documentation.
2026-11-01 11:50:28 +00:00
John Wellbelove
bcc69cf16d Unified use of notify_about_timer_change 2026-10-30 20:31:05 +00:00
John Wellbelove
da297f0ef9 Updated timer docs 2026-10-30 17:20:48 +00:00
John Wellbelove
b9473441f0 Fixed Codacy issues 2026-10-30 07:55:27 +00:00
John Wellbelove
01a01d56e7 Merge branch 'feature/timer-refactor' of https://github.com/ETLCPP/etl into feature/timer-refactor 2026-10-30 00:23:14 +00:00
John Wellbelove
ede4c8d628 Made the timer list's end() function static 2026-10-30 00:22:38 +00:00
John Wellbelove
b901e38d58
Merge branch 'development' into feature/timer-refactor 2026-10-30 00:42:54 +01:00
John Wellbelove
fb1b7b08be clang-format 2026-10-29 23:03:50 +00:00
John Wellbelove
a71bf72346 Code review changes 2026-10-29 23:00:51 +00:00
John Wellbelove
5e5903cdff Added intrusive_timer to CMakeLists.txt
Fixed issues raised by GCC and clang
Updated documentation
2026-10-29 19:24:02 +00:00
Roland Reichwein
4020bc9313
Add C++26 reflection (#1633)
Status (for both STL and Non-STL builds):
- Builds and tests with GCC 16
- Clang 22: Reflection not available yet
- MSVC: Reflection not available yet
2026-10-29 15:25:38 +01:00
John Wellbelove
0de445f737
Update atomic and fix other documentation (#1631)
* Updated atomic documentation

* Modified fetch_add and fetch_sub documentation

* Various documantation fixes

---------

Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-29 13:27:37 +00:00
AlvyneZ
cdc32071c8
Fix indirect_vector range overloads matching integral arguments (#1636)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* refresh codacy integration status

* Expose more Zephyr Kconfigs for error handling (#1622)

* zephyr: make `ETL_DEBUG` default to on if Zephyr assertions are enabled

this is the more appropriate default: ETL_DEBUG controls some container assertions, so it should follow the Zephyr assertions by default

* zephyr: expose new error-checking configs

* zephyr: add Kconfig choices for error handling

* Fix indirect_vector range overloads matching integral arguments

Calls such as indirect_vector<int, N>::insert(position, 2, 7),
assign(5, 7) and the constructor indirect_vector<int, N>(5, 7) chose
the iterator range templates, because two ints deduce TIterator = int
exactly. They then failed to compile inside the template, for example
at etl::distance(int, int).

Constrain the range versions of assign, insert and the indirect_vector
and indirect_vector_ext constructors with etl::enable_if, as
etl::vector does, so that integral arguments select the
(count, value) overloads. Add tests for each case.

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Eden Frosst <edenfrosst@gmail.com>
2026-10-29 11:44:58 +00:00
Eminy
55dcb84bc0
Fix find and rfind position handling in string and string_view (#1637)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* refresh codacy integration status

* Expose more Zephyr Kconfigs for error handling (#1622)

* zephyr: make `ETL_DEBUG` default to on if Zephyr assertions are enabled

this is the more appropriate default: ETL_DEBUG controls some container assertions, so it should follow the Zephyr assertions by default

* zephyr: expose new error-checking configs

* zephyr: add Kconfig choices for error handling

* Fix find and rfind position handling in string and string_view

* Default the rfind string_view position to npos

The string_view overload defaulted pos to 0, so rfind(view) only found
a match at the start of the string. The other rfind overloads and
std::basic_string use npos.

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Eden Frosst <edenfrosst@gmail.com>
2026-10-29 11:44:10 +00:00
John Wellbelove
e3b79844f9 Stop clang-format looking at uinttest++ files 2026-10-29 11:42:10 +00:00
John Wellbelove
77a49a7023 Changed timer documentation sub-directory names 2026-10-29 11:31:11 +00:00
John Wellbelove
7eeec363a7 Merge branch 'feature/timer-refactor' of https://github.com/ETLCPP/etl into feature/timer-refactor 2026-10-29 11:25:45 +00:00
John Wellbelove
8c11fe8506 C++03 compatibility initialisation 2026-10-29 11:25:37 +00:00
John Wellbelove
a490eb969d C++03 compatibility initialisation 2026-10-29 10:57:21 +00:00
John Wellbelove
9fdbbfe5b0 Edited and rearranged the timer documentation 2026-10-29 08:54:02 +00:00
John Wellbelove
f6eaaba713 Changed interval types from uint32_t to etl::timer::interval::type 2026-10-29 08:53:29 +00:00
John Wellbelove
51134bca50 Added missing header include 2026-10-29 08:52:44 +00:00
John Wellbelove
37400764a9 Separated node and config into individual files
Added more node derived types and examples
2026-10-28 20:43:17 +00:00
John Wellbelove
f02e431686 Modified time-to-next notifictaion 2026-10-28 09:23:09 +00:00
John Wellbelove
d161a366b6 Added timer_node and timer_config docs
Added timer_no_lock_policy and timer_atomic_lock_policy
2026-10-27 15:15:37 +00:00
John Wellbelove
0d41528005 Added timer_node and timer_config docs
Added is_registered test to intrusive_timer
2026-10-26 23:31:51 +00:00
John Wellbelove
74634a54fb Added mermaid support 2026-10-26 23:30:44 +00:00
John Wellbelove
2aa0c4edb3 Fixed remove for timer_active_list
Moved time to nex notifications to inside the lock regions
Finished unit tests
2026-10-26 15:50:44 +00:00
John Wellbelove
f1d188e60c Updated tests
Modified node end() and 'time to next' notification callback
2026-10-25 10:55:24 +00:00
John Wellbelove
28ac16f035 Added next timer notifications 2026-10-23 18:42:35 +01:00
John Wellbelove
78bdd671fa Work in progress
test_intrusive_timer_one_shot not working yet
2026-10-23 13:08:10 +01:00
John Wellbelove
d04cc5c296 Work in progress
Timer list tests need a workaround for ownership issues.
2026-10-22 21:03:11 +01:00
John Wellbelove
b903d7759e Work in progress 2026-10-21 20:58:31 +01:00
John Wellbelove
024b2dd2c5 Work in progress 2026-10-21 18:48:15 +01:00
John Wellbelove
b9456c0b62 Work in progress 2026-10-20 20:07:29 +01:00
John Wellbelove
cf07fc69b5 Modified the timer config and node classes 2026-10-20 18:31:17 +01:00
John Wellbelove
fe1bc0b029 Initial code. Committed for reference 2026-10-20 10:36:59 +01:00
taltenbach
60ba92928e
Constrain variant value constructor to supported types (#1614)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* Constrain variant value constructor to supported types

Previously, the implicit value constructor of etl::variant could
participate in overload resolution for unsupported types, potentially
causing ambiguous calls before the assertion was triggered.

The static_assert are replaced by enable_if constraints. Note the same
approach is applied to other constructors and methods for consistency.

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-14 14:07:47 +01:00
Roland Reichwein
ebd9a7026f
Make non STL builds independent of STL headers (#1621)
Fix etl::chrono floor/ceil/round/abs being declared in the wrong namespace

The duration overloads of floor, ceil, round and abs were defined in
namespace etl rather than etl::chrono, so qualified calls such as
etl::chrono::floor<seconds>(ms) only found the time_point overload and
failed to compile. Moved them into namespace chrono next to
duration_cast and removed the old etl-scope definitions, which also
fixes the unqualified calls made from time_point.h.

Fix comment about rounding behavior

Use cmath functions from std namespace

GCC 16 doesn't support them in the global namespace anymore.
2026-10-14 14:04:49 +01:00
Drew Rife
4903570496
Derive inverse configuration macros (#1626) 2026-10-14 14:02:19 +01:00
John Wellbelove
4038d89b7a Fix missing closing 'fi' 2026-10-14 13:24:03 +01:00
Roland Reichwein
d87cbd37f4
Add future.h (#1618) 2026-10-13 12:42:15 +02:00
fhgffy
41bfe65dda
Fix callbacks for Boolean byte-stream writes (#1615)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* Fix callbacks for Boolean byte-stream writes

Advance Boolean writes through the existing callback path and test checked
and unchecked writes, including rejected writes at full capacity.

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 18:42:06 +01:00
John Wellbelove
c98000a41a
Removed ETL_USE_TYPE_TRAITS_BUILTINS macro (#1616)
* Removed ETL_USE_TYPE_TRAITS_BUILTINS macro

* Added ETL_DISABLE_BUILTIN_FUNCTIONS to allow tests to to be run without using builtins

* clang-format updates

---------

Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 18:41:26 +01:00
Mike Bloom
45a1f58d7e
Deque check index operator (#1617)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* refresh codacy integration status

* deque check index operator

* Revert format

* Update documentation

* Change word 'array' to 'deque'

* Add checked index for circular buffer

* Fix doc

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 18:40:56 +01:00
John Wellbelove
1bd1072303
Reduce the compiled code size for etl::variant (#1623)
* Replaced pointer table with a recursive visitor call to reduce compiled code size.

* Removed the 32 type limit for visitor and operator visits

Deleted variant_select_do_operator and variant_select_do_visitor headers

* Restored CMakeLists.txt

Applied clang-format

* Updated documentation

Added guards to 'single index' do_operator_at and do_visitor_at

* Unified 'if (Index == index())' order

* Merged new tests from PR #1625

---------

Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 18:40:19 +01:00
Wadi
18fb69edd4
Share one dispatch for variant assign and construct (#1620)
* Add docs and tutorial for etl::intrusive_avl_tree (#1608)

* Add docs and tutorial for etl::intrusive_avl_tree

Documents the intrusive AVL tree added in PR #1425: a full API reference
page under Containers/Trees, and a tutorial demonstrating ordered access
to intrusively-linked objects with unpredictable lifetimes, including
move support and destructor-driven automatic removal from the tree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Add complexity shortcode and document its usage

Introduces a {{< complexity >}} Hugo shortcode (with light/dark styling
for constant/logarithmic/linear/linearithmic/polynomial/exponential
classes) for rendering Big-O complexity inline, applies it throughout
the intrusive_avl_tree API reference in place of raw "O(...)" text, and
documents the Description/Complexity structure and supported classes in
DOCUMENTATION.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix issues found by @CodeRabbit

* Put complexity notes on their own lines in intrusive_avl_tree docs

Move the complexity shortcode from the inline "**Complexity:**" label
to its own line under a "**Complexity**" label. Notes that give several
alternatives (e.g. amortized vs. worst-case) now show each one on a
separate line. Update the guideline in DOCUMENTATION.md to match.

* Update complexity examples in DOCUMENTATION.md

Add the hard line break after the "**Complexity**" label in the
example, and rewrite the list of supported complexity classes in the
new two-line format, including an example with several alternatives.

* Add logarithmic complexity example to DOCUMENTATION.md

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>

* Updated sponsors pages

* Refactor the documentation css to group styles for light and dark themes

* Update Codacy badge in README.md

Updated Codacy badge link to reflect new project status.

* Fix Codacy badge display

* refresh codacy integration status

* Share one dispatch for variant assign and construct

Since #1514, variant copy and move assignment dispatched on the
alternative up to three times: assign when the indices match, otherwise
destroy and construct. Assigning or constructing the source alternative
now shares a single dispatch, which recovers about half of the flash
growth reported in #1619 while keeping the std::variant assignment
semantics.

Add tests for move assignment between alternatives, assignment between
alternatives on the trivially destructible path, destruction of the
previous alternative, and a throwing copy leaving the variant valueless.

---------

Co-authored-by: Sergei <sergej.shirokov@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com>
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 14:35:20 +01:00
John Wellbelove
88c1b34411
Feature/to string float uses double math (#1610)
* Added overloaded etl::floor() and etl::ceil()

Added tests for float, double, long double

* Documented functions from math.h

* Added more math wrappers.

Move wrappers to clib namespace

* Cleanup of duplicated code.

* clang-format

* Code review updates

---------

Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
2026-10-12 09:36:21 +01:00
Roland Reichwein
a8ab0bbeea
error_handler.h: Remove return statements after throw (#1613) 2026-10-11 09:51:55 +02:00