#define stack calculator_stack
class plus : public operation
{
public:
virtual int operate( stack* p_stack )
{
int l = p_stack->pop( );
int r = p_stack->pop( );
int result = l + r;
p_stack->push( result );
return result;
}
virtual void destroy( ) { delete this; }
};
// defined in engine.h; provides the
// base and prefix tokens
// required by FACTORYFUNC
FACTORY_ENTRY( plus , plus )
FACTORY_ENTRY( plus , add ) // Create an alias for class plus.
class minus : public operation
{
public:
virtual int operate( stack* p_stack )
{
int l = p_stack->pop( );
int r = p_stack->pop( );
int result = l - r;
p_stack->push( result );
return result;
}
virtual void destroy( ) { delete this; }
};
FACTORY_ENTRY( minus , minus )
...