#![warn(missing_docs)]
pub mod algorithms;
pub mod boundary;
pub mod hierarchy;
pub mod index;
pub mod multiportgraph;
pub mod portgraph;
pub mod render;
pub mod secondary;
pub mod unmanaged;
pub mod view;
pub mod weights;
#[cfg(feature = "proptest")]
pub mod proptest;
#[doc(inline)]
pub use crate::hierarchy::Hierarchy;
#[doc(inline)]
pub use crate::index::{IndexError, NodeIndex, PortIndex, PortOffset};
#[doc(inline)]
pub use crate::multiportgraph::MultiPortGraph;
#[doc(inline)]
pub use crate::portgraph::{LinkError, PortGraph};
#[doc(inline)]
pub use crate::secondary::SecondaryMap;
#[doc(inline)]
pub use crate::unmanaged::UnmanagedDenseMap;
#[doc(inline)]
pub use crate::view::{LinkMut, LinkView, MultiMut, MultiView, PortMut, PortView};
#[doc(inline)]
pub use crate::weights::Weights;
#[allow(deprecated)] mod direction {
use super::IndexError;
#[cfg(feature = "pyo3")]
use pyo3::prelude::*;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "pyo3", pyclass(eq, eq_int))]
#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Default)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub enum Direction {
#[default]
Incoming = 0,
Outgoing = 1,
}
impl Direction {
pub const BOTH: [Direction; 2] = [Direction::Incoming, Direction::Outgoing];
#[inline(always)]
pub fn reverse(self) -> Direction {
match self {
Direction::Incoming => Direction::Outgoing,
Direction::Outgoing => Direction::Incoming,
}
}
}
impl From<Direction> for usize {
#[inline(always)]
fn from(dir: Direction) -> Self {
dir as usize
}
}
impl TryFrom<usize> for Direction {
type Error = IndexError;
#[inline(always)]
fn try_from(dir: usize) -> Result<Self, Self::Error> {
match dir {
0 => Ok(Direction::Incoming),
1 => Ok(Direction::Outgoing),
index => Err(IndexError { index }),
}
}
}
}
#[doc(inline)]
pub use direction::Direction;