VarAction2: Add helper functions for anti-commutative ops

This commit is contained in:
Jonathan G Rennison
2022-06-08 19:15:56 +01:00
parent 5db30e559e
commit 31e96ff5e7
2 changed files with 35 additions and 11 deletions

View File

@@ -300,6 +300,38 @@ inline bool IsEvalAdjustOperationCommutative(DeterministicSpriteGroupAdjustOpera
}
}
inline bool IsEvalAdjustOperationAntiCommutative(DeterministicSpriteGroupAdjustOperation op)
{
switch (op) {
case DSGA_OP_SUB:
case DSGA_OP_RSUB:
return true;
default:
return false;
}
}
inline bool IsEvalAdjustOperationReversable(DeterministicSpriteGroupAdjustOperation op)
{
return IsEvalAdjustOperationCommutative(op) || IsEvalAdjustOperationAntiCommutative(op);
}
inline DeterministicSpriteGroupAdjustOperation ReverseEvalAdjustOperation(DeterministicSpriteGroupAdjustOperation op)
{
if (IsEvalAdjustOperationCommutative(op)) return op;
switch (op) {
case DSGA_OP_SUB:
return DSGA_OP_RSUB;
case DSGA_OP_RSUB:
return DSGA_OP_SUB;
default:
NOT_REACHED();
}
}
inline bool IsEvalAdjustOperationOnConstantEffectiveLoad(DeterministicSpriteGroupAdjustOperation op, uint32 constant)
{
switch (op) {