// rpimpl_oplist.h // Copyright (c) Menno Rubingh 2016. Web: [http://rubinghsoftware.de] // // MR Mar 2016. // // ParsedOperationList: // List of OperationXxx instances. // Contains a *parsed* RP expression. // These are the operations to be executed one after the other. // Used internally by the RPInterpreter implementation. // //--- // Implementation note: // - ParsedOperationList is a list of pointers to CONST OperationXxx objects. // Const because, after creation, these objects are never changed. // These OperationXxx objects are created by code that uses ParsedOperationList, // and are destroyed (in the ParsedOperationList destructor) when the // ParsedOperationList object goes out of scope. (Although CONST OperationXxx // objects can not be changed, destroying them is of course an allowed // operation... even CONST objects have to be destroyed at some point.) // #ifndef _RPIMPL_OPLIST_H_ #define _RPIMPL_OPLIST_H_ #include "rpimpl_oper.h" //OperationBase. #include <stdio.h> //FILE. class ParsedOperationList { static int const NMAX = 64; int m_n; OperationBase const * m_arr[NMAX]; public: void init( void ); void zap ( void ); void reinit( void ) { zap(); init(); } ParsedOperationList( void ) { init(); } ~ParsedOperationList( void ) { zap(); } int getN( void ) const { return m_n; } OperationBase const * getElem( int i ) const; void appendElem( SContext const * iCxt, OperationBase const * iOp ); void dump( FILE * oF ) const; }; #endif //_RPIMPL_OPLIST_H_