//## 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%4209C5FB02C3.cm preserve=no //## end module%4209C5FB02C3.cm //## begin module%4209C5FB02C3.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%4209C5FB02C3.cp //## Module: DefinedVariableTable%4209C5FB02C3; Pseudo Package body //## Subsystem: MASS::Dev::Tools::TxnTestManager::src%41F5A79001E4 //## Source file: Z:\MASS_Dev\Tools\TxnTestManager\src\DefinedVariableTable.cpp //## begin module%4209C5FB02C3.additionalIncludes preserve=no //## end module%4209C5FB02C3.additionalIncludes //## begin module%4209C5FB02C3.includes preserve=yes #pragma warn -com #include #pragma warn +com //## end module%4209C5FB02C3.includes // TestScenario #include "TestScenario.h" // TransactionSpecification #include "TransactionSpecification.h" // EvaluationContext #include "EvaluationContext.h" // DefinedVariable #include "DefinedVariable.h" // DefinedVariableTable #include "DefinedVariableTable.h" //## begin module%4209C5FB02C3.additionalDeclarations preserve=yes //## end module%4209C5FB02C3.additionalDeclarations // Class DefinedVariableTable DefinedVariableTable::DefinedVariableTable() //## begin DefinedVariableTable::DefinedVariableTable%4209C5FB02C3_const.initialization preserve=yes //## end DefinedVariableTable::DefinedVariableTable%4209C5FB02C3_const.initialization { //## begin DefinedVariableTable::DefinedVariableTable%4209C5FB02C3_const.body preserve=yes //## end DefinedVariableTable::DefinedVariableTable%4209C5FB02C3_const.body } DefinedVariableTable::~DefinedVariableTable() { //## begin DefinedVariableTable::~DefinedVariableTable%4209C5FB02C3_dest.body preserve=yes clear(); //## end DefinedVariableTable::~DefinedVariableTable%4209C5FB02C3_dest.body } //## Other Operations (implementation) //## Operation: clear%4209C916032F void DefinedVariableTable::clear () { //## begin DefinedVariableTable::clear%4209C916032F.body preserve=yes for ( std::map< std::string, DefinedVariable * >::iterator where = m_variable.begin(); where != m_variable.end(); ++where ) { delete where->second; where->second = 0; } //## end DefinedVariableTable::clear%4209C916032F.body } //## Operation: defineVariable%425B4483019F DefinedVariable& DefinedVariableTable::defineVariable (const std::string &variableName) { //## begin DefinedVariableTable::defineVariable%425B4483019F.body preserve=yes std::map< std::string, DefinedVariable * >::const_iterator instance = m_variable.find( variableName ); if ( instance != m_variable.end() ) { return ( *instance->second ); } else { DefinedVariable * object = 0; try { object = new DefinedVariable( variableName ); if ( m_variable.insert( std::map< std::string, DefinedVariable * >::value_type( variableName, object ) ).second ) { return ( *object ); } else { MTHROW( std::runtime_error, \ "Cannot add variable \"" \ << variableName \ << "\" to defined variable table." ); } } catch ( ... ) { delete object; object = 0; throw; } } //## end DefinedVariableTable::defineVariable%425B4483019F.body } //## Operation: defineVariable%425B461402A1 DefinedVariable& DefinedVariableTable::defineVariable (const std::string &variableName, TestScenario &testScenario) { //## begin DefinedVariableTable::defineVariable%425B461402A1.body preserve=yes const int testScenarioNumber = testScenario.getScenarioNumber(); std::map< int, TestScenario * >::const_iterator instance = m_scenario.find( testScenarioNumber ); if ( instance != m_scenario.end() ) { return ( testScenario.defineVariable( variableName ) ); } else { if ( m_scenario.insert( std::map< int, TestScenario * >::value_type( testScenarioNumber, &testScenario ) ).second ) { return ( testScenario.defineVariable( variableName ) ); } else { MTHROW( std::runtime_error, \ "Cannot add test scenario \"" \ << testScenarioNumber \ << "\" to defined variable table." ); } } //## end DefinedVariableTable::defineVariable%425B461402A1.body } //## Operation: getVariable%4209C7770264 DefinedVariable& DefinedVariableTable::getVariable (const std::string &variableName, EvaluationContext& context) { //## begin DefinedVariableTable::getVariable%4209C7770264.body preserve=yes std::map< int, TestScenario * >::const_iterator scenario = m_scenario.find( context.getTransaction().getScenario().getScenarioNumber() ); if ( scenario != m_scenario.end() && scenario->second->isVariable( variableName ) ) { return ( scenario->second->getVariable( variableName ) ); } std::map< std::string, DefinedVariable * >::const_iterator instance = m_variable.find( variableName ); if ( instance != m_variable.end() ) { return ( *instance->second ); } MTHROW( std::runtime_error, \ "Variable \"" \ << variableName \ << "\" is not defined." ); //## end DefinedVariableTable::getVariable%4209C7770264.body } //## Operation: isVariable%420ACFBB01CE const bool DefinedVariableTable::isVariable (const std::string &symbol, EvaluationContext& context) const { //## begin DefinedVariableTable::isVariable%420ACFBB01CE.body preserve=yes std::map< int, TestScenario * >::const_iterator instance = m_scenario.find( context.getTransaction().getScenario().getScenarioNumber() ); if ( instance != m_scenario.end() && instance->second->isVariable( symbol ) ) { return ( true ); } return ( m_variable.find( symbol ) != m_variable.end() ); //## end DefinedVariableTable::isVariable%420ACFBB01CE.body } // Additional Declarations //## begin DefinedVariableTable%4209C5FB02C3.declarations preserve=yes //## end DefinedVariableTable%4209C5FB02C3.declarations //## begin module%4209C5FB02C3.epilog preserve=yes //## end module%4209C5FB02C3.epilog