proj home

Files   Classes   Functions   Hierarchy  

rpnp_to_c Class Reference

#include <mathfunc.h>

Inheritance diagram for rpnp_to_c:
Collaboration diagram for rpnp_to_c:

List of all members.

Public Member Functions

string const name () const
void visit (deque< rpnbase * > &ds, rpnreal &n)
 rpnp_to_c ()
 rpnp_to_c (deque< rpnbase * > &ds, bool const evaluate=true)
 ~rpnp_to_c ()
rpnbasecopy () const
void eval (deque< rpnbase * > &ds)


Detailed Description

Definition at line 630 of file mathfunc.h.


Constructor & Destructor Documentation

rpnp_to_c::rpnp_to_c (  )  [inline]

Definition at line 639 of file mathfunc.h.

Referenced by copy().

00639 {}

rpnp_to_c::rpnp_to_c ( deque< rpnbase * > &  ds,
bool const   evaluate = true 
) [inline]

Definition at line 640 of file mathfunc.h.

References eval().

00641     {  
00642       if (evaluate)
00643         eval(ds);
00644       else
00645         ds.push_front(this);
00646     }

rpnp_to_c::~rpnp_to_c (  )  [inline]

Definition at line 647 of file mathfunc.h.

00647 {} 


Member Function Documentation

rpnbase* rpnp_to_c::copy (  )  const [inline, virtual]

Reimplemented from rpnfunction.

Definition at line 648 of file mathfunc.h.

References rpnp_to_c().

00649     { return new rpnp_to_c(); } 

void rpnp_to_c::eval ( deque< rpnbase * > &  ds  )  [virtual]

Reimplemented from rpnfunction.

Definition at line 237 of file mathfunc.cpp.

References rpnbase::accept(), and rpnbase::dec().

Referenced by rpnp_to_c().

00238 {
00239   if (ds.size()>1)
00240     ds[0]->accept(ds,*this);
00241 
00242   dec();
00243 }

string const rpnp_to_c::name (  )  const [inline, virtual]

Reimplemented from rpnfunction.

Definition at line 634 of file mathfunc.h.

00635     { return string("p->c"); }

void rpnp_to_c::visit ( deque< rpnbase * > &  ds,
rpnreal n 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 245 of file mathfunc.cpp.

References rpnbase::dec(), rpnbase::isreal(), rpnreal::num, and r.

00246 {
00247   rpnbase* x0 = ds.front();
00248   ds.pop_front();
00249   rpnbase* x1 =ds.front();
00250   ds.pop_front();
00251 
00252   if (x1->isreal())
00253   {
00254     long double const r = ((rpnreal*)x1)->num;
00255     long double const t = n.num;
00256     new rpncomplex(ds,r*cos(t),r*sin(t));
00257     x0->dec();
00258     x1->dec();
00259     return;
00260   }
00261 
00262   // Restore the stack.
00263   ds.push_front(x1);
00264   ds.push_front(x0);
00265 }


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

Generated on Fri Mar 4 00:50:15 2011 for Chelton Evans Source by  doxygen 1.5.8