123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /*
- * Author: Patrick-Christopher Mattulat
- * Company: Lynar Studios
- * E-Mail: webmaster@lynarstudios.com
- * Created: 2020-08-17
- * Changed: 2020-08-17
- *
- * */
- #ifndef LONG_HPP
- #define LONG_HPP
- #include "../base/Class.hpp"
- #include "IBoxing.hpp"
- namespace ls_std {
- class Long : public Class, IBoxing {
- public:
- explicit Long(long _value);
- Long();
- ~Long() = default;
- // conversion operator
- operator long() const;
- // assignment operators
- Long& operator=(long _value);
- // arithmetic operators
- long operator-() const;
- long operator+(const Long& _long) const;
- long operator+(long _value) const;
- long operator*(const Long& _long) const;
- long operator*(long _value) const;
- long operator-(const Long& _long) const;
- long operator-(long _value) const;
- long operator/(const Long& _long) const;
- long operator/(long _value) const;
- long operator%(const Long& _long) const;
- long operator%(long _value) const;
- // compound operators
- Long& operator+=(const Long& _long);
- Long& operator+=(long _value);
- Long& operator-=(const Long& _long);
- Long& operator-=(long _value);
- Long& operator*=(const Long& _long);
- Long& operator*=(long _value);
- Long& operator/=(const Long& _long);
- Long& operator/=(long _value);
- // comparison operators
- bool operator==(const Long& _long) const;
- bool operator==(long _value) const;
- bool operator!=(const Long& _long) const;
- bool operator!=(long _value) const;
- bool operator>(const Long& _long) const;
- bool operator>(long _value) const;
- bool operator>=(const Long& _long) const;
- bool operator>=(long _value) const;
- bool operator<(const Long& _long) const;
- bool operator<(long _value) const;
- bool operator<=(const Long& _long) const;
- bool operator<=(long _value) const;
- // stream operators
- // TODO: not compilable
- // friend std::ostream& operator<<(std::ostream& outputStream, const Long& _long) {
- // outputStream << _long.value;
- // return outputStream;
- // }
- //
- // friend std::istream& operator>>(std::istream& inputStream, Long& _long) {
- // inputStream >> _long.value;
- // return inputStream;
- // }
- // logical operators
- friend bool operator!(const Long& _long) {
- return !_long.value;
- }
- bool operator&&(const Long& _long) const;
- bool operator&&(long _value) const;
- bool operator&&(bool _expression) const;
- bool operator||(const Long& _long) const;
- bool operator||(long _value) const;
- bool operator||(bool _expression) const;
- // increment / decrement operator
- void operator++();
- void operator--();
- // implementation
- void parse(std::string _parseText) override;
- std::string toString() override;
- // additional functionality
- long getValue() const;
- private:
- long value {};
- };
- }
- #endif
|