WPILibC++ 2025.2.1
Loading...
Searching...
No Matches
hal::DigitalHandleResource< THandle, TStruct, size > Class Template Reference

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

#include <hal/handles/DigitalHandleResource.h>

Inheritance diagram for hal::DigitalHandleResource< THandle, TStruct, size >:
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 hal::HandleBase
 HandleBase ()
 
 ~HandleBase ()
 
 HandleBase (const HandleBase &)=delete
 
HandleBaseoperator= (const HandleBase &)=delete
 

Friends

class DigitalHandleResourceTest
 

Additional Inherited Members

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

Detailed Description

template<typename THandle, typename TStruct, int16_t size>
class 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>
hal::DigitalHandleResource< THandle, TStruct, size >::DigitalHandleResource ( )
default

◆ DigitalHandleResource() [2/2]

template<typename THandle , typename TStruct , int16_t size>
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 > 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 hal::DigitalHandleResource< THandle, TStruct, size >::Free ( THandle handle,
HAL_HandleEnum enumValue )

◆ Get()

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

◆ GetIndex()

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

◆ operator=()

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

◆ ResetHandles()

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

Reimplemented from hal::HandleBase.

Friends And Related Symbol Documentation

◆ DigitalHandleResourceTest

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

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