// rpimpl_oplist.cpp
// Copyright (c) Menno Rubingh 2016. Web: [http://rubinghsoftware.de]
//
// MR Mar 2016.
//
// Definition of ParsedOperationList member functions.
//
#include "rpimpl_oplist.h" //ParsedOperationList.
#include "rpimpl_ex.h" //SContext, Ex.
#include <assert.h>
#include <stdio.h>
void ParsedOperationList:: init( void )
{
m_n = 0;
for ( int k = 0; k < NMAX; k++ ) { m_arr[k] = NULL; }
}
void ParsedOperationList:: zap( void )
{
for ( int k = 0; k < NMAX; k++ )
{
OperationBase const * p = m_arr[k];
if ( p != NULL ) { delete p; }
}
}
OperationBase const * ParsedOperationList:: getElem( int i ) const
{
assert( BETWEEN_IE( 0, i, m_n ) );
return m_arr[i];
}
void ParsedOperationList:: appendElem(
SContext const * iCxt,
OperationBase const * iOp )
{
if ( m_n >= NMAX ) { throw Ex( iCxt, "too many operations in expression" ); }
m_arr[m_n] = iOp;
m_n++;
}
void ParsedOperationList:: dump( FILE * oF ) const
{
fprintf( oF, "OpList (n=%d) : ", m_n );
for ( int k = 0; k < m_n; k++ )
{
m_arr[k]->print(oF);
fprintf( oF, " " );
}
fprintf( oF, "\n" );
}