proj home

Files   Classes   Functions   Hierarchy  

rpnsave Class Reference

#include <scopedependentfunctions.h>

Inheritance diagram for rpnsave:
Collaboration diagram for rpnsave:

List of all members.

Public Member Functions

 rpnsave ()
 rpnsave (deque< rpnbase * > &ds, bool const evaluate=true)
 ~rpnsave ()
rpnbasecopy () const
void visit (deque< rpnbase * > &ds, rpnstring &fname)
string const name () const
void eval (deque< rpnbase * > &ds)


Detailed Description

Definition at line 87 of file scopedependentfunctions.h.


Constructor & Destructor Documentation

rpnsave::rpnsave (  )  [inline]

Definition at line 93 of file scopedependentfunctions.h.

Referenced by copy().

00093 {}

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

Definition at line 274 of file scopedependentfunctions.cpp.

References eval().

00275 {
00276   if (evaluate)
00277     eval(ds);
00278   else
00279     ds.push_front(this);
00280 }

rpnsave::~rpnsave (  )  [inline]

Definition at line 95 of file scopedependentfunctions.h.

00095 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 282 of file scopedependentfunctions.cpp.

References rpnsave().

00283 {
00284   return new rpnsave();
00285 }

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

Reimplemented from rpnfunction.

Definition at line 287 of file scopedependentfunctions.cpp.

References rpnbase::dec().

Referenced by rpnsave().

00288 {
00289   if(ds.empty())
00290     return;
00291 
00292   ds[0]->accept(ds,*this);
00293 
00294   dec();
00295 }

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

Reimplemented from rpnfunction.

Definition at line 100 of file scopedependentfunctions.h.

00100 { return string("save"); }

void rpnsave::visit ( deque< rpnbase * > &  ds,
rpnstring fname 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 383 of file scopedependentfunctions.cpp.

References rpnbase::dec(), and rpnstring::str.

00384 {
00385   rpnbase* x0 = ds.front();
00386   ds.pop_front();
00387 
00388   ofstream os( fname.str.c_str(), ios::out|ios::trunc );
00389   if (!os) 
00390   {
00391     ds.push_front(x0);
00392     return;
00393   }
00394 
00395   bool const preservedmode = SingletonPtr<inputstatescope>()->evalimmediate;
00396 
00397   writeprogram(os,rpnprogramstackstate().ps->front());
00398 
00399   os << endl;
00400 
00401   os.clear();
00402 
00403   SingletonPtr<inputstatescope>()->evalimmediate = preservedmode;
00404 
00405   x0->dec();
00406 }


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

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