* 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>
Add unsigned char/const unsigned char span overloads to byte_stream_reader
to match byte_stream_writer, resolving overload ambiguity (#1533). Add
tests covering span construction for both classes.
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>
Updated CI scripts
#786 u8string
#783 Cannot insert existing value to full set
#781 etl::multi_span::iterator::operator *() fails if first span is empty
#780 endian enum_type produces useless-cast warnings
#779 hash.h: warnings produced with -Wfloat-equal
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