hello i am adding the source code having the try and catch statement . i get run time error in the statement having catch and the error is "err" is unknown function
int CAssignmentTableStack::getConstantValue(string symbolName, string &number)
{
//returns 1 on successful calculation of constant value
//get the symbol name
string scopedSymbolName;
try
{
scopedSymbolName = m_pElaboration->getScopeResolvedName(symbolName);
}
catch(int err)
{
if(47 == err)
return -3;
else
throw err;
}
if(m_pAssignmentTables->find(scopedSymbolName) == m_pAssignmentTables->end())
{
return 0;
}
//if assignment table found then get the value
CAssignmentTable *tab = (m_pAssignmentTables->find(scopedSymbolName))->second;
//dummy variables to be passed
map<int, BDD*> bddsForWriting;
map<int, CDerivedBus*> conditionsForWriting, feedbackBuses;
CDerivedBus* symbolBus = (CDerivedBus*) m_pBusManager->getBus(scopedSymbolName);
//get msb lsb
const vector<int> &dim = symbolBus->getDimension();
int msb = dim[0];
int lsb = dim[1];
msb = symbolBus->mapUserIndex(msb);
lsb = symbolBus->mapUserIndex(lsb);
int r = tab->getThisRhs(*m_pCond, msb, lsb, *m_pBusManager, feedbackBuses, bddsForWriting, conditionsForWriting);
CDerivedBus *feedbackBus = m_pElaboration->concatBuses(feedbackBuses, symbolBus, msb, lsb);
CPinArray *sourcePort = feedbackBus->getSourcePort();
CHardwareElement *elem = sourcePort->getParent();
bool constant = true;
if( elem->getType() == IK_BUS_MANIPULATOR )
{
vector<CPin*> &inpins = elem->getInputPins();
int size = inpins.size();
int mask = 1;
for(int i = 0; i < size; ++i, mask = mask << 1)
{
CPin *p = inpins[i];
if(p && p->getWire())
{
CWire *w = p->getWire();
CWire::EDataType dType = w->getDataType();
switch(dType)
{
case CWire::GND:
number.insert(number.begin(), '0');
break;
case CWire::VCC:
number.insert(number.begin(), '1');
break;
case CWire:
ONT_CARE:
number.insert(number.begin(), '0');
break;
default:
constant = false;
break;
}
}
else
{
constant = false;
}
}
}
else
{
vector<CWire*> &wires = feedbackBus->getWires();
int size = wires.size();
int mask = 1;
for(int i = 0; i < size; ++i, mask = mask << 1)
{
CWire *w = wires[i];
if( w )
{
CWire::EDataType dType = w->getDataType();
switch(dType)
{
case CWire::GND:
number.insert(number.begin(), '0');
break;
case CWire::VCC:
number.insert(number.begin(), '1');
break;
case CWire:
ONT_CARE:
number.insert(number.begin(), '0');
break;
default:
constant = false;
break;
}
}
else
{
constant = false;
}
}
}
if(!constant)
return -2;
return 1;
}