allow the usage of "static queues" (based on std::array) for process_queue and defer_queue #615
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem:
All examples for
sml::process_queue
andsml::defer_queue
are based onstd::queue
.While this approach is fine for desktop c++, some use cases exist where dynamic allocations are not allowed / desired.
Some examples are:
As boost::sml is a library that targets embedded systems, it should allow the use of pre-allocated queues.
Solution:
I enabled the use of pre-allocated queues by making
queue_event
default constructible.This allows storing instances of
queue_event
in a container that pre-allocates all elements upon construction (e.g.std::array
).I added additional tests in
actions_process.cpp
,actions_defer.cpp
andactions_process_n_defer.cpp
thatuse
std::array
based queues and deques.