![]() |
Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
|
A namespace used by Barak Shoshany's projects. More...
Classes | |
| struct | block_task |
A function object class used by detach_blocks() and submit_blocks() to execute a block function over a specified range of indices. More... | |
| class | blocks |
A helper class to divide a range into blocks. Used by detach_blocks(), submit_blocks(), detach_loop(), and submit_loop(). More... | |
| struct | common_index_type |
A meta-programming template to determine the common type of two integer types. Unlike std::common_type, this template maintains correct signedness. More... | |
| struct | common_index_type< T1, T2, std::enable_if_t< std::is_signed_v< T1 > &&std::is_signed_v< T2 > > > |
| struct | common_index_type< T1, T2, std::enable_if_t< std::is_unsigned_v< T1 > &&std::is_unsigned_v< T2 > > > |
| struct | common_index_type< T1, T2, std::enable_if_t<(std::is_signed_v< T1 > &&std::is_unsigned_v< T2 >)||(std::is_unsigned_v< T1 > &&std::is_signed_v< T2 >)> > |
| struct | loop_task |
A function object class used by detach_loop() and submit_loop() to execute a loop function over a specified range of indices. More... | |
| class | move_only_function |
| class | move_only_function< R(Args...)> |
A simple polyfill for std::move_only_function, to be used if C++23 features are not available. Note that it does not have all the features of std::move_only_function, only the minimum needed for the thread pool library. More... | |
| class | multi_future |
| A helper class to facilitate waiting for and/or getting the results of multiple futures at once. More... | |
| struct | pr_task |
| A helper struct to store a task with an assigned priority. More... | |
| struct | sequence_task |
A function object class used by detach_sequence() and submit_sequence() to execute a sequence function over a specified index. More... | |
| class | synced_stream |
| A utility class to synchronize printing to one or more output streams by different threads. More... | |
| struct | task_and_future |
A class that takes a function with a return value (but no arguments), and constructs a task with no return value along with a future used to retrieve the function's return value once the task is executed. Used by submit_task() and submit_bulk(). More... | |
| class | this_thread |
| A class used to obtain information about the current thread and, if native extensions are enabled, get/set its priority, affinity, or name. More... | |
| class | thread_pool |
| A fast, lightweight, modern, and easy-to-use C++17/C++20/C++23 thread pool class. More... | |
| struct | version |
| A struct used to store a version number, which can be checked and compared at compilation time. More... | |
Typedefs | |
| using | opt_t = std::uint8_t |
| The type used for the bitmask template parameter of the thread pool. | |
| using | task_t = move_only_function< void()> |
| The type of tasks in the task queue. | |
| using | thread_t = std::thread |
The type of threads to use. In C++17 we use std::thread. | |
| using | priority_t = std::int8_t |
| A type used to indicate the priority of a task. Defined to be a signed integer with a width of exactly 8 bits (-128 to +127). | |
| template<typename T1 , typename T2 > | |
| using | common_index_type_t = typename common_index_type< T1, T2 >::type |
A helper type alias to obtain the common type from the template BS::common_index_type. | |
| using | light_thread_pool = thread_pool< tp::none > |
| A fast, lightweight, modern, and easy-to-use C++17/C++20/C++23 thread pool class. This alias defines a thread pool with all optional features disabled. | |
| using | priority_thread_pool = thread_pool< tp::priority > |
| A fast, lightweight, modern, and easy-to-use C++17/C++20/C++23 thread pool class. This alias defines a thread pool with task priority enabled. | |
| using | pause_thread_pool = thread_pool< tp::pause > |
| A fast, lightweight, modern, and easy-to-use C++17/C++20/C++23 thread pool class. This alias defines a thread pool with pausing enabled. | |
| using | wdc_thread_pool = thread_pool< tp::wait_deadlock_checks > |
| A fast, lightweight, modern, and easy-to-use C++17/C++20/C++23 thread pool class. This alias defines a thread pool with wait deadlock checks enabled. | |
Enumerations | |
| enum class | tp : opt_t { none = 0 , priority = 1 << 0 , pause = 1 << 1 , wait_deadlock_checks = 1 << 2 } |
An enumeration class of flags to be used in the bitmask template parameter of BS::thread_pool to enable optional features. More... | |
| enum | pr : priority_t { lowest = -128 , low = -64 , normal = 0 , high = +64 , highest = +127 } |
| An enum containing some pre-defined priorities for convenience. More... | |
Functions | |
| constexpr version | thread_pool_version (BS_THREAD_POOL_VERSION_MAJOR, BS_THREAD_POOL_VERSION_MINOR, BS_THREAD_POOL_VERSION_PATCH) |
| The version of the thread pool library. | |
| constexpr tp | operator~ (const tp value) noexcept |
A namespace used by Barak Shoshany's projects.
| using BS::common_index_type_t = typedef typename common_index_type<T1, T2>::type |
A helper type alias to obtain the common type from the template BS::common_index_type.
| T1 | The first type. |
| T2 | The second type. |
An enumeration class of flags to be used in the bitmask template parameter of BS::thread_pool to enable optional features.
| Enumerator | |
|---|---|
| none | No optional features enabled. |
| priority | Enable task priority. |
| pause | Enable pausing. |
| wait_deadlock_checks | Enable wait deadlock checks. |
| enum BS::pr : priority_t |
An enum containing some pre-defined priorities for convenience.