#ifndef STA_RTOS_HANDLE_TPP #define STA_RTOS_HANDLE_TPP #ifndef STA_RTOS_HANDLE_HPP # error "Internal header. Use instead." #endif // !STA_RTOS_HANDLE_HPP #include namespace sta { template RtosHandle::Deferred::Deferred(handle_type * handlePointer) : pointer{handlePointer} {} template RtosHandle::RtosHandle(handle_type handle) : handle_{handle}, deferred_{false} {} template RtosHandle::RtosHandle(Deferred handle) : handle_{handle.pointer}, deferred_{true} { STA_ASSERT(handle.pointer != nullptr); } template typename RtosHandle::handle_type RtosHandle::get() { if (deferred_) { // Dereference void ** in handle handle_ = *reinterpret_cast(handle_); deferred_ = false; } return handle_; } } // namespace sta #endif // STA_RTOS_HANDLE_TPP