JBoolean SCCircuitVarList::GetNumericValue ( const JIndex variableIndex, const JIndex elementIndex, JComplex* value ) const { const VarInfo info = itsVars->GetElement(variableIndex); if (elementIndex == 1 && info.f != NULL) { if (IsOnEvalStack(variableIndex)) { *value = 0.0; return kJFalse; } PushOnEvalStack(variableIndex); const JBoolean ok = (info.f)->Evaluate(value); PopOffEvalStack(variableIndex); return ok; } else if (elementIndex == 1) { *value = info.value; return kJTrue; } else { return kJFalse; } }
void JVariableList::PopOffEvalStack ( const JIndex variableIndex ) const { assert( IsOnEvalStack(variableIndex) ); itsEvalStack->SetElement(variableIndex, kJFalse); }
void JVariableList::PushOnEvalStack ( const JIndex variableIndex ) const { assert( !IsOnEvalStack(variableIndex) ); itsEvalStack->SetElement(variableIndex, kJTrue); }