Important Update:

- Add bidirectional flag for AddInput/AddOutput methods on FunctionCore
This commit is contained in:
Charl Wentzel
2016-05-31 07:24:51 +02:00
parent b4073a166a
commit 1aa0d98b35
2 changed files with 15 additions and 5 deletions

View File

@@ -126,7 +126,7 @@ TLocalIO * CFunctionCore::AddLocalIO( const char * IOName )
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// Automated Data Input/Output // Automated Data Input/Output
bool CFunctionCore::AddInput( const char * IOName, CFunctionCore * OutFunction, const char * OutputName ) bool CFunctionCore::AddInput( const char * IOName, CFunctionCore * OutFunction, const char * OutputName, bool Bidirectional )
{ {
TLocalIO * LocalIO = NULL; TLocalIO * LocalIO = NULL;
TLinkedIO ** LinkedIO = NULL; TLinkedIO ** LinkedIO = NULL;
@@ -158,11 +158,16 @@ bool CFunctionCore::AddInput( const char * IOName, CFunctionCore * OutFunction,
LogMessage( dlLow, "%s: Input Linked - '%s'/'%s' <-- '%s'/'%s'", Name, Name, IOName, OutFunction->GetName(), OutputName ); LogMessage( dlLow, "%s: Input Linked - '%s'/'%s' <-- '%s'/'%s'", Name, Name, IOName, OutFunction->GetName(), OutputName );
} }
// Link Return direction as well
if (Bidirectional) {
return OutFunction->AddInput( OutputName, this, IOName, false );
}
return true; return true;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
bool CFunctionCore::AddOutput( const char * IOName, CFunctionCore * InFunction, const char * InputName ) bool CFunctionCore::AddOutput( const char * IOName, CFunctionCore * InFunction, const char * InputName, bool Bidirectional )
{ {
TLocalIO * LocalIO = NULL; TLocalIO * LocalIO = NULL;
TLinkedIO ** LinkedIO = NULL; TLinkedIO ** LinkedIO = NULL;
@@ -194,6 +199,11 @@ bool CFunctionCore::AddOutput( const char * IOName, CFunctionCore * InFunction,
LogMessage( dlLow, "%s: Output Linked - '%s'/'%s' --> '%s'/'%s'", Name, Name, IOName, InFunction->GetName(), InputName ); LogMessage( dlLow, "%s: Output Linked - '%s'/'%s' --> '%s'/'%s'", Name, Name, IOName, InFunction->GetName(), InputName );
} }
// Link return direction as well
if (Bidirectional) {
return InFunction->AddOutput( InputName, this, IOName, false );
}
return true; return true;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@@ -79,8 +79,8 @@ public:
virtual int Output( const char * IOName, const char * Data, int Len = -1 ); virtual int Output( const char * IOName, const char * Data, int Len = -1 );
// Automated Data Input/Output // Automated Data Input/Output
virtual bool AddInput( const char * IOName, CFunctionCore * OutFunction, const char * OutputName ); virtual bool AddInput( const char * IOName, CFunctionCore * OutFunction, const char * OutputName, bool Bidirectional );
virtual bool AddOutput( const char * IOName, CFunctionCore * InFunction, const char * InputName ); virtual bool AddOutput( const char * IOName, CFunctionCore * InFunction, const char * InputName, bool Bidirectional );
virtual bool Process() = 0; virtual bool Process() = 0;
}; };