Main Page | Modules | Class Hierarchy | Class List | File List | Class Members

CalculatorFSM Class Reference

#include <calc.h>

Inheritance diagram for CalculatorFSM:

Calculator List of all members.

Detailed Description

Quite useless calculator

Definition at line 9 of file calc.h.

Public Types

enum  Event { ResultRequested, Number, BinaryOp, Clear }
enum  States { Idle, EnteringFirstOperand, Result, EnteringSecondOperand }

Public Member Functions

 CalculatorFSM ()
 Constructor.
virtual ~CalculatorFSM ()
 Destructor.
States currentState ()
void A (Event e)

Static Public Member Functions

const char * eventName (Event e)
const char * stateName (States s)

Protected Member Functions

virtual void saveNumber ()=0
virtual void addNumber ()=0
virtual void clear ()=0
virtual void saveOp ()=0
virtual void showResult ()=0

Private Member Functions

void __processEvent (Event e)
bool debug_iNtErNal_input (const char *type, const char *name, bool i)
void debug_show_fsm_xml ()

Private Attributes

States __Y
std::queue< Event__events


Member Enumeration Documentation

enum CalculatorFSM::Event
 

Events

Enumeration values:
ResultRequested  A '=' have been entered
Number  A digit have been entered
BinaryOp  Pressed '+', '-', ...
Clear  User have pressed 'C' button. Clear all data
Definition at line 12 of file calc.h.

enum CalculatorFSM::States
 

States

Enumeration values:
Idle  A result is displayed
EnteringFirstOperand  A first calculating operand is being entered
Result  A result is displayed, but there is a result from previous operation
EnteringSecondOperand  User is pressing digits to make second operand
Definition at line 48 of file calc.h.

Referenced by currentState().


Member Function Documentation

void CalculatorFSM::A Event  e  ) 
 

Send event to FSM

Use this function to send event to CalculatorFSM After you call it given event will be handled, and, if some of transition conditions match, appropriate transition will be triggered, and currentState() will be changed.

If this function is called during existing event handling process, given event will be added to pending event queue, and will be handled after current transition. See examples for details. Definition at line 201 of file calc.cpp.

Referenced by Calculator::slotClear(), Calculator::slotDiv(), Calculator::slotEqual(), Calculator::slotMinus(), Calculator::slotMul(), Calculator::slotNumber(), and Calculator::slotPlus().

virtual void CalculatorFSM::addNumber  )  [protected, pure virtual]
 

Add a number to the current number, for example, if there is '12' on a screen and '3' button pressed, there should be '123' on a screen

Implemented in Calculator.

virtual void CalculatorFSM::clear  )  [protected, pure virtual]
 

Just clear :)

Implemented in Calculator.

States CalculatorFSM::currentState  )  [inline]
 

Get current FSM state

Returns:
current FSM state
Definition at line 70 of file calc.h.

References States.

Referenced by Calculator::slotClear(), Calculator::slotDiv(), Calculator::slotEqual(), Calculator::slotMinus(), Calculator::slotMul(), Calculator::slotNumber(), and Calculator::slotPlus().

const char * CalculatorFSM::eventName Event  e  )  [static]
 

Get symbolic name of an event

Parameters:
e - numeric event
Returns:
symbolic event name
Definition at line 218 of file calc.cpp.

References BinaryOp, Clear, Number, and ResultRequested.

virtual void CalculatorFSM::saveNumber  )  [protected, pure virtual]
 

A number have been entered, save it and proceed to the next one

Implemented in Calculator.

virtual void CalculatorFSM::saveOp  )  [protected, pure virtual]
 

Save operation to our stack. This output follows press '+', '-', ...

Implemented in Calculator.

virtual void CalculatorFSM::showResult  )  [protected, pure virtual]
 

Calculate and display result of operation

Implemented in Calculator.

const char * CalculatorFSM::stateName States  s  )  [static]
 

Get symbolic name of a state

Parameters:
e - numeric state
Returns:
symbolic state name
Definition at line 234 of file calc.cpp.

References EnteringFirstOperand, EnteringSecondOperand, Idle, and Result.

Referenced by Calculator::slotClear(), Calculator::slotDiv(), Calculator::slotEqual(), Calculator::slotMinus(), Calculator::slotMul(), Calculator::slotNumber(), and Calculator::slotPlus().


The documentation for this class was generated from the following files:
Generated on Fri Oct 29 13:35:13 2004 for Calculator by doxygen 1.3.8