Skip to content

Commit

Permalink
shorten the logic for negated operations, fix logic bugs in strmath.hpp
Browse files Browse the repository at this point in the history
  • Loading branch information
radj307 committed Mar 4, 2022
1 parent 1a4f99b commit a7b024e
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 28 deletions.
2 changes: 1 addition & 1 deletion 307lib
30 changes: 3 additions & 27 deletions convlib/include/tokenizers/bitwise.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,39 +193,15 @@ namespace bitwise {

long long operator&(const Operand& o) const
{
if (negated && !o.negated)
return ~value & o.value;
else if (!negated && !o.negated)
return value & o.value;
else if (!negated && o.negated)
return value & ~o.value;
else if (negated && o.negated)
return ~value & ~o.value;
else throw make_exception("Unhandled operation");
return (negated ? ~value : value) & (o.negated ? ~o.value : o.value);
}
long long operator|(const Operand& o) const
{
if (negated && !o.negated)
return ~value | o.value;
else if (!negated && !o.negated)
return value | o.value;
else if (!negated && o.negated)
return value | ~o.value;
else if (negated && o.negated)
return ~value | ~o.value;
else throw make_exception("Unhandled operation");
return (negated ? ~value : value) | (o.negated ? ~o.value : o.value);
}
long long operator^(const Operand& o) const
{
if (negated && !o.negated)
return ~value ^ o.value;
else if (!negated && !o.negated)
return value ^ o.value;
else if (!negated && o.negated)
return value ^ ~o.value;
else if (negated && o.negated)
return ~value ^ ~o.value;
else throw make_exception("Unhandled operation");
return (negated ? ~value : value) ^ (o.negated ? ~o.value : o.value);
}

friend std::ostream& operator<<(std::ostream& os, const Operand& op)
Expand Down

0 comments on commit a7b024e

Please sign in to comment.