2020-04-25 00:46:54 +00:00
|
|
|
pub mod nodes;
|
|
|
|
mod command;
|
|
|
|
mod graph;
|
|
|
|
mod node;
|
|
|
|
mod edge;
|
|
|
|
mod node_slot;
|
|
|
|
mod schedule;
|
|
|
|
pub use command::*;
|
|
|
|
pub use graph::*;
|
|
|
|
pub use node::*;
|
|
|
|
pub use edge::*;
|
|
|
|
pub use node_slot::*;
|
|
|
|
pub use schedule::*;
|
2019-12-02 04:03:04 +00:00
|
|
|
|
2020-04-25 00:46:54 +00:00
|
|
|
use thiserror::Error;
|
|
|
|
|
|
|
|
#[derive(Error, Debug, Eq, PartialEq)]
|
|
|
|
pub enum RenderGraphError {
|
|
|
|
#[error("Node does not exist")]
|
|
|
|
InvalidNode(NodeLabel),
|
|
|
|
#[error("Node slot does not exist")]
|
|
|
|
InvalidNodeSlot(SlotLabel),
|
|
|
|
#[error("Node does not match the given type")]
|
|
|
|
WrongNodeType,
|
|
|
|
#[error("Attempted to connect a node output slot to an incompatible input node slot")]
|
|
|
|
MismatchedNodeSlots {
|
|
|
|
output_node: NodeId,
|
|
|
|
output_slot: usize,
|
|
|
|
input_node: NodeId,
|
|
|
|
input_slot: usize,
|
|
|
|
},
|
|
|
|
#[error("Attempted to add an edge that already exists")]
|
|
|
|
EdgeAlreadyExists(Edge),
|
|
|
|
#[error("Node has an unconnected input slot.")]
|
|
|
|
UnconnectedNodeInputSlot { node: NodeId, input_slot: usize },
|
|
|
|
#[error("Node has an unconnected output slot.")]
|
|
|
|
UnconnectedNodeOutputSlot { node: NodeId, output_slot: usize },
|
|
|
|
#[error("Node input slot already occupied")]
|
|
|
|
NodeInputSlotAlreadyOccupied { node: NodeId, input_slot: usize, occupied_by_node: NodeId },
|
|
|
|
}
|