cwFlowNet.cpp: exec_cycle() now notices kEofRC as signal to halt.

This commit is contained in:
kevin 2024-07-01 10:29:34 -04:00
parent fad3cf0dd1
commit da82de9336

View File

@ -963,7 +963,7 @@ namespace cw
// verify that the remote_value type is included in the local_value type flags // verify that the remote_value type is included in the local_value type flags
if( cwIsNotFlag(local_var->varDesc->type, remote_var->varDesc->type) ) if( cwIsNotFlag(local_var->varDesc->type, remote_var->varDesc->type) )
{ {
rc = cwLogError(kSyntaxErrorRC,"The type flags don't match on %s:%s:%i %s:%s:%i.%s:%i .", local_label,local_var_label, local_var_sfx_id, remote_label, remote_proc_label, remote_proc_sfx_id, remote_var_label, remote_var_sfx_id); rc = cwLogError(kSyntaxErrorRC,"The type flags don't match on %s:%s:%i (type:0x%x) %s:%s:%i.%s:%i (type:0x%x).", local_label,local_var_label, local_var_sfx_id, local_var->varDesc->type, remote_label, remote_proc_label, remote_proc_sfx_id, remote_var_label, remote_var_sfx_id, remote_var->varDesc->type);
goto errLabel; goto errLabel;
} }
@ -2956,17 +2956,23 @@ const cw::object_t* cw::flow::find_network_preset( const network_t& net, const c
cw::rc_t cw::flow::exec_cycle( network_t& net ) cw::rc_t cw::flow::exec_cycle( network_t& net )
{ {
rc_t rc = kOkRC; rc_t rc = kOkRC;
bool halt_fl = false;
for(unsigned i=0; i<net.proc_arrayN; ++i) for(unsigned i=0; i<net.proc_arrayN; ++i)
{ {
if((rc = net.proc_array[i]->class_desc->members->exec(net.proc_array[i])) != kOkRC ) if((rc = net.proc_array[i]->class_desc->members->exec(net.proc_array[i])) != kOkRC )
{ {
rc = cwLogError(rc,"Execution failed on the proc:%s:%i.",cwStringNullGuard(net.proc_array[i]->label),net.proc_array[i]->label_sfx_id); if( rc == kEofRC )
break; halt_fl = true;
else
{
rc = cwLogError(rc,"Execution failed on the proc:%s:%i.",cwStringNullGuard(net.proc_array[i]->label),net.proc_array[i]->label_sfx_id);
break;
}
} }
} }
return rc; return halt_fl ? kEofRC : rc;
} }
cw::rc_t cw::flow::get_variable( network_t& net, const char* proc_label, const char* var_label, unsigned chIdx, proc_t*& procPtrRef, variable_t*& varPtrRef ) cw::rc_t cw::flow::get_variable( network_t& net, const char* proc_label, const char* var_label, unsigned chIdx, proc_t*& procPtrRef, variable_t*& varPtrRef )