CPP02/ex02/inc/Fixed.hpp
2025-03-27 16:15:11 +01:00

62 lines
2.0 KiB
C++

/* ************************************************************************** */
/* */
/* :::::::: */
/* Fixed.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/03/24 15:22:48 by whaffman #+# #+# */
/* Updated: 2025/03/27 12:27:16 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#define DEBUG 0
class Fixed {
public:
Fixed();
Fixed(const int value);
Fixed(const float value);
Fixed(const Fixed &fixed);
~Fixed();
Fixed &operator=(const Fixed &fixed);
Fixed operator+(const Fixed &fixed) const;
Fixed operator-(const Fixed &fixed) const;
Fixed operator*(const Fixed &fixed) const;
Fixed operator/(const Fixed &fixed) const;
Fixed &operator++();
Fixed operator++(int);
Fixed &operator--();
Fixed operator--(int);
bool operator>(const Fixed &fixed) const;
bool operator<(const Fixed &fixed) const;
bool operator>=(const Fixed &fixed) const;
bool operator<=(const Fixed &fixed) const;
bool operator==(const Fixed &fixed) const;
bool operator!=(const Fixed &fixed) const;
static Fixed &min(Fixed &a, Fixed &b);
static const Fixed &min(const Fixed &a, const Fixed &b);
static Fixed &max(Fixed &a, Fixed &b);
static const Fixed &max(const Fixed &a, const Fixed &b);
int getRawBits(void) const;
void setRawBits(int const raw);
float toFloat(void) const;
int toInt(void) const;
private:
int fixedPointValue;
static const int fractionalBits = 8;
};
std::ostream &operator<<(std::ostream &out, const Fixed &fixed);