Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

//## begin module%1.7%.codegen_version preserve=yes
//   Read the documentation to learn more about C++ code generator
//   versioning.
//## end module%1.7%.codegen_version

//## begin module%4209C61A01F8.cm preserve=no
//## end module%4209C61A01F8.cm

//## begin module%4209C61A01F8.cp preserve=no
//      C O P Y R I G H T   N O T I C E
//      This material is confidential to ERG and may not be disclosed in whole
//      or in part to any third party nor used in any manner whatsoever other
//      than for the purposes expressly consented to by ERG in writing.
//
//      This material is also copyright and may not be reproduced, stored in a
//      retrieval system or transmitted in any form or by any means in whole or
//      in part without the express written consent of ERG.
//## end module%4209C61A01F8.cp

//## Module: DefinedVariable%4209C61A01F8; Pseudo Package body
//## Subsystem: MASS::Dev::Tools::TxnTestManager::src%41F5A79001E4
//## Source file: Z:\MASS_Dev\Tools\TxnTestManager\src\DefinedVariable.cpp

//## begin module%4209C61A01F8.additionalIncludes preserve=no
//## end module%4209C61A01F8.additionalIncludes

//## begin module%4209C61A01F8.includes preserve=yes
#pragma warn -com
#include <LoggingMacros.h>
#pragma warn +com
//## end module%4209C61A01F8.includes

// TransactionSpecificationValue
#include "TransactionSpecificationValue.h"
// DefinedVariable
#include "DefinedVariable.h"
// EvaluationContext
#include "EvaluationContext.h"
//## begin module%4209C61A01F8.additionalDeclarations preserve=yes
#include <algorithm>
//## end module%4209C61A01F8.additionalDeclarations


// Class DefinedVariable 

//## Operation: DefinedVariable%4209CBCF00A3
DefinedVariable::DefinedVariable (const std::string &variableName)
  //## begin DefinedVariable::DefinedVariable%4209CBCF00A3.hasinit preserve=no
      : m_variableName(variableName)
  //## end DefinedVariable::DefinedVariable%4209CBCF00A3.hasinit
  //## begin DefinedVariable::DefinedVariable%4209CBCF00A3.initialization preserve=yes
  //## end DefinedVariable::DefinedVariable%4209CBCF00A3.initialization
{
  //## begin DefinedVariable::DefinedVariable%4209CBCF00A3.body preserve=yes
  //## end DefinedVariable::DefinedVariable%4209CBCF00A3.body
}


DefinedVariable::~DefinedVariable()
{
  //## begin DefinedVariable::~DefinedVariable%4209C61A01F8_dest.body preserve=yes
  //## end DefinedVariable::~DefinedVariable%4209C61A01F8_dest.body
}



//## Other Operations (implementation)
//## Operation: evaluate%420ACC990152
const bool DefinedVariable::evaluate (std::string &value, const bool &sideEffect, EvaluationContext& evaluationContext, std::vector< DefinedVariable * > &path, bool &postponed)
{
  //## begin DefinedVariable::evaluate%420ACC990152.body preserve=yes

        if ( std::find( path.begin(), path.end(), this ) == path.end() )
        {
                try
                {
                        path.push_back( this );
                        
                        return ( m_expression.evaluate( value, sideEffect, evaluationContext, path, postponed ) );
                }
                __finally
                {
                        path.pop_back();
                }
        }
        else
        {
                MERROR( "Cyclic definition found.  Cannot evaluate \"" \
                        << m_variableName \
                        << "\"." );
        }
        
        return ( false );

  //## end DefinedVariable::evaluate%420ACC990152.body
}

//## Operation: getExpression%420ACC82000A
const std::string & DefinedVariable::getExpression () const
{
  //## begin DefinedVariable::getExpression%420ACC82000A.body preserve=yes

        return ( m_expression.getExpression() );

  //## end DefinedVariable::getExpression%420ACC82000A.body
}

//## Operation: setExpression%420ACC82000B
const std::string & DefinedVariable::setExpression (const std::string &value)
{
  //## begin DefinedVariable::setExpression%420ACC82000B.body preserve=yes

        return ( m_expression.setExpression( value ) );

  //## end DefinedVariable::setExpression%420ACC82000B.body
}

// Additional Declarations
  //## begin DefinedVariable%4209C61A01F8.declarations preserve=yes
  //## end DefinedVariable%4209C61A01F8.declarations

//## begin module%4209C61A01F8.epilog preserve=yes
//## end module%4209C61A01F8.epilog