proj home

Files   Classes   Functions   Hierarchy  

rpnbitor Class Reference

#include <rpnfunc.h>

Inheritance diagram for rpnbitor:
Collaboration diagram for rpnbitor:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 1256 of file rpnfunc.h.


Constructor & Destructor Documentation

rpnbitor::rpnbitor (  )  [inline]

Definition at line 1260 of file rpnfunc.h.

Referenced by copy().

01260 {}

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

Definition at line 3963 of file rpnfunc.cpp.

References eval().

03964 {
03965   if (evaluate)
03966     eval(ds);
03967   else
03968     ds.push_front(this);
03969 }

rpnbitor::~rpnbitor (  )  [inline]

Definition at line 1262 of file rpnfunc.h.

01262 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 3971 of file rpnfunc.cpp.

References rpnbitor().

03972 {
03973   return new rpnbitor();
03974 }

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

Reimplemented from rpnfunction.

Definition at line 3976 of file rpnfunc.cpp.

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

Referenced by rpnbitor().

03977 {
03978   if (ds.size()>1)
03979     ds[0]->accept(ds,*this);
03980 
03981   dec();
03982 }

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

Reimplemented from rpnfunction.

Definition at line 1267 of file rpnfunc.h.

01267 { return string("or"); }

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

Reimplemented from rpnfunction.

Definition at line 3984 of file rpnfunc.cpp.

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

03985 {
03986   rpnbase* x0 = ds.front();
03987   rpnbase* x1 = ds[1];
03988 
03989   if (!x1->isinteger())
03990     return;
03991 
03992   ds.pop_front();
03993 
03994   ((rpninteger*)x1)->num |= n.num;
03995   
03996   x0->dec();
03997 }


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