From bb491127847ddf0a164a523779484d2269fdab83 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 16 Jan 2024 20:38:42 +0100 Subject: [PATCH] Codechange: switch our codebase to C++20 --- .github/workflows/ci-build.yml | 8 ++++---- CMakeLists.txt | 2 +- src/blitter/32bpp_anim_sse4.cpp | 2 +- src/direction_func.h | 8 ++++---- src/fileio_type.h | 2 +- src/script/api/script_rail.cpp | 2 +- src/script/api/script_station.cpp | 2 +- src/script/api/script_stationlist.cpp | 2 +- src/script/api/script_waypoint.cpp | 2 +- src/script/api/script_waypointlist.cpp | 2 +- src/slope_func.h | 4 ++-- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e5e6e6e5a4..df771b6012 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -74,12 +74,12 @@ jobs: matrix: include: - name: Clang - Debug - compiler: clang - cxxcompiler: clang++ + compiler: clang-15 + cxxcompiler: clang++-15 libraries: libsdl2-dev - name: Clang - Release - compiler: clang - cxxcompiler: clang++ + compiler: clang-15 + cxxcompiler: clang++-15 libraries: libsdl2-dev extra-cmake-parameters: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DOPTION_USE_ASSERTS=OFF - name: GCC - SDL2 diff --git a/CMakeLists.txt b/CMakeLists.txt index d1da5bad10..6cc0880f5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ set_directory_options() include(Static) set_static_if_needed() -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED YES) set(CMAKE_CXX_EXTENSIONS NO) diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp index 5154a3f082..031f0cc985 100644 --- a/src/blitter/32bpp_anim_sse4.cpp +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -31,7 +31,7 @@ static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim; IGNORE_UNINITIALIZED_WARNING_START template GNU_TARGET("sse4.1") -inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom) +inline void Blitter_32bppSSE4_Anim::Draw(const BlitterParams *bp, ZoomLevel zoom) { const byte * const remap = bp->remap; Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; diff --git a/src/direction_func.h b/src/direction_func.h index b35133530a..396943b024 100644 --- a/src/direction_func.h +++ b/src/direction_func.h @@ -71,7 +71,7 @@ inline DirDiff DirDifference(Direction d0, Direction d1) assert(IsValidDirection(d1)); /* Cast to uint so compiler can use bitmask. If the difference is negative * and we used int instead of uint, further "+ 8" would have to be added. */ - return (DirDiff)((uint)(d0 - d1) % 8); + return static_cast(static_cast(d0) - static_cast(d1) % 8); } /** @@ -88,7 +88,7 @@ inline DirDiff DirDifference(Direction d0, Direction d1) inline DirDiff ChangeDirDiff(DirDiff d, DirDiff delta) { /* Cast to uint so compiler can use bitmask. Result can never be negative. */ - return (DirDiff)((uint)(d + delta) % 8); + return static_cast((static_cast(d) + static_cast(delta)) % 8); } /** @@ -105,7 +105,7 @@ inline Direction ChangeDir(Direction d, DirDiff delta) { assert(IsValidDirection(d)); /* Cast to uint so compiler can use bitmask. Result can never be negative. */ - return (Direction)((uint)(d + delta) % 8); + return static_cast((static_cast(d) + static_cast(delta)) % 8); } @@ -150,7 +150,7 @@ inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta) { assert(IsValidDiagDirection(d)); /* Cast to uint so compiler can use bitmask. Result can never be negative. */ - return (DiagDirection)((uint)(d + delta) % 4); + return static_cast((static_cast(d) + static_cast(delta)) % 4); } /** diff --git a/src/fileio_type.h b/src/fileio_type.h index 14acf07971..66d502d88a 100644 --- a/src/fileio_type.h +++ b/src/fileio_type.h @@ -89,7 +89,7 @@ enum FiosType { */ inline AbstractFileType GetAbstractFileType(FiosType fios_type) { - return static_cast(fios_type & FT_MASK); + return static_cast(static_cast(fios_type) & FT_MASK); } /** diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index 88f88e6048..001d7952d8 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -250,7 +250,7 @@ EnforceCompanyModeValid(false); EnforcePrecondition(false, ::IsValidTile(tile)); EnforcePrecondition(false, rail_track != 0); - EnforcePrecondition(false, (rail_track & ~::TRACK_BIT_ALL) == 0); + EnforcePrecondition(false, (static_cast(rail_track) & ~static_cast(::TRACK_BIT_ALL)) == 0); EnforcePrecondition(false, KillFirstBit((uint)rail_track) == 0); EnforcePrecondition(false, IsRailTypeAvailable(GetCurrentRailType())); diff --git a/src/script/api/script_station.cpp b/src/script/api/script_station.cpp index 83bfde2958..ee3ff0d5d6 100644 --- a/src/script/api/script_station.cpp +++ b/src/script/api/script_station.cpp @@ -203,7 +203,7 @@ template if (!IsValidStation(station_id)) return false; if (!HasExactlyOneBit(station_type)) return false; - return (::Station::Get(station_id)->facilities & station_type) != 0; + return (::Station::Get(station_id)->facilities & static_cast(station_type)) != 0; } /* static */ bool ScriptStation::HasRoadType(StationID station_id, ScriptRoad::RoadType road_type) diff --git a/src/script/api/script_stationlist.cpp b/src/script/api/script_stationlist.cpp index 2051679eca..d2c1d532b1 100644 --- a/src/script/api/script_stationlist.cpp +++ b/src/script/api/script_stationlist.cpp @@ -23,7 +23,7 @@ ScriptStationList::ScriptStationList(ScriptStation::StationType station_type) CompanyID owner = ScriptObject::GetCompany(); ScriptList::FillList(this, [is_deity, owner, station_type](const Station *st) { - return (is_deity || st->owner == owner) && (st->facilities & station_type) != 0; + return (is_deity || st->owner == owner) && (st->facilities & static_cast(station_type)) != 0; } ); } diff --git a/src/script/api/script_waypoint.cpp b/src/script/api/script_waypoint.cpp index 5f7bceaa61..84c2a4aeb6 100644 --- a/src/script/api/script_waypoint.cpp +++ b/src/script/api/script_waypoint.cpp @@ -34,5 +34,5 @@ if (!IsValidWaypoint(waypoint_id)) return false; if (!HasExactlyOneBit(waypoint_type)) return false; - return (::Waypoint::Get(waypoint_id)->facilities & waypoint_type) != 0; + return (::Waypoint::Get(waypoint_id)->facilities & static_cast(waypoint_type)) != 0; } diff --git a/src/script/api/script_waypointlist.cpp b/src/script/api/script_waypointlist.cpp index f137bea190..2332655c2e 100644 --- a/src/script/api/script_waypointlist.cpp +++ b/src/script/api/script_waypointlist.cpp @@ -23,7 +23,7 @@ ScriptWaypointList::ScriptWaypointList(ScriptWaypoint::WaypointType waypoint_typ CompanyID owner = ScriptObject::GetCompany(); ScriptList::FillList(this, [is_deity, owner, waypoint_type](const Waypoint *wp) { - return (is_deity || wp->owner == owner || wp->owner == OWNER_NONE) && (wp->facilities & waypoint_type) != 0; + return (is_deity || wp->owner == owner || wp->owner == OWNER_NONE) && (wp->facilities & static_cast(waypoint_type)) != 0; } ); } diff --git a/src/slope_func.h b/src/slope_func.h index b6217ae035..2d78faea3b 100644 --- a/src/slope_func.h +++ b/src/slope_func.h @@ -391,7 +391,7 @@ inline Foundation InclinedFoundation(Axis axis) inline Foundation HalftileFoundation(Corner corner) { assert(IsValidCorner(corner)); - return (Foundation)(FOUNDATION_HALFTILE_W + corner); + return static_cast(static_cast(FOUNDATION_HALFTILE_W) + static_cast(corner)); } /** @@ -403,7 +403,7 @@ inline Foundation HalftileFoundation(Corner corner) inline Foundation SpecialRailFoundation(Corner corner) { assert(IsValidCorner(corner)); - return (Foundation)(FOUNDATION_RAIL_W + corner); + return static_cast(static_cast(FOUNDATION_RAIL_W) + static_cast(corner)); } /**