Calculator  Step 6
Public Member Functions | Private Member Functions | List of all members
node_subtract Class Reference

#include <node_impl.hpp>

Inheritance diagram for node_subtract:
node_binary node_impl

Public Member Functions

 node_subtract (node left, node right)
 
 node_subtract (std::istream &stream)
 
- Public Member Functions inherited from node_binary
 node_binary (node left, node right)
 
node left () const
 
node right () const
 
- Public Member Functions inherited from node_impl
 node_impl ()
 
virtual ~node_impl ()
 
 node_impl (node_impl &&)=default
 
node_imploperator= (node_impl &&)=default
 
void print (std::ostream &stream, int indent) const
 
number evaluate () const
 
std::string to_string () const
 
identifier_list const & get_parameters () const
 
void save (std::ostream &stream) const
 

Private Member Functions

virtual void print_node (std::ostream &stream, int indent) const override
 
virtual number evaluate_node () const override
 
virtual void save_node (std::ostream &stream) const override
 

Additional Inherited Members

- Static Public Member Functions inherited from node_impl
static std::shared_ptr< node_implread_node (std::istream &stream)
 
- Protected Member Functions inherited from node_binary
 node_binary (std::istream &stream)
 
number evaluate_left () const
 
number evaluate_right () const
 

Detailed Description

Subtraction.

Definition at line 191 of file node_impl.hpp.

Constructor & Destructor Documentation

node_subtract::node_subtract ( node  left,
node  right 
)

Definition at line 465 of file node_impl.cpp.

References node_binary::left().

466 : node_binary{left, right}
467 {}
node left() const
Definition: node_impl.cpp:379
node_subtract::node_subtract ( std::istream &  stream)

Definition at line 469 of file node_impl.cpp.

470 : node_binary{stream}
471 {}

Member Function Documentation

number node_subtract::evaluate_node ( ) const
overrideprivatevirtual

Implements node_binary.

Definition at line 481 of file node_impl.cpp.

References node_binary::evaluate_left(), and node_binary::evaluate_right().

483 {
484  return evaluate_left() - evaluate_right();
485 }
number evaluate_right() const
Definition: node_impl.cpp:397
number evaluate_left() const
Definition: node_impl.cpp:391
void node_subtract::print_node ( std::ostream &  stream,
int  indent 
) const
overrideprivatevirtual

Implements node_binary.

Definition at line 473 of file node_impl.cpp.

References node_binary::left(), node::print(), and node_binary::right().

475 {
476  stream << std::setw(indent) << "" << "-\n";
477  left().print(stream, indent + 2);
478  right().print(stream, indent + 2);
479 }
node right() const
Definition: node_impl.cpp:385
void print(std::ostream &stream, int indent=0) const
Definition: node.cpp:67
node left() const
Definition: node_impl.cpp:379
void node_subtract::save_node ( std::ostream &  stream) const
overrideprivatevirtual

Implements node_binary.

Definition at line 487 of file node_impl.cpp.

References node_binary::left(), node_binary::right(), and node::save().

489 {
490  stream << "subtract ";
491  left().save(stream);
492  right().save(stream);
493 }
node right() const
Definition: node_impl.cpp:385
void save(std::ostream &stream) const
Definition: node.cpp:91
node left() const
Definition: node_impl.cpp:379

The documentation for this class was generated from the following files: