Listing 7: Partial listing of calculator DLL
#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 ) ...