Program: bbtk
Module: $RCSfile: bbtkBlackBox.cxx,v $
Language: C++
- Date: $Date: 2008/12/09 12:54:02 $
- Version: $Revision: 1.34 $
+ Date: $Date: 2008/12/10 09:33:18 $
+ Version: $Revision: 1.36 $
=========================================================================*/
/* ---------------------------------------------------------------------
//=========================================================================
- void BlackBox::AddChangeObserver(const std::string& output_name,
+ void BlackBox::bbAddOutputObserver(const std::string& output,
OutputChangeCallbackType f)
{
+ bbGetOutputConnector(output).AddChangeObserver(f);
}
//=========================================================================
//=========================================================================
- void BlackBox::RemoveChangeObserver(const std::string& output_name,
+ void BlackBox::bbRemoveOutputObserver(const std::string& output_name,
OutputChangeCallbackType f)
{
+ bbtkError("BlackBox::RemoveChangeObserver NOT IMPLEMENTED");
}
//=========================================================================
for ( o = bbGetOutputConnectorMap().begin();
o != bbGetOutputConnectorMap().end(); ++o )
{
- // bbSetStatusAndPropagate(o->second, OUTOFDATE);
if (o->second->GetStatus()==UPTODATE)
{
o->second->SetStatus(OUTOFDATE);
}
//=========================================================================
- //=========================================================================
- void BlackBox::bbSetStatusAndPropagate(BlackBoxOutputConnector* c,
- IOStatus s)
- {
- bbtkError("bbSetStatusAndPropagate(BlackBoxOutputConnector* c,IOStatus s)");
- /*
- if (i->GetStatus()==UPTODATE)
- {
- i->second->SetStatus(s);
- i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
- }
- */
- }
- //=========================================================================
-
-
- /// Signals that the BlackBox has been modified
- /*
- void BlackBox::bbSetModifiedStatus(BlackBoxInputConnector* c)
- {
- bbtkDebugMessage("modified",1,
- "==> BlackBox::bbSetModifiedStatus("<<c<<") ["
- <<bbGetFullName()<<"]"<<std::endl);
-
- if ( (c==bbGetInputConnectorMap().find("WinHide")->second) )
- // && (bbCanReact()))
- {
- bbtkDebugMessage("modified",2,
- "-> Hide triggered by WinHide input change"
- <<std::endl);
- this->bbHideWindow();
- this->bbSetStatus(MODIFIED);
- return;
- }
- if ( (c==bbGetInputConnectorMap().find("WinClose")->second) )
- // && (bbCanReact()))
- {
- bbtkDebugMessage("modified",2,
- "-> Close triggered by WinClose input change"
- <<std::endl);
- this->bbHideWindow();
- this->bbSetStatus(MODIFIED);
- return;
- }
-
- if ( ( bbBoxProcessModeIsReactive() ||
- (c==bbGetInputConnectorMap().find("BoxExecute")->second))
- && (bbCanReact() ) )
- {
- bbtkDebugMessage("modified",2,
- "-> Execution triggered by Reactive mode or BoxExecute input change"<<std::endl);
- this->bbSetStatus(MODIFIED);
- bbGlobalAddToExecutionList( GetThisPointer<BlackBox>() );
- }
-
- //else if ( bbGetStatus() == MODIFIED ) //! this->bbIsUptodate())
- // {
-// bbtkDebugMessage("modified",2,"-> Already modified"<<std::endl);
-// return;
- // }
-
- else
- {
- bbtkDebugMessage("modified",2,"-> Status set to modified"<<std::endl);
- this->bbSetStatus(MODIFIED);
- }
-
- this->bbSignalOutputModification(false);
-
- bbtkDebugMessageDec("process",5,
- "<= BlackBox::bbSetModifiedStatus("<<c<<") ["
- <<bbGetFullName()<<"]"<<std::endl);
- }
-*/
- //=========================================================================
//=========================================================================
void BlackBox::bbSignalOutputModification(bool reaction)
for ( i = bbGetOutputConnectorMap().begin();
i != bbGetOutputConnectorMap().end(); ++i)
{
- if (i->second->GetStatus()==UPTODATE)
- {
- // i->second->SetStatus(MODIFIED);
+ // std::cout << "Stat = "
+ //<<GetIOStatusString(i->second->GetStatus())
+ // <<std::endl;
+ // LG : CANNOT SIGNAL ONLY WHEN UPTODATE
+ // See bbtkSampleOutputObserver
+ // if (i->second->GetStatus()==UPTODATE)
+ // {
i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
- }
+ // }
}
if (reaction) bbGlobalProcessExecutionList();
bbtkError("BlackBox["<<bbGetFullName()<<"]::bbSignalOutputModification("<<output<<") : unknown output");
}
- if (i->second->GetStatus()==UPTODATE)
- {
- // i->second->SetStatus(MODIFIED);
+ // if (i->second->GetStatus()==UPTODATE)
+ // {
i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
// Has to notify the output "BoxChange" also
if (output != "BoxChange")
i = bbGetOutputConnectorMap().find("BoxChange");
if ( i != bbGetOutputConnectorMap().end() )
{
- // i->second->SetStatus(MODIFIED);
i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
}
}
if (reaction) bbGlobalProcessExecutionList();
- }
+ // }
bbtkDebugMessageDec("change",5,
"<= BlackBox::bbSignalOutputModification("
{
bbtkError("BlackBox["<<bbGetFullName()<<"]::bbSignalOutputModification("<<*o<<") : unknown output");
}
- // Already OUTOFDATE : noting to do
- if (i->second->GetStatus()==UPTODATE)
- {
- // i->second->SetStatus(MODIFIED);
+
+ // if (i->second->GetStatus()==UPTODATE)
+ // {
i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
changed = true;
- }
+ // }
}
// Has to notify the output "BoxChange" also
i = bbGetOutputConnectorMap().find("BoxChange");
if ( changed && (i != bbGetOutputConnectorMap().end()))
{
- // Already OUTOFDATE : noting to do
- if (i->second->GetStatus()==UPTODATE)
- {
- // i->second->SetStatus(MODIFIED);
+ // if (i->second->GetStatus()==UPTODATE)
+ // {
i->second->SignalChange(GetThisPointer<BlackBox>(),i->first);
if (reaction) bbGlobalProcessExecutionList();
- }
+ // }
}
bbtkDebugMessageDec("change",5,