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:
Tyler Veness
2022-10-15 16:33:14 -07:00
committed by GitHub
parent 396143004c
commit fbdc810887
355 changed files with 1659 additions and 2918 deletions

View File

@@ -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));
}
/*

View File

@@ -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));
}
/*

View File

@@ -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,

View File

@@ -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 {};

View File

@@ -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;