/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2020-08-14 * Changed: 2024-05-31 * * */ #ifndef LS_STD_FLOAT_HPP #define LS_STD_FLOAT_HPP #include #include #include #include namespace ls::std::boxing { ls_std_class Float final : public core::Class, public core::interface_type::IBoxing { public: Float(); explicit Float(float _value); ~Float() noexcept override; // assignment operators Float &operator=(float _value); // arithmetic operators float operator-() const; float operator+(const Float &_float) const; float operator+(float _value) const; float operator*(const Float &_float) const; float operator*(float _value) const; float operator-(const Float &_float) const; float operator-(float _value) const; float operator/(const Float &_float) const; float operator/(float _value) const; // compound operators Float &operator+=(const Float &_float); Float &operator+=(float _value); Float &operator-=(const Float &_float); Float &operator-=(float _value); Float &operator*=(const Float &_float); Float &operator*=(float _value); Float &operator/=(const Float &_float); Float &operator/=(float _value); // comparison operators bool operator==(const Float &_float) const; bool operator==(float _value) const; bool operator!=(const Float &_float) const; bool operator!=(float _value) const; bool operator>(const Float &_float) const; bool operator>(float _value) const; bool operator>=(const Float &_float) const; bool operator>=(float _value) const; bool operator<(const Float &_float) const; bool operator<(float _value) const; bool operator<=(const Float &_float) const; bool operator<=(float _value) const; // increment / decrement operator void operator++(); void operator--(); // implementation void parse(const ::std::string &_parseText) override; [[nodiscard]] ::std::string toString() override; // additional functionality [[nodiscard]] float getEpsilon() const; [[nodiscard]] float getValue() const; void setEpsilon(float _epsilon); private: float epsilon{}; float value{}; void _assignEpsilon(float _epsilon); [[nodiscard]] static ::std::string _fetchClassName(); }; } #endif