From bbaf90d6e59875b93fd802dafcd096036bbd8bbd Mon Sep 17 00:00:00 2001 From: Horror Proton <107091537+horror-proton@users.noreply.github.com> Date: Thu, 21 Jul 2022 11:11:39 +0800 Subject: [PATCH] feat: add binary operators and argumented assignment operators for `asst::Point` --- src/MeoAssistant/AsstTypes.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/MeoAssistant/AsstTypes.h b/src/MeoAssistant/AsstTypes.h index 1087420a63..a15a13f811 100644 --- a/src/MeoAssistant/AsstTypes.h +++ b/src/MeoAssistant/AsstTypes.h @@ -44,6 +44,16 @@ namespace asst static constexpr Point up() { return Point(0, -1); } int x = 0; int y = 0; + +#define DEFINE_ASST_POINT_BINARY_OP_AND_ARG_ASSIGN(Op) \ +friend Point operator Op (const Point& lhs, const Point& rhs) { return {lhs.x Op rhs.x, lhs.y Op rhs.y}; } \ +friend Point& operator Op##= (Point& val, const Point& opd) { val.x Op##= opd.x; val.y Op##= opd.y; return val; } + + DEFINE_ASST_POINT_BINARY_OP_AND_ARG_ASSIGN(+) + DEFINE_ASST_POINT_BINARY_OP_AND_ARG_ASSIGN(-) + DEFINE_ASST_POINT_BINARY_OP_AND_ARG_ASSIGN(*) + +#undef DEFINE_ASST_POINT_BINARY_OP_AND_ARG_ASSIGN }; struct Rect