18 #define HAL_kInvalidHandle 0
20 typedef int32_t HAL_Handle;
22 typedef HAL_Handle HAL_PortHandle;
24 typedef HAL_Handle HAL_AnalogInputHandle;
26 typedef HAL_Handle HAL_AnalogOutputHandle;
28 typedef HAL_Handle HAL_AnalogTriggerHandle;
30 typedef HAL_Handle HAL_CompressorHandle;
32 typedef HAL_Handle HAL_CounterHandle;
34 typedef HAL_Handle HAL_DigitalHandle;
36 typedef HAL_Handle HAL_DigitalPWMHandle;
38 typedef HAL_Handle HAL_EncoderHandle;
40 typedef HAL_Handle HAL_FPGAEncoderHandle;
42 typedef HAL_Handle HAL_GyroHandle;
44 typedef HAL_Handle HAL_InterruptHandle;
46 typedef HAL_Handle HAL_NotifierHandle;
48 typedef HAL_Handle HAL_RelayHandle;
50 typedef HAL_Handle HAL_SolenoidHandle;
52 typedef HAL_Handle HAL_SerialPortHandle;
54 typedef HAL_Handle HAL_CANHandle;
56 typedef HAL_Handle HAL_SimDeviceHandle;
58 typedef HAL_Handle HAL_SimValueHandle;
60 typedef HAL_Handle HAL_DMAHandle;
62 typedef HAL_Handle HAL_DutyCycleHandle;
64 typedef HAL_Handle HAL_AddressableLEDHandle;
66 typedef HAL_CANHandle HAL_PDPHandle;
68 typedef int32_t HAL_Bool;
71 #define HAL_ENUM(name) enum name : int32_t
73 #define HAL_ENUM(name) \
74 typedef int32_t name; \
85 template <
typename CType,
int32_t CInval
id = HAL_kInval
idHandle>
89 Handle(CType val) : m_handle(val) {}
91 Handle(
const Handle&) =
delete;
92 Handle& operator=(
const Handle&) =
delete;
94 Handle(Handle&& rhs) : m_handle(rhs.m_handle) { rhs.m_handle = CInvalid; }
96 Handle& operator=(Handle&& rhs) {
97 m_handle = rhs.m_handle;
98 rhs.m_handle = CInvalid;
102 operator CType()
const {
return m_handle; }
105 CType m_handle = CInvalid;