proj home

Files   Classes   Functions   Hierarchy  

progdecompose Class Reference

#include <rpnfunc.h>

Inheritance diagram for progdecompose:
Collaboration diagram for progdecompose:

List of all members.

Public Member Functions

 progdecompose ()
 progdecompose (deque< rpnbase * > &ds, bool const evaluate=true)
 ~progdecompose ()
rpnbasecopy () const
void visit (deque< rpnbase * > &ds, rpnprogram &p)
string const name () const
void eval (deque< rpnbase * > &ds)


Detailed Description

Definition at line 862 of file rpnfunc.h.


Constructor & Destructor Documentation

progdecompose::progdecompose (  )  [inline]

Definition at line 866 of file rpnfunc.h.

Referenced by copy().

00866 {}

progdecompose::progdecompose ( deque< rpnbase * > &  ds,
bool const   evaluate = true 
)

Definition at line 2569 of file rpnfunc.cpp.

References eval().

02570 {
02571   if (evaluate)
02572     eval(ds);
02573   else
02574     ds.push_front(this);
02575 }

progdecompose::~progdecompose (  )  [inline]

Definition at line 868 of file rpnfunc.h.

00868 {}


Member Function Documentation

rpnbase * progdecompose::copy (  )  const [virtual]

Reimplemented from rpnfunction.

Definition at line 2577 of file rpnfunc.cpp.

References progdecompose().

02578 {
02579   return new progdecompose();
02580 }

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

Reimplemented from rpnfunction.

Definition at line 2582 of file rpnfunc.cpp.

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

Referenced by progdecompose().

02583 {
02584   if(!ds.empty())
02585     ds[0]->accept(ds,*this);
02586 
02587   dec();
02588 }

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

Reimplemented from rpnfunction.

Definition at line 873 of file rpnfunc.h.

00873 { return string("pnew!"); }

void progdecompose::visit ( deque< rpnbase * > &  ds,
rpnprogram p 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 2590 of file rpnfunc.cpp.

References rpnbase::dec(), and rpnprogram::v.

02591 {
02592   rpnbase* x0 = ds.front();  
02593   ds.pop_front();
02594 
02595   unsigned int n = p.v.size();
02596 
02597   if (n>0)
02598   {
02599     for (unsigned int i=0; i<n; ++i)
02600     {
02601       ds.push_front( p.v.front() );
02602       p.v.pop_front();
02603     }
02604   }
02605 
02606   new rpninteger(ds,n);
02607 
02608   x0->dec();
02609 }


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

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