flatcherlee's picture
Upload 2334 files
3d5837a verified
raw
history blame
1.58 kB
from typing import Any, Callable, Mapping
DEFAULT_BOOL = ("BOOL", {"default": False})
BOOL_UNARY_OPERATIONS: Mapping[str, Callable[[bool], bool]] = {
"Not": lambda a: not a,
}
BOOL_BINARY_OPERATIONS: Mapping[str, Callable[[bool, bool], bool]] = {
"Nor": lambda a, b: not (a or b),
"Xor": lambda a, b: a ^ b,
"Nand": lambda a, b: not (a and b),
"And": lambda a, b: a and b,
"Xnor": lambda a, b: not (a ^ b),
"Or": lambda a, b: a or b,
"Eq": lambda a, b: a == b,
"Neq": lambda a, b: a != b,
}
class BoolUnaryOperation:
@classmethod
def INPUT_TYPES(cls) -> Mapping[str, Any]:
return {
"required": {"op": (list(BOOL_UNARY_OPERATIONS.keys()),), "a": DEFAULT_BOOL}
}
RETURN_TYPES = ("BOOL",)
FUNCTION = "op"
CATEGORY = "math/bool"
def op(self, op: str, a: bool) -> tuple[bool]:
return (BOOL_UNARY_OPERATIONS[op](a),)
class BoolBinaryOperation:
@classmethod
def INPUT_TYPES(cls) -> Mapping[str, Any]:
return {
"required": {
"op": (list(BOOL_BINARY_OPERATIONS.keys()),),
"a": DEFAULT_BOOL,
"b": DEFAULT_BOOL,
}
}
RETURN_TYPES = ("BOOL",)
FUNCTION = "op"
CATEGORY = "math/bool"
def op(self, op: str, a: bool, b: bool) -> tuple[bool]:
return (BOOL_BINARY_OPERATIONS[op](a, b),)
NODE_CLASS_MAPPINGS = {
"CM_BoolUnaryOperation": BoolUnaryOperation,
"CM_BoolBinaryOperation": BoolBinaryOperation,
}