Calculator Step 4

- Main Page
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Private Member Functions | List of all members
node_impl Class Referenceabstract

`#include <node_impl.hpp>`

Inheritance diagram for node_impl:

## Public Member Functions
| node_impl ()
| node_impl (node_impl &&)=default
node_impl & | operator= (node_impl &&)=default
virtual | ~node_impl ()
void | print (std::ostream &stream, int indent) const
double | evaluate () const
std::string | to_string () const
identifier_list const & | get_parameters () const

## Private Member Functions
| node_impl (node_impl const &)=delete
node_impl & | operator= (node_impl const &)=delete
virtual void | print_node (std::ostream &stream, int indent) const =0
virtual double | evaluate_node () const =0
virtual std::string | evaluate_string () const
virtual identifier_list const & | evaluate_parameters () const

## Detailed Description

Base class for all parse tree nodes. The node classes all derive from node_impl. Each derived class overrides print_node(), for debugging and evalute_node() to evaluate the node. A few classes also override evaluate_string(), but most classes can inherit the node_impl::evaluate_string implementation, which prints the result of calling evaluate().

Definition at line 17 of file node_impl.hpp.

## Constructor & Destructor Documentation

node_impl::node_impl | ( |  | ) |

Definition at line 12 of file node_impl.cpp.

13 {}

node_impl::node_impl | ( | node_impl && |  | ) |
| default

node_impl::~node_impl | ( |  | ) |
| virtual

Definition at line 15 of file node_impl.cpp.

16 {}

node_impl::node_impl | ( | node_impl const & |  | ) |
| private delete

## Member Function Documentation

double node_impl::evaluate | ( |  | ) | const

Definition at line 24 of file node_impl.cpp.

References evaluate_node().

Referenced by evaluate_string().

26 {
27 return evaluate_node();
28 }
node_impl::evaluate_node
virtual double evaluate_node() const =0

virtual double node_impl::evaluate_node | ( |  | ) | const
| private pure virtual

Implemented in node_divide, node_multiply, node_subtract, node_add, node_negate, node_binary, node_unary, node_function_call, node_function, node_identifier, node_number, and node_void.

Referenced by evaluate().

identifier_list const & node_impl::evaluate_parameters | ( |  | ) | const
| private virtual

Reimplemented in node_function.

Definition at line 50 of file node_impl.cpp.

Referenced by get_parameters().

52 {
53 static identifier_list const empty{};
54 return empty;
55 }
identifier_list
std::vector< std::string > identifier_list
A sequence of identifiers (e.g., parameter names).
Definition: node.hpp:19

std::string node_impl::evaluate_string | ( |  | ) | const
| private virtual

Reimplemented in node_identifier, and node_void.

Definition at line 42 of file node_impl.cpp.

References evaluate().

Referenced by to_string().

44 {
45 std::ostringstream stream{};
46 stream << evaluate();
47 return stream.str();
48 }
node_impl::evaluate
double evaluate() const
Definition: node_impl.cpp:24

identifier_list const & node_impl::get_parameters | ( |  | ) | const

Definition at line 36 of file node_impl.cpp.

References evaluate_parameters().

38 {
39 return evaluate_parameters();
40 }
node_impl::evaluate_parameters
virtual identifier_list const & evaluate_parameters() const
Definition: node_impl.cpp:50

node_impl& node_impl::operator= | ( | node_impl && |  | ) |
| default

node_impl& node_impl::operator= | ( | node_impl const & |  | ) |
| private delete

void node_impl::print | ( | std::ostream & | stream,
|  | int | indent
| ) |  | const

Definition at line 18 of file node_impl.cpp.

References print_node().

20 {
21 print_node(stream, indent);
22 }
node_impl::print_node
virtual void print_node(std::ostream &stream, int indent) const =0

virtual void node_impl::print_node | ( | std::ostream & | stream,
|  | int | indent
| ) |  | const
| private pure virtual

Implemented in node_divide, node_multiply, node_subtract, node_add, node_negate, node_binary, node_unary, node_function_call, node_function, node_identifier, node_number, and node_void.

Referenced by print().

std::string node_impl::to_string | ( |  | ) | const

Definition at line 30 of file node_impl.cpp.

References evaluate_string().

32 {
33 return evaluate_string();
34 }
node_impl::evaluate_string
virtual std::string evaluate_string() const
Definition: node_impl.cpp:42

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

- node_impl.hpp
- node_impl.cpp