mirror of
https://github.com/ETLCPP/etl.git
synced 2026-10-28 18:07:10 +08:00
* Help the compiler optimize unaligned_type. This fixes a regression in 266b0f99 when the type was made constexpr. When switching to a loop to construct the value the compiler was unable to detect what was going on. We now unroll the loop at compile time into what's essentially a hand rolled shift and OR operation which the compiler detects and replaces with a byte swap. Tested on gcc (x86+arm) and clang (x86). Introduce a static value_from which can be used to convert a value from an existing buffer. There were previously three options for this, all bad or awkward in different ways: - val = etl::be_uint32_t(address) Copies to temporary storage. - val = *reinterpret_cast<const etl::be_uint32_t*>(address); Unreadable. - etl::be_uint32_t::copy_store_to_value(address, output); Requires an output parameter. The new addition is: - val = etl::be_uint32_t::value_from(address); Additionally, update the documentation with value_from and the missing, existing constructors. * Please clang-format. --------- Co-authored-by: John Wellbelove <jwellbelove@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| binary | ||
| blog | ||
| callbacks | ||
| chrono | ||
| codecs | ||
| containers | ||
| getting-started | ||
| IO | ||
| iterators | ||
| maths | ||
| messaging | ||
| multi-tasking | ||
| patterns | ||
| pseudo-containers | ||
| ranges | ||
| releases | ||
| resourses | ||
| source | ||
| state machines | ||
| strings | ||
| timers | ||
| tutorials | ||
| types | ||
| utilities | ||
| _index.md | ||
| about.md | ||
| Is the ETL free.md | ||
| sponsors.md | ||