14 Commits

Author SHA1 Message Date
Nicolas Clauvelin
263bd8913d Project maintenance and review
This commit is a collection of changes related to:

- Code style fixes (including nolint) and formatting.
- Suppression of compiler warnings in bitwise operations.
- Minor edits (e.g. copyright dates).
2022-01-27 12:26:40 -05:00
Nicolas Clauvelin
c1081a114e Code maintenance
* Revise and simplify most enable_if statements in the project.
* Update code style in all files.
* Update copyright year.
* Add a dedicated Memory.h header with the memory device implementation.
* Update documentation.
* CMake cleanup.
2019-04-24 17:00:57 -04:00
Nicolas Clauvelin
2e0d502674 BUG FIX IN MERGER WRITE IMPLEMENTATION FOR NON CONSTANT VALUES
* For write-only registers the merge write implementation for non-constant values
was properly updating the cache value.
* Unnecessary `inline` have been removed.
2018-11-16 09:28:47 -05:00
Nicolas Clauvelin
819a004588 API DOCUMENTATION UPDATED
Register pack loop revised for consistency.
2018-03-20 11:20:42 -04:00
Nicolas Clauvelin
5925c223c8 INTERNAL IMPLEMENTATIONS RELOCATED TO AN INTERNALS HEADER
The Internals.h contains the overflow, is_aligned and memory array
implementations.
2018-03-16 14:12:52 -04:00
Nicolas Clauvelin
23a5580d2b MINOR FIXES FOR CONSISTENCY PURPOSES 2018-03-15 17:24:03 -04:00
Nicolas Clauvelin
95288090d4 ADD ENUMERATION TYPE FOR SUPPORTED REGISTER SIZES
Register sizes are now represented by an enumeration type. This limits the
possibility to typeset unsupported register sizes, and make the interface easier
to read.

See #12.
2018-03-15 17:13:54 -04:00
Nicolas Clauvelin
c217f34e0c REVISED CHECKS FOR PACKED REGISTER ALIGNMENT
This now relies on a is_aligned implementation. This will needs to be adapted
once register width is defined through an enumeration.

See #12.
2018-03-15 16:16:42 -04:00
Nicolas Clauvelin
7b9a843e2d ADD MORE FUNCTIONALITY TO THE TEMPLATE FOR LOOP IMPLEMENTATION
This adds a C++14 apply method that can be used with polymorphic lambdas.
2018-03-13 17:29:15 -04:00
Nicolas Clauvelin
ee48bbd261 FIX FOR LOOP IMPLEMENTATION AND ADD RANGE LOOP
* Fixes a typo in the for_loop implementation.
* Add a range_loop implementation to help with indexed register pack.
2018-03-13 11:01:34 -04:00
Nicolas Clauvelin
49d19f1b20 FIX TYPO IN PACKED REGISTER STATIC ASSERT 2018-03-13 08:51:23 -04:00
Nicolas Clauvelin
bbdf513156 ADD MIXED REGISTER SIZES SUPPORT TO REGISTER PACK
This relies on a memory map implementation based on std::array and specialized
over the register size. PackedRegister can now be used with all supported
register sizes (i.e., widths).

This relates to #7 and the finalization of the API before performance testing.
2018-03-13 08:48:42 -04:00
Nicolas Clauvelin
ae6da9b7f5 REVISED REGISTER PACK IMPLEMENTATION FOR SIZE ISSUES
The revision brings the support for 16-bits and 32-bits registers.
2018-03-12 22:18:54 -04:00
Nicolas Clauvelin
984d4ceb58 ADD TEMPLATE FOR LOOP IMPLEMENTATION 2018-03-12 17:51:00 -04:00