struct State
{
TimeMs lastUpdateTime;
};
{{ GENERATED_CODE }}
void evaluate(Context ctx)
{
State* state = getState(ctx);
TimeMs tms = transactionTime();
if (isInputDirty<input_RST>(ctx))
emitValue<output_OUT>(ctx, 0);
else if (getValue<input_EN>(ctx) && isInputDirty<input_UPD>(ctx))
emitValue<output_Tms>(ctx, getValue<output_Tsec>(ctx) + (tms - state->lastUpdateTime));
state->lastUpdateTime = tms;
}