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

#include <node_impl.hpp>

Inheritance diagram for node_impl:
node_binary node_function node_function_call node_identifier node_number node_unary node_void node_add node_divide node_multiply node_subtract node_negate

Public Member Functions

 node_impl ()
 
 node_impl (node_impl &&)=default
 
node_imploperator= (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_imploperator= (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 &  )
privatedelete

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 }
virtual double evaluate_node() const =0
virtual double node_impl::evaluate_node ( ) const
privatepure virtual
identifier_list const & node_impl::evaluate_parameters ( ) const
privatevirtual

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 }
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
privatevirtual

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 }
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 }
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 &  )
privatedelete
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 }
virtual void print_node(std::ostream &stream, int indent) const =0
virtual void node_impl::print_node ( std::ostream &  stream,
int  indent 
) const
privatepure virtual
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 }
virtual std::string evaluate_string() const
Definition: node_impl.cpp:42

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