From bcb18218aa7cca5d0e5312695f2e555d38d8b6ae Mon Sep 17 00:00:00 2001 From: Anton Tarasenko Date: Thu, 22 Apr 2021 15:17:37 +0700 Subject: [PATCH] Add signal/slot classes for simple signature --- sources/Events/SimpleSignal.uc | 38 ++++++++++++++++++++++++++++++++ sources/Events/SimpleSlot.uc | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 sources/Events/SimpleSignal.uc create mode 100644 sources/Events/SimpleSlot.uc diff --git a/sources/Events/SimpleSignal.uc b/sources/Events/SimpleSignal.uc new file mode 100644 index 0000000..d8bc7bb --- /dev/null +++ b/sources/Events/SimpleSignal.uc @@ -0,0 +1,38 @@ +/** + * Signal class for signals without parameters or return type. + * Copyright 2021 Anton Tarasenko + *------------------------------------------------------------------------------ + * This file is part of Acedia. + * + * Acedia is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License, or + * (at your option) any later version. + * + * Acedia is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Acedia. If not, see . + */ +class SimpleSignal extends Signal; + +public final function Emit() +{ + local Slot nextSlot; + StartIterating(); + nextSlot = GetNextSlot(); + while (nextSlot != none) + { + SimpleSlot(nextSlot).connect(); + nextSlot = GetNextSlot(); + } + CleanEmptySlots(); +} + +defaultproperties +{ + relatedSlotClass = class'SimpleSlot' +} \ No newline at end of file diff --git a/sources/Events/SimpleSlot.uc b/sources/Events/SimpleSlot.uc new file mode 100644 index 0000000..a6303f1 --- /dev/null +++ b/sources/Events/SimpleSlot.uc @@ -0,0 +1,40 @@ +/** + * Slot class for signals without parameters or return type. + * Copyright 2021 Anton Tarasenko + *------------------------------------------------------------------------------ + * This file is part of Acedia. + * + * Acedia is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License, or + * (at your option) any later version. + * + * Acedia is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Acedia. If not, see . + */ +class SimpleSlot extends Slot; + +delegate connect() +{ + DummyCall(); +} + +protected function Constructor() +{ + connect = none; +} + +protected function Finalizer() +{ + super.Finalizer(); + connect = none; +} + +defaultproperties +{ +} \ No newline at end of file