Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
modulo.h
1/*
2** Copyright 2007-2024, RTE (https://www.rte-france.com)
3** See AUTHORS.txt
4** SPDX-License-Identifier: MPL-2.0
5** This file is part of Antares-Simulator,
6** Adequacy and Performance assessment for interconnected energy networks.
7**
8** Antares_Simulator is free software: you can redistribute it and/or modify
9** it under the terms of the Mozilla Public Licence 2.0 as published by
10** the Mozilla Foundation, either version 2 of the License, or
11** (at your option) any later version.
12**
13** Antares_Simulator is distributed in the hope that it will be useful,
14** but WITHOUT ANY WARRANTY; without even the implied warranty of
15** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16** Mozilla Public Licence 2.0 for more details.
17**
18** You should have received a copy of the Mozilla Public Licence 2.0
19** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20*/
21#ifndef __ANTARES_TOOLBOX_FILTER_OPERATOR_MODULO_H__
22#define __ANTARES_TOOLBOX_FILTER_OPERATOR_MODULO_H__
23
24#include "../operator.h"
25
26namespace Antares
27{
28namespace Toolbox
29{
30namespace Filter
31{
32namespace Operator
33{
34class Modulo : public AOperator
35{
36public:
37 Modulo(AFilterBase* parent) : AOperator(parent, wxT("%"), wxT("modulo"))
38 {
39 // When the operator is the modulo, we must have another
40 // value
41 parameters.push_back(Parameter(*this).presetModuloAddon());
42 }
43
44 virtual ~Modulo()
45 {
46 }
47
48 virtual bool compute(const int a) const
49 {
50 return parameters[0].value.asInt
51 ? (a % parameters[0].value.asInt == parameters[1].value.asInt)
52 : false;
53 }
54
55 virtual bool compute(const double a) const
56 {
57 return (int(floor(a)) % parameters[0].value.asInt == parameters[1].value.asInt);
58 }
59
60 virtual bool compute(const wxString&) const
61 {
62 return false;
63 }
64
65}; // class Modulo
66
67} // namespace Operator
68} // namespace Filter
69} // namespace Toolbox
70} // namespace Antares
71
72#endif // __ANTARES_TOOLBOX_FILTER_OPERATOR_MODULO_H__
Abstract Filter.
Definition filter.h:52
Parameter::List parameters
Additional parameters.
Definition operator.h:90
AOperator(AFilterBase *parent, const wxChar *name, const wxChar *caption)
namespace Constructor & Destructor
Definition operator.cpp:32
Single parameter.
Definition parameter.h:58
Parameter & presetModuloAddon()
Preset: Modulo.
Definition parameter.cpp:191