JBoolean SCCircuitVarList::AddFunction ( const JCharacter* name, const JFunction& f, const JBoolean visible ) { JIndex index; if (!JNameValid(name)) { return kJFalse; } else if (ParseVariableName(name, strlen(name), &index)) { (JGetUserNotification())->ReportError("This variable name is already used."); return kJFalse; } else { VarInfo info; info.name = new JString(name); assert( info.name != NULL ); info.f = f.Copy(); info.visible = visible; itsVars->AppendElement(info); Broadcast(VarInserted(GetElementCount())); return kJTrue; } }
void SCPlotDirector::AddFunction ( const JFunction& f, const JCharacter* name, const JFloat xMin, const JFloat xMax ) { AddFunction(f.Copy(), name, xMin, xMax); }
JNaryFunction::JNaryFunction ( const JNaryFunction& source ) : JFunctionWithArgs(source) { itsArgList = new JPtrArray<JFunction>(JPtrArrayT::kDeleteAll, kMaxReasonableArgCount); assert( itsArgList != NULL ); const JSize argCount = (source.itsArgList)->GetElementCount(); for (JIndex i=1; i<=argCount; i++) { JFunction* sourceArg = (source.itsArgList)->GetElement(i); JFunction* arg = sourceArg->Copy(); itsArgList->Append(arg); } }
JBoolean SCCircuitVarList::SetFunction ( const JIndex index, const JFunction& f ) { if (IsFunction(index)) { VarInfo info = itsVars->GetElement(index); delete (info.f); info.f = f.Copy(); itsVars->SetElement(index, info); Broadcast(VarValueChanged(index,1)); return kJTrue; } else { return kJFalse; } }