1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! # Boolean Logic Nodes
//!
//! This module provides boolean logic operation nodes for processing boolean values
//! or values that can be evaluated as booleans.
//!
//! ## Standard Port Pattern
//!
//! All boolean logic nodes follow the standard port pattern for consistency:
//!
//! - **Input Ports**: `configuration` (currently unused, reserved for future use), plus data input ports
//! - **Output Ports**: Data output ports (`out`), plus `error`
//!
//! ## Available Nodes
//!
//! - **AndNode**: Logical AND operation (`configuration`, `in1`, `in2` → `out`, `error`)
//! - **OrNode**: Logical OR operation (`configuration`, `in1`, `in2` → `out`, `error`)
//! - **NotNode**: Logical NOT operation (`configuration`, `in` → `out`, `error`)
//! - **XorNode**: Logical XOR (exclusive OR) operation (`configuration`, `in1`, `in2` → `out`, `error`)
//! - **NandNode**: Logical NAND (NOT AND) operation (`configuration`, `in1`, `in2` → `out`, `error`)
//! - **NorNode**: Logical NOR (NOT OR) operation (`configuration`, `in1`, `in2` → `out`, `error`)
//!
//! ## Example Usage
//!
//! ```rust,no_run
//! use streamweave::nodes::boolean_logic::AndNode;
//! use streamweave::node::Node;
//!
//! // Create an AND node
//! let node = AndNode::new("and_gate".to_string());
//!
//! // All boolean logic nodes have the configuration port
//! assert!(node.has_input_port("configuration"));
//! assert!(node.has_input_port("in1")); // or "in" for NotNode
//! assert!(node.has_output_port("out"));
//! assert!(node.has_output_port("error"));
//! ```
pub use AndNode;
pub use NandNode;
pub use NorNode;
pub use NotNode;
pub use OrNode;
pub use XorNode;