1 #ifndef NUMBER_IMPL_HPP_
2 #define NUMBER_IMPL_HPP_
10 class number_impl :
public std::enable_shared_from_this<number_impl>
16 void print(std::ostream& stream)
const;
21 void save(std::ostream& stream)
const;
23 static std::shared_ptr<number_impl>
read_library(std::istream& stream);
61 virtual void do_save(std::ostream& stream)
const = 0;
85 virtual void do_save(std::ostream& stream)
const;
107 virtual void do_save(std::ostream& stream)
const;
132 virtual void do_save(std::ostream& stream)
const;
154 virtual void do_save(std::ostream& stream)
const;
virtual bool do_less(number_impl const &rhs) const
virtual void do_save(std::ostream &stream) const
virtual void do_save(std::ostream &stream) const
virtual bool do_less(number_impl const &rhs) const =0
virtual std::shared_ptr< number_impl > do_multiply(number_impl const &rhs)
number_double(double value)
virtual std::shared_ptr< number_impl > do_multiply(number_impl const &rhs)
void save(std::ostream &stream) const
virtual std::shared_ptr< number_impl > do_add(number_impl const &rhs)
virtual std::shared_ptr< number_impl > promote_to_double()
virtual std::shared_ptr< number_impl > do_subtract(number_impl const &rhs)=0
virtual std::shared_ptr< number_impl > do_add(number_impl const &rhs)
virtual std::shared_ptr< number_impl > promote_to_void()
bool less(number_impl const &rhs) const
std::shared_ptr< number_impl > promote(number_impl &rhs) const
virtual std::shared_ptr< number_impl > do_subtract(number_impl const &rhs)
virtual bool do_less(number_impl const &rhs) const
virtual std::shared_ptr< number_impl > do_add(number_impl const &rhs)
virtual bool do_equals(number_impl const &rhs) const
number_impl & operator=(number_impl const &n)
not implemented
number_rational(long long num, long long den)
virtual std::shared_ptr< number_impl > promote_to_double()
virtual std::shared_ptr< number_impl > do_subtract(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_divide(number_impl const &rhs)
number_rational(long long num)
void print(std::ostream &stream) const
virtual std::shared_ptr< number_impl > promote_to_rational()
std::shared_ptr< number_impl > add(number_impl const &rhs)
virtual void do_save(std::ostream &stream) const
virtual std::shared_ptr< number_impl > do_add(number_impl const &rhs)=0
number_rational(rational< long long > value)
virtual std::shared_ptr< number_impl > do_promote(number_impl &rhs) const
virtual void do_save(std::ostream &stream) const =0
virtual std::shared_ptr< number_impl > do_promote(number_impl &rhs) const =0
virtual bool do_less(number_impl const &rhs) const
std::shared_ptr< number_impl > subtract(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_promote(number_impl &rhs) const
virtual std::shared_ptr< number_impl > do_divide(number_impl const &rhs)=0
virtual std::string do_to_string() const
virtual std::shared_ptr< number_impl > do_subtract(number_impl const &rhs)
rational< long long > value() const
virtual bool do_equals(number_impl const &rhs) const
virtual std::string do_to_string() const =0
static std::shared_ptr< number_impl > read_library(std::istream &stream)
virtual std::shared_ptr< number_impl > promote_to_rational()
std::string to_string() const
virtual std::string do_to_string() const
virtual std::shared_ptr< number_impl > do_multiply(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_multiply(number_impl const &rhs)=0
std::shared_ptr< number_impl > multiply(number_impl const &rhs)
virtual bool do_equals(number_impl const &rhs) const
virtual std::shared_ptr< number_impl > promote_to_void()
virtual std::shared_ptr< number_impl > do_divide(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_promote(number_impl &rhs) const
virtual std::shared_ptr< number_impl > promote_to_void()
virtual std::shared_ptr< number_impl > do_subtract(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_divide(number_impl const &rhs)
virtual std::string do_to_string() const
virtual void do_save(std::ostream &stream) const
virtual bool do_less(number_impl const &rhs) const
virtual std::shared_ptr< number_impl > promote_to_void()
virtual std::shared_ptr< number_impl > promote_to_long()
virtual bool do_equals(number_impl const &rhs) const
virtual bool do_equals(number_impl const &rhs) const =0
virtual std::shared_ptr< number_impl > do_add(number_impl const &rhs)
virtual std::string do_to_string() const
virtual std::shared_ptr< number_impl > do_promote(number_impl &rhs) const
bool equals(number_impl const &rhs) const
rational< long long > value_
std::shared_ptr< number_impl > divide(number_impl const &rhs)
virtual std::shared_ptr< number_impl > promote_to_double()
virtual std::shared_ptr< number_impl > do_multiply(number_impl const &rhs)
virtual std::shared_ptr< number_impl > do_divide(number_impl const &rhs)
number_long(long long value)