void _Variable::CompileListOfDependents (_SimpleList& rec) { _SimpleList tcache; long iv, i = variableNames.Traverser (tcache,iv,variableNames.GetRoot()); for (; i >= 0; i = variableNames.Traverser (tcache,iv)) { _Variable* thisVar = FetchVar (i); if (!thisVar->IsIndependent()) { if (thisVar->CheckFForDependence (theIndex)) { long f = thisVar->GetAVariable(); if (rec.Find(f)<0) { rec<<f; } } } } }
bool _HYPlatformWindow::_Close(Ptr theData) { _HYWindow* theParent = (_HYWindow*)this; bool doit = theParent->ConfirmClose(); if (doit) { long f = windowObjects.Find((long)this); if (f>=0) { windowObjects.Delete(f); windowPtrs.Delete(f); windowObjectRefs.Delete(f); } if (!theData) gtk_object_destroy (GTK_OBJECT(theWindow)); if (windowPtrs.lLength == 0) gtk_main_quit(); } return doit; }
//__________________________________________________________________________________ void _Variable::SetValue (_PMathObj theP, bool dup) // set the value of the var { //hasBeenChanged = true; varFlags &= HY_VARIABLE_SET; varFlags |= HY_VARIABLE_CHANGED; long valueClass = theP->ObjectClass(); if (valueClass==NUMBER) { if (varFormula) { // also update the fact that this variable is no longer dependent in all declared // variable containers which contain references to this variable long i; for (i = 0; i<variablePtrs.lLength; i++) { if (freeSlots.Find(i)>=0) { continue; } _Variable* theV = (_Variable*)variablePtrs(i); if (theV->IsContainer()) { _VariableContainer* theVC = (_VariableContainer*)theV; if (!theVC->RemoveDependance (theIndex)) { ReportWarning ((_String("Can't make variable ")&*GetName()&" independent in the context of "&*theVC->GetName()&" because its template variable is not independent.")); continue; } } } for (i = 0; i<likeFuncList.lLength; i++) if (((_String*)likeFuncNamesList(i))->sLength) { ((_LikelihoodFunction*)likeFuncList(i))->UpdateDependent(theIndex); } //_Formula::Clear(); delete (varFormula); varFormula = nil; } if (varValue) { DeleteObject (varValue); varValue=nil; } theValue = theP->Value(); if (!dup) { DeleteObject (theP); } if (theValue<lowerBound || theValue>upperBound) { if (theValue <= lowerBound+1e-50) { theValue = lowerBound; } else { theValue = upperBound; } } } else { if (varFormula) { delete (varFormula); varFormula = nil; //theFormula.Clear(); } if (varValue) { DeleteObject (varValue); varValue=nil; } if (valueClass==TREE) { variablePtrs.lData[theIndex] = (long)(((_TheTree*)theP)->makeDynamicCopy(GetName())); DeleteObject(this); } else { if (dup) { varValue = (_PMathObj)theP->makeDynamic(); } else { varValue = theP; } } } }