From d44eed4e8824b98d72252fbf8c7c41a39e7d802b Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 7 Jul 2023 18:49:24 +0200 Subject: [PATCH] Add decorators to Port functions Signed-off-by: falkTX --- include/engine/Port.hpp | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/include/engine/Port.hpp b/include/engine/Port.hpp index c28549b..9993a4a 100644 --- a/include/engine/Port.hpp +++ b/include/engine/Port.hpp @@ -78,40 +78,40 @@ struct Port { }; /** Sets the voltage of the given channel. */ - void setVoltage(float voltage, int channel = 0) { + void setVoltage(float voltage, int channel = 0) noexcept { voltages[channel] = voltage; } /** Returns the voltage of the given channel. Because of proper bookkeeping, all channels higher than the input port's number of channels should be 0V. */ - float getVoltage(int channel = 0) { + float getVoltage(int channel = 0) const noexcept { return voltages[channel]; } /** Returns the given channel's voltage if the port is polyphonic, otherwise returns the first voltage (channel 0). */ - float getPolyVoltage(int channel) { + float getPolyVoltage(int channel) const noexcept { return isMonophonic() ? getVoltage(0) : getVoltage(channel); } /** Returns the voltage if a cable is connected, otherwise returns the given normal voltage. */ - float getNormalVoltage(float normalVoltage, int channel = 0) { + float getNormalVoltage(float normalVoltage, int channel = 0) const noexcept { return isConnected() ? getVoltage(channel) : normalVoltage; } - float getNormalPolyVoltage(float normalVoltage, int channel) { + float getNormalPolyVoltage(float normalVoltage, int channel) const noexcept { return isConnected() ? getPolyVoltage(channel) : normalVoltage; } /** Returns a pointer to the array of voltages beginning with firstChannel. The pointer can be used for reading and writing. */ - float* getVoltages(int firstChannel = 0) { + float* getVoltages(int firstChannel = 0) noexcept { return &voltages[firstChannel]; } /** Copies the port's voltages to an array of size at least `channels`. */ - void readVoltages(float* v) { + void readVoltages(float* v) const noexcept { for (int c = 0; c < channels; c++) { v[c] = voltages[c]; } @@ -127,14 +127,14 @@ struct Port { } /** Sets all voltages to 0. */ - void clearVoltages() { + void clearVoltages() noexcept { for (int c = 0; c < channels; c++) { voltages[c] = 0.f; } } /** Returns the sum of all voltages. */ - float getVoltageSum() { + float getVoltageSum() const noexcept { float sum = 0.f; for (int c = 0; c < channels; c++) { sum += voltages[c]; @@ -145,7 +145,7 @@ struct Port { /** Returns the root-mean-square of all voltages. Uses sqrt() which is slow, so use a custom approximation if calling frequently. */ - float getVoltageRMS() { + float getVoltageRMS() const { if (channels == 0) { return 0.f; } @@ -162,22 +162,22 @@ struct Port { } template - T getVoltageSimd(int firstChannel) { + T getVoltageSimd(int firstChannel) const noexcept { return T::load(&voltages[firstChannel]); } template - T getPolyVoltageSimd(int firstChannel) { + T getPolyVoltageSimd(int firstChannel) const noexcept { return isMonophonic() ? getVoltage(0) : getVoltageSimd(firstChannel); } template - T getNormalVoltageSimd(T normalVoltage, int firstChannel) { + T getNormalVoltageSimd(T normalVoltage, int firstChannel) const noexcept { return isConnected() ? getVoltageSimd(firstChannel) : normalVoltage; } template - T getNormalPolyVoltageSimd(T normalVoltage, int firstChannel) { + T getNormalPolyVoltageSimd(T normalVoltage, int firstChannel) const noexcept { return isConnected() ? getPolyVoltageSimd(firstChannel) : normalVoltage; } @@ -191,7 +191,7 @@ struct Port { If disconnected, this does nothing (`channels` remains 0). If 0 is given, `channels` is set to 1 but all voltages are cleared. */ - void setChannels(int channels) { + void setChannels(int channels) noexcept { // If disconnected, keep the number of channels at 0. if (this->channels == 0) { return; @@ -212,29 +212,29 @@ struct Port { /** Returns the number of channels. If the port is disconnected, it has 0 channels. */ - int getChannels() { + int getChannels() const noexcept { return channels; } /** Returns whether a cable is connected to the Port. You can use this for skipping code that generates output voltages. */ - bool isConnected() { + bool isConnected() const noexcept { return channels > 0; } /** Returns whether the cable exists and has 1 channel. */ - bool isMonophonic() { + bool isMonophonic() const noexcept { return channels == 1; } /** Returns whether the cable exists and has more than 1 channel. */ - bool isPolyphonic() { + bool isPolyphonic() const noexcept { return channels > 1; } /** Use getNormalVoltage() instead. */ - DEPRECATED float normalize(float normalVoltage) { + DEPRECATED float normalize(float normalVoltage) const noexcept { return getNormalVoltage(normalVoltage); } };