1 #ifndef RADEMBEDDEDKERNEL_RAD_CPP_H
2 #define RADEMBEDDEDKERNEL_RAD_CPP_H
28 constexpr
Span() =
default;
30 constexpr T *
data()
const {
return data_; }
31 constexpr
size_t size()
const {
return size_; }
32 constexpr
bool empty()
const {
return size_ == 0; }
33 constexpr T&
operator[](
size_t index)
const {
return data_[index]; }
34 constexpr T *
begin()
const {
return data_; }
35 constexpr T *
end()
const {
return data_ + size_; }
41 template <
typename Handle,
void (*CloseFn)(Handle)>
45 explicit constexpr
UniqueHandle(Handle handle) : handle_(handle) {}
51 if (
this != &other)
reset(other.release());
54 constexpr Handle
get()
const {
return handle_; }
55 constexpr
explicit operator bool()
const {
return handle_ !=
nullptr; }
57 Handle handle = handle_;
61 void reset(Handle handle =
nullptr) {
62 if (handle_) CloseFn(handle_);
66 Handle handle_ =
nullptr;
114 const char *name_ =
nullptr;
Event(bool signaled=false)
Definition: rad_cpp.h:91
rad_status_t status() const
Definition: rad_cpp.h:95
rad_status_t reset()
Definition: rad_cpp.h:98
~Event()
Definition: rad_cpp.h:92
rad_status_t signal()
Definition: rad_cpp.h:97
Event & operator=(const Event &)=delete
Event(const Event &)=delete
rad_status_t wait(uint32_t timeout_ms)
Definition: rad_cpp.h:96
Definition: rad_cpp.h:104
Module(const rad_module_descriptor_t &descriptor)
Definition: rad_cpp.h:106
Module(const Module &)=delete
rad_status_t status() const
Definition: rad_cpp.h:112
Module & operator=(const Module &)=delete
~Module()
Definition: rad_cpp.h:109
~Mutex()
Definition: rad_cpp.h:77
Mutex()
Definition: rad_cpp.h:76
Mutex & operator=(const Mutex &)=delete
rad_mutex_t native() const
Definition: rad_cpp.h:83
rad_status_t lock()
Definition: rad_cpp.h:81
rad_status_t status() const
Definition: rad_cpp.h:80
Mutex(const Mutex &)=delete
rad_status_t unlock()
Definition: rad_cpp.h:82
constexpr Span(T *data, size_t size)
Definition: rad_cpp.h:29
constexpr size_t size() const
Definition: rad_cpp.h:31
constexpr bool empty() const
Definition: rad_cpp.h:32
constexpr T & operator[](size_t index) const
Definition: rad_cpp.h:33
constexpr T * data() const
Definition: rad_cpp.h:30
constexpr T * end() const
Definition: rad_cpp.h:35
constexpr T * begin() const
Definition: rad_cpp.h:34
void reset(Handle handle=nullptr)
Definition: rad_cpp.h:61
constexpr Handle get() const
Definition: rad_cpp.h:54
Handle release()
Definition: rad_cpp.h:56
constexpr UniqueHandle()=default
UniqueHandle(UniqueHandle &&other) noexcept
Definition: rad_cpp.h:49
UniqueHandle & operator=(const UniqueHandle &)=delete
UniqueHandle(const UniqueHandle &)=delete
UniqueHandle & operator=(UniqueHandle &&other) noexcept
Definition: rad_cpp.h:50
~UniqueHandle()
Definition: rad_cpp.h:46
constexpr UniqueHandle(Handle handle)
Definition: rad_cpp.h:45
constexpr bool failed(rad_status_t status)
Definition: rad_cpp.h:23
constexpr bool succeeded(rad_status_t status)
Definition: rad_cpp.h:22
Status
Definition: rad_cpp.h:10
Portable embedded kernel service ABI for RADLib.
rad_status_t rad_module_unregister(const char *name)
rad_status_t rad_mutex_unlock(rad_mutex_t mutex)
struct rad_mutex_handle * rad_mutex_t
Definition: radekernel.h:875
rad_status_t rad_event_create(rad_event_t *event, int initially_signaled)
rad_status_t rad_mutex_create(rad_mutex_t *mutex)
rad_status_t rad_module_register(const rad_module_descriptor_t *descriptor)
rad_status_t rad_mutex_lock(rad_mutex_t mutex)
rad_status_t rad_event_wait(rad_event_t event, uint32_t timeout_ms)
@ RAD_STATUS_NOT_INITIALIZED
Definition: radekernel.h:107
@ RAD_STATUS_ERROR
Definition: radekernel.h:100
@ RAD_STATUS_NO_MEMORY
Definition: radekernel.h:103
@ RAD_STATUS_NOT_SUPPORTED
Definition: radekernel.h:105
@ RAD_STATUS_NOT_FOUND
Definition: radekernel.h:102
@ RAD_STATUS_ALREADY_EXISTS
Definition: radekernel.h:106
@ RAD_STATUS_INVALID_ARGUMENT
Definition: radekernel.h:101
@ RAD_STATUS_TIMEOUT
Definition: radekernel.h:104
@ RAD_STATUS_OK
Definition: radekernel.h:99
rad_status_t rad_event_signal(rad_event_t event)
rad_status_t rad_event_reset(rad_event_t event)
void rad_event_destroy(rad_event_t event)
struct rad_event_handle * rad_event_t
Definition: radekernel.h:876
void rad_mutex_destroy(rad_mutex_t mutex)
enum rad_status rad_status_t
Definition: radekernel.h:742