mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-29 02:21:44 +00:00
Upgrade to C++20 (#4239)
* Use explicit this capture required by C++20 * Use C++20 span * Replace wpi::numbers with std::numbers * Fix C++20 clang-tidy warning false positive in fmt * Remove ciso646 include since C++20 removed that header * Fix global-buffer-overflow asan warnings in ntcore tests * Add DIOSetProxy constructor to HAL * Upgrade MSVC compiler to 2022 * Bump native-utils to 2023.2.7 (changes to std=c++20) Co-authored-by: Peter Johnson <johnson.peter@gmail.com>
This commit is contained in:
@@ -257,7 +257,7 @@ Java_edu_wpi_first_hal_simulation_AddressableLEDDataJNI_getData
|
||||
std::make_unique<HAL_AddressableLEDData[]>(HAL_kAddressableLEDMaxLength);
|
||||
int32_t length = HALSIM_GetAddressableLEDData(index, data.get());
|
||||
return MakeJByteArray(
|
||||
env, wpi::span(reinterpret_cast<jbyte*>(data.get()), length * 4));
|
||||
env, std::span(reinterpret_cast<jbyte*>(data.get()), length * 4));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -668,7 +668,7 @@ Java_edu_wpi_first_hal_simulation_SimDeviceDataJNI_getSimValueEnumDoubleValues
|
||||
{
|
||||
int32_t numElems = 0;
|
||||
const double* elems = HALSIM_GetSimValueEnumDoubleValues(handle, &numElems);
|
||||
return MakeJDoubleArray(env, wpi::span(elems, numElems));
|
||||
return MakeJDoubleArray(env, std::span(elems, numElems));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -59,7 +59,7 @@ int32_t SpiReadAutoReceiveBufferCallbackStore::performCallback(
|
||||
}
|
||||
|
||||
auto toCallbackArr = MakeJIntArray(
|
||||
env, wpi::span<const uint32_t>{buffer, static_cast<size_t>(numToRead)});
|
||||
env, std::span<const uint32_t>{buffer, static_cast<size_t>(numToRead)});
|
||||
|
||||
jint ret = env->CallIntMethod(m_call, sim::GetBufferCallback(),
|
||||
MakeJString(env, name), toCallbackArr,
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <initializer_list>
|
||||
|
||||
#include <wpi/span.h>
|
||||
#include <span>
|
||||
#endif
|
||||
|
||||
#include "hal/Types.h"
|
||||
@@ -832,7 +831,7 @@ class SimDevice {
|
||||
* @return simulated enum value object
|
||||
*/
|
||||
SimEnum CreateEnum(const char* name, int32_t direction,
|
||||
wpi::span<const char* const> options,
|
||||
std::span<const char* const> options,
|
||||
int32_t initialValue) {
|
||||
return HAL_CreateSimValueEnum(m_handle, name, direction, options.size(),
|
||||
const_cast<const char**>(options.data()),
|
||||
@@ -885,8 +884,8 @@ class SimDevice {
|
||||
* @return simulated enum value object
|
||||
*/
|
||||
SimEnum CreateEnumDouble(const char* name, int32_t direction,
|
||||
wpi::span<const char* const> options,
|
||||
wpi::span<const double> optionValues,
|
||||
std::span<const char* const> options,
|
||||
std::span<const double> optionValues,
|
||||
int32_t initialValue) {
|
||||
if (options.size() != optionValues.size()) {
|
||||
return {};
|
||||
|
||||
@@ -18,6 +18,16 @@ namespace hal {
|
||||
* outside of the UnsafeManipulateDIO callback.
|
||||
*/
|
||||
struct DIOSetProxy {
|
||||
DIOSetProxy(tDIO::tOutputEnable setOutputDirReg,
|
||||
tDIO::tOutputEnable unsetOutputDirReg,
|
||||
tDIO::tDO setOutputStateReg, tDIO::tDO unsetOutputStateReg,
|
||||
tDIO* dio)
|
||||
: m_setOutputDirReg{setOutputDirReg},
|
||||
m_unsetOutputDirReg{unsetOutputDirReg},
|
||||
m_setOutputStateReg{setOutputStateReg},
|
||||
m_unsetOutputStateReg{unsetOutputStateReg},
|
||||
m_dio{dio} {}
|
||||
|
||||
DIOSetProxy(const DIOSetProxy&) = delete;
|
||||
DIOSetProxy(DIOSetProxy&&) = delete;
|
||||
DIOSetProxy& operator=(const DIOSetProxy&) = delete;
|
||||
|
||||
Reference in New Issue
Block a user