version 0.4.2
valuewrapper.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2021-2024 The Ikarus Developers mueller@ibb.uni-stuttgart.de
2// SPDX-License-Identifier: LGPL-3.0-or-later
3#pragma once
4// since python does not support passing python float by reference to a double&, we have to wrap everything
5// see also https://pybind11.readthedocs.io/en/stable/faq.html#limitations-involving-reference-arguments
6template <typename T>
8{
9 T val;
10 ValueWrapper operator+(const ValueWrapper& v) const { return ValueWrapper{val + v.val}; }
11 ValueWrapper operator-(const ValueWrapper& v) const { return ValueWrapper{val - v.val}; }
12 ValueWrapper operator-() const { return ValueWrapper{-val}; }
13 ValueWrapper operator*(T value) const { return ValueWrapper{val * value}; }
15 val += v.val;
16 return *this;
17 }
19 val *= v;
20 return *this;
21 }
22
23 friend ValueWrapper operator*(T f, const ValueWrapper& v) { return ValueWrapper{f * v.val}; }
24};
Definition: valuewrapper.hh:8
ValueWrapper & operator+=(const ValueWrapper &v)
Definition: valuewrapper.hh:14
ValueWrapper operator*(T value) const
Definition: valuewrapper.hh:13
T val
Definition: valuewrapper.hh:9
ValueWrapper operator-() const
Definition: valuewrapper.hh:12
ValueWrapper operator-(const ValueWrapper &v) const
Definition: valuewrapper.hh:11
ValueWrapper operator+(const ValueWrapper &v) const
Definition: valuewrapper.hh:10
ValueWrapper & operator*=(T v)
Definition: valuewrapper.hh:18
friend ValueWrapper operator*(T f, const ValueWrapper &v)
Definition: valuewrapper.hh:23