proj home

Files   Classes   Functions   Hierarchy  

rpnbitshiftleft Class Reference

#include <rpnfunc.h>

Inheritance diagram for rpnbitshiftleft:
Collaboration diagram for rpnbitshiftleft:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 1288 of file rpnfunc.h.


Constructor & Destructor Documentation

rpnbitshiftleft::rpnbitshiftleft (  )  [inline]

Definition at line 1292 of file rpnfunc.h.

Referenced by copy().

01292 {}

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

Definition at line 4001 of file rpnfunc.cpp.

References eval().

04002 {
04003   if (evaluate)
04004     eval(ds);
04005   else
04006     ds.push_front(this);
04007 }

rpnbitshiftleft::~rpnbitshiftleft (  )  [inline]

Definition at line 1294 of file rpnfunc.h.

01294 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 4009 of file rpnfunc.cpp.

References rpnbitshiftleft().

04010 {
04011   return new rpnbitshiftleft();
04012 }

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

Reimplemented from rpnfunction.

Definition at line 4014 of file rpnfunc.cpp.

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

Referenced by rpnbitshiftleft().

04015 {
04016   if (ds.size()>1)
04017     ds[0]->accept(ds,*this);
04018 
04019   dec();
04020 }

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

Reimplemented from rpnfunction.

Definition at line 1299 of file rpnfunc.h.

01299 { return string("shl"); }

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

Reimplemented from rpnfunction.

Definition at line 4022 of file rpnfunc.cpp.

References rpnbase::dec(), rpnbase::isinteger(), and rpninteger::num.

04023 {
04024   rpnbase* x0 = ds.front();
04025   rpnbase* x1 = ds[1];
04026 
04027   if (!x1->isinteger())
04028     return;
04029 
04030   ds.pop_front();
04031 
04032   ((rpninteger*)x1)->num = (((rpninteger*)x1)->num << n.num);
04033   
04034   x0->dec();
04035 }


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

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