pub mod max_flow;
cpp! {{
#include "ortools/base/init_google.h"
}}
cpp_class!(
pub unsafe struct StarGraph as "operations_research::StarGraph"
);
impl StarGraph {
pub fn new(max_num_nodes: NodeIndex, max_num_arcs: ArcIndex) -> Self {
unsafe {
cpp!([
max_num_nodes as "operations_research::NodeIndex",
max_num_arcs as "operations_research::ArcIndex"
] -> StarGraph as "operations_research::StarGraph"
{
return operations_research::StarGraph(max_num_nodes, max_num_arcs);
}
)
}
}
pub fn add_arc(&mut self, tail: NodeIndex, head: NodeIndex) -> ArcIndex {
unsafe {
cpp!([
self as "operations_research::StarGraph*",
tail as "operations_research::NodeIndex",
head as "operations_research::NodeIndex"
] -> ArcIndex as "operations_research::ArcIndex"
{
return self->AddArc(tail, head);
}
)
}
}
pub fn head(&self, arc: ArcIndex) -> NodeIndex {
unsafe {
cpp!([
self as "const operations_research::StarGraph*",
arc as "operations_research::ArcIndex"
] -> NodeIndex as "operations_research::NodeIndex"
{
return self->Head(arc);
}
)
}
}
pub fn tail(&self, arc: ArcIndex) -> NodeIndex {
unsafe {
cpp!([
self as "const operations_research::StarGraph*",
arc as "operations_research::ArcIndex"
] -> NodeIndex as "operations_research::NodeIndex"
{
return self->Tail(arc);
}
)
}
}
pub fn num_nodes(&self) -> NodeIndex {
unsafe {
cpp!([
self as "const operations_research::StarGraph*"
] -> NodeIndex as "operations_research::NodeIndex"
{
return self->num_nodes();
}
)
}
}
pub fn num_arcs(&self) -> ArcIndex {
unsafe {
cpp!([
self as "const operations_research::StarGraph*"
] -> ArcIndex as "operations_research::ArcIndex"
{
return self->num_arcs();
}
)
}
}
}
#[doc(hidden)]
pub type NodeIndex = u32;
#[doc(hidden)]
pub type ArcIndex = u32;
#[doc(hidden)]
pub type FlowQuantity = u64;
#[doc(hidden)]
pub type CostValue = i64;