Skip to content

Commit 0641df3

Browse files
authored
Merge pull request #694 from scratchcpp/cpp20
Update to C++20
2 parents 8d1a165 + d884851 commit 0641df3

4 files changed

Lines changed: 7 additions & 11 deletions

File tree

‎CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14)
33
project(libscratchcpp VERSION 0.15.0 LANGUAGES C CXX)
44

55
set(CMAKE_INCLUDE_CURRENT_DIR ON)
6-
set(CMAKE_CXX_STANDARD 17)
6+
set(CMAKE_CXX_STANDARD 20)
77
set(CMAKE_CXX_STANDARD_REQUIRED ON)
88

99
option(LIBSCRATCHCPP_BUILD_UNIT_TESTS "Build unit tests" ON)

‎src/blocks/motionblocks.cpp‎

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
using namespace libscratchcpp;
2222

23-
static const double pi = std::acos(-1); // TODO: Use std::numbers::pi in C++20
24-
2523
std::string MotionBlocks::name() const
2624
{
2725
return "Motion";
@@ -357,7 +355,7 @@ CompilerValue *MotionBlocks::compileDirection(Compiler *compiler)
357355
BLOCK_EXPORT void motion_movesteps(Sprite *sprite, double steps)
358356
{
359357
double dir = sprite->direction();
360-
sprite->setPosition(sprite->x() + std::sin(dir * pi / 180) * steps, sprite->y() + std::cos(dir * pi / 180) * steps);
358+
sprite->setPosition(sprite->x() + std::sin(dir * std::numbers::pi / 180) * steps, sprite->y() + std::cos(dir * std::numbers::pi / 180) * steps);
361359
}
362360

363361
BLOCK_EXPORT void motion_turnright(Sprite *sprite, double degrees)
@@ -387,9 +385,9 @@ inline void motion_point_towards_pos(Sprite *sprite, double x, double y)
387385
else
388386
sprite->setDirection(90);
389387
} else if (deltaY < 0)
390-
sprite->setDirection(180 + (180 / pi) * std::atan(deltaX / deltaY));
388+
sprite->setDirection(180 + (180 / std::numbers::pi) * std::atan(deltaX / deltaY));
391389
else
392-
sprite->setDirection((180 / pi) * std::atan(deltaX / deltaY));
390+
sprite->setDirection((180 / std::numbers::pi) * std::atan(deltaX / deltaY));
393391
}
394392

395393
BLOCK_EXPORT void motion_point_towards_mouse(Sprite *sprite)
@@ -678,7 +676,7 @@ BLOCK_EXPORT void motion_ifonedgebounce(Sprite *sprite)
678676
assert(nearestEdge != 0);
679677

680678
// Point away from the nearest edge
681-
double radians = (90 - sprite->direction()) * pi / 180;
679+
double radians = (90 - sprite->direction()) * std::numbers::pi / 180;
682680
double dx = std::cos(radians);
683681
double dy = -std::sin(radians);
684682

@@ -704,7 +702,7 @@ BLOCK_EXPORT void motion_ifonedgebounce(Sprite *sprite)
704702
break;
705703
}
706704

707-
double newDirection = (180 / pi) * (std::atan2(dy, dx)) + 90;
705+
double newDirection = (180 / std::numbers::pi) * (std::atan2(dy, dx)) + 90;
708706
sprite->setDirection(newDirection);
709707

710708
// Keep within the stage

‎src/scratch/sprite_p.cpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
using namespace libscratchcpp;
1212

13-
static const double pi = std::acos(-1); // TODO: Use std::numbers::pi in C++20
1413
static const double FENCE_WIDTH = 15;
1514

1615
SpritePrivate::SpritePrivate(Sprite *sprite) :

‎src/scratch/string_functions.cpp‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ extern "C"
2121
size++; // null terminator
2222

2323
if (str->allocatedSize < size) {
24-
// TODO: Use std::bit_ceil() in C++20
25-
const size_t newSize = std::pow(2, std::ceil(std::log2(size)));
24+
const size_t newSize = std::bit_ceil(size);
2625
assert((str->data && str->allocatedSize > 0) || (!str->data && str->allocatedSize == 0));
2726

2827
if (str->data)

0 commit comments

Comments
 (0)