WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
wpi::hal::DigitalHandleResource< THandle, TStruct, size > Class Template Reference

The DigitalHandleResource class is a way to track handles. More...

#include <wpi/hal/handles/DigitalHandleResource.hpp>

Inheritance diagram for wpi::hal::DigitalHandleResource< THandle, TStruct, size >:
wpi::hal::HandleBase

Public Member Functions

 DigitalHandleResource ()=default
 DigitalHandleResource (const DigitalHandleResource &)=delete
DigitalHandleResourceoperator= (const DigitalHandleResource &)=delete
std::shared_ptr< TStruct > Allocate (int16_t index, HAL_HandleEnum enumValue, THandle *handle, int32_t *status)
int16_t GetIndex (THandle handle, HAL_HandleEnum enumValue)
std::shared_ptr< TStruct > Get (THandle handle, HAL_HandleEnum enumValue)
void Free (THandle handle, HAL_HandleEnum enumValue)
void ResetHandles () override
Public Member Functions inherited from wpi::hal::HandleBase
 HandleBase ()
 ~HandleBase ()
 HandleBase (const HandleBase &)=delete
HandleBaseoperator= (const HandleBase &)=delete

Friends

class DigitalHandleResourceTest

Additional Inherited Members

Static Public Member Functions inherited from wpi::hal::HandleBase
static void ResetGlobalHandles ()
Protected Attributes inherited from wpi::hal::HandleBase
int16_t m_version

Detailed Description

template<typename THandle, typename TStruct, int16_t size>
class wpi::hal::DigitalHandleResource< THandle, TStruct, size >

The DigitalHandleResource class is a way to track handles.

This version allows a limited number of handles that are allocated by index. The enum value is separate, as 2 enum values are allowed per handle Because they are allocated by index, each individual index holds its own mutex, which reduces contention heavily.

Template Parameters
THandleThe Handle Type (Must be typedefed from HAL_Handle)
TStructThe struct type held by this resource
sizeThe number of resources allowed to be allocated

Constructor & Destructor Documentation

◆ DigitalHandleResource() [1/2]

template<typename THandle, typename TStruct, int16_t size>
wpi::hal::DigitalHandleResource< THandle, TStruct, size >::DigitalHandleResource ( )
default

◆ DigitalHandleResource() [2/2]

template<typename THandle, typename TStruct, int16_t size>
wpi::hal::DigitalHandleResource< THandle, TStruct, size >::DigitalHandleResource ( const DigitalHandleResource< THandle, TStruct, size > & )
delete

Member Function Documentation

◆ Allocate()

template<typename THandle, typename TStruct, int16_t size>
std::shared_ptr< TStruct > wpi::hal::DigitalHandleResource< THandle, TStruct, size >::Allocate ( int16_t index,
HAL_HandleEnum enumValue,
THandle * handle,
int32_t * status )

◆ Free()

template<typename THandle, typename TStruct, int16_t size>
void wpi::hal::DigitalHandleResource< THandle, TStruct, size >::Free ( THandle handle,
HAL_HandleEnum enumValue )

◆ Get()

template<typename THandle, typename TStruct, int16_t size>
std::shared_ptr< TStruct > wpi::hal::DigitalHandleResource< THandle, TStruct, size >::Get ( THandle handle,
HAL_HandleEnum enumValue )

◆ GetIndex()

template<typename THandle, typename TStruct, int16_t size>
int16_t wpi::hal::DigitalHandleResource< THandle, TStruct, size >::GetIndex ( THandle handle,
HAL_HandleEnum enumValue )
inline

◆ operator=()

template<typename THandle, typename TStruct, int16_t size>
DigitalHandleResource & wpi::hal::DigitalHandleResource< THandle, TStruct, size >::operator= ( const DigitalHandleResource< THandle, TStruct, size > & )
delete

◆ ResetHandles()

template<typename THandle, typename TStruct, int16_t size>
void wpi::hal::DigitalHandleResource< THandle, TStruct, size >::ResetHandles ( )
overridevirtual

Reimplemented from wpi::hal::HandleBase.

◆ DigitalHandleResourceTest

template<typename THandle, typename TStruct, int16_t size>
friend class DigitalHandleResourceTest
friend

The documentation for this class was generated from the following file: