cwFlowProc.cpp : Added 'store' variable to number proc.
This commit is contained in:
parent
af9d9bdc57
commit
bcb2fdfcad
@ -4071,6 +4071,80 @@ namespace cw
|
|||||||
{
|
{
|
||||||
enum {
|
enum {
|
||||||
kValuePId,
|
kValuePId,
|
||||||
|
kStorePId,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bool store_fl;
|
||||||
|
} inst_t;
|
||||||
|
|
||||||
|
rc_t _create( proc_t* proc, inst_t* p )
|
||||||
|
{
|
||||||
|
rc_t rc = kOkRC;
|
||||||
|
|
||||||
|
if((rc = var_register(proc,kAnyChIdx,
|
||||||
|
kValuePId,"value",kBaseSfxId,
|
||||||
|
kStorePId,"store",kBaseSfxId)) != kOkRC )
|
||||||
|
{
|
||||||
|
goto errLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
errLabel:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc_t _destroy( proc_t* proc, inst_t* p )
|
||||||
|
{ return kOkRC; }
|
||||||
|
|
||||||
|
rc_t _value( proc_t* proc, inst_t* p, variable_t* var )
|
||||||
|
{
|
||||||
|
// skip the 'stored' value sent through prior to runtime.
|
||||||
|
if( var->vid == kStorePId && proc->ctx->isInRuntimeFl)
|
||||||
|
p->store_fl = true;
|
||||||
|
|
||||||
|
return kOkRC;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc_t _exec( proc_t* proc, inst_t* p )
|
||||||
|
{
|
||||||
|
rc_t rc = kOkRC;
|
||||||
|
|
||||||
|
if( p->store_fl )
|
||||||
|
{
|
||||||
|
variable_t* var = nullptr;
|
||||||
|
// Set 'value' from 'store'.
|
||||||
|
// Note that we set the 'value' directly from var->value so that
|
||||||
|
// no extra type converersion is applied. In this case the value
|
||||||
|
// 'store' will be coerced to the type of 'value'
|
||||||
|
if((rc = var_find(proc, kStorePId, kAnyChIdx, var )) == kOkRC && var->value != nullptr )
|
||||||
|
rc = var_set(proc,kValuePId,kAnyChIdx,var->value);
|
||||||
|
|
||||||
|
p->store_fl = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc_t _report( proc_t* proc, inst_t* p )
|
||||||
|
{ return kOkRC; }
|
||||||
|
|
||||||
|
class_members_t members = {
|
||||||
|
.create = std_create<inst_t>,
|
||||||
|
.destroy = std_destroy<inst_t>,
|
||||||
|
.value = std_value<inst_t>,
|
||||||
|
.exec = std_exec<inst_t>,
|
||||||
|
.report = std_report<inst_t>
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
namespace number
|
||||||
|
{
|
||||||
|
enum {
|
||||||
|
kValuePId,
|
||||||
|
kStorePId,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -4078,10 +4152,10 @@ namespace cw
|
|||||||
rc_t create( proc_t* proc )
|
rc_t create( proc_t* proc )
|
||||||
{
|
{
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
double value = 0;
|
|
||||||
|
|
||||||
if((rc = var_register_and_get(proc,kAnyChIdx,
|
if((rc = var_register(proc,kAnyChIdx,
|
||||||
kValuePId,"value",kBaseSfxId,value)) != kOkRC )
|
kValuePId,"value",kBaseSfxId,
|
||||||
|
kStorePId,"store",kBaseSfxId)) != kOkRC )
|
||||||
{
|
{
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
}
|
}
|
||||||
@ -4117,6 +4191,7 @@ namespace cw
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user