#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VisualConfig {
#[prost(double, tag = "1")]
pub qubit_radius: f64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Realization {
#[prost(message, repeated, tag = "1")]
pub locations: ::prost::alloc::vec::Vec<Location>,
#[prost(message, repeated, tag = "2")]
pub positions: ::prost::alloc::vec::Vec<Position2D>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DisplayMode {
#[prost(bool, tag = "1")]
pub show_block: bool,
#[prost(bool, tag = "2")]
pub show_realization: bool,
#[prost(bool, tag = "3")]
pub show_ports: bool,
#[prost(bool, tag = "4")]
pub show_check_model: bool,
#[prost(bool, tag = "5")]
pub show_error_model: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Location {
#[prost(double, tag = "1")]
pub t: f64,
#[prost(message, optional, tag = "2")]
pub operation: ::core::option::Option<Operation>,
#[prost(message, repeated, tag = "3")]
pub noises: ::prost::alloc::vec::Vec<NoiseDistribution>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Operation {
#[prost(enumeration = "OperationType", tag = "1")]
pub r#type: i32,
#[prost(uint32, repeated, tag = "2")]
pub support: ::prost::alloc::vec::Vec<u32>,
#[prost(string, tag = "3")]
pub pauli: ::prost::alloc::string::String,
#[prost(bool, tag = "4")]
pub inverted: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NoiseDistribution {
#[prost(message, repeated, tag = "1")]
pub masses: ::prost::alloc::vec::Vec<NoiseMass>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NoiseMass {
#[prost(message, repeated, tag = "1")]
pub faults: ::prost::alloc::vec::Vec<Fault>,
#[prost(double, tag = "2")]
pub probability: f64,
#[prost(uint32, optional, tag = "3")]
pub edge_index: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Fault {
#[prost(string, tag = "1")]
pub r#type: ::prost::alloc::string::String,
#[prost(uint32, tag = "2")]
pub qubit: u32,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Selectable {
#[prost(oneof = "selectable::E", tags = "1, 2, 3, 4, 5, 6")]
pub e: ::core::option::Option<selectable::E>,
}
pub mod selectable {
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Gadget {
#[prost(uint64, tag = "1")]
pub gid: u64,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Location {
#[prost(uint64, tag = "1")]
pub gid: u64,
#[prost(uint32, tag = "2")]
pub location_index: u32,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Port {
#[prost(uint64, tag = "1")]
pub gid: u64,
#[prost(oneof = "port::Io", tags = "2, 3")]
pub io: ::core::option::Option<port::Io>,
}
pub mod port {
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Io {
#[prost(uint32, tag = "2")]
Input(u32),
#[prost(uint32, tag = "3")]
Output(u32),
}
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Observable {
#[prost(uint64, tag = "1")]
pub gid: u64,
#[prost(uint32, tag = "4")]
pub observable_index: u32,
#[prost(oneof = "observable::Io", tags = "2, 3")]
pub io: ::core::option::Option<observable::Io>,
}
pub mod observable {
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Io {
#[prost(uint32, tag = "2")]
Input(u32),
#[prost(uint32, tag = "3")]
Output(u32),
}
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Check {
#[prost(uint64, tag = "1")]
pub cid: u64,
#[prost(uint32, tag = "2")]
pub check_index: u32,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Error {
#[prost(uint64, tag = "1")]
pub eid: u64,
#[prost(uint32, tag = "2")]
pub error_index: u32,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum E {
#[prost(message, tag = "1")]
Gadget(Gadget),
#[prost(message, tag = "2")]
Location(Location),
#[prost(message, tag = "3")]
Port(Port),
#[prost(message, tag = "4")]
Observable(Observable),
#[prost(message, tag = "5")]
Check(Check),
#[prost(message, tag = "6")]
Error(Error),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MultiSelectable {
#[prost(message, repeated, tag = "1")]
pub elements: ::prost::alloc::vec::Vec<Selectable>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Mesh {
#[prost(message, optional, tag = "1")]
pub geometry: ::core::option::Option<Geometry>,
#[prost(message, optional, tag = "2")]
pub material: ::core::option::Option<Material>,
#[prost(message, optional, tag = "3")]
pub relative: ::core::option::Option<Position>,
#[prost(message, optional, tag = "4")]
pub rotation: ::core::option::Option<Euler>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Geometry {
#[prost(string, tag = "1")]
pub r#type: ::prost::alloc::string::String,
#[prost(double, repeated, tag = "2")]
pub size: ::prost::alloc::vec::Vec<f64>,
#[prost(string, tag = "3")]
pub geometry_props: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Material {
#[prost(string, tag = "1")]
pub r#type: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub color: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub material_props: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Position {
#[prost(double, tag = "1")]
pub t: f64,
#[prost(double, tag = "2")]
pub i: f64,
#[prost(double, tag = "3")]
pub j: f64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Position2D {
#[prost(double, tag = "1")]
pub i: f64,
#[prost(double, tag = "2")]
pub j: f64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Euler {
#[prost(double, tag = "1")]
pub t: f64,
#[prost(double, tag = "2")]
pub i: f64,
#[prost(double, tag = "3")]
pub j: f64,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum OperationType {
Unknown = 0,
Hadamard = 1,
SqrtPauli = 2,
Prepare = 3,
Measure = 4,
Shuffle = 5,
Discard = 6,
ConditionalPauli = 7,
Pauli = 8,
ControlledPauli = 9,
}
impl OperationType {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "UNKNOWN",
Self::Hadamard => "HADAMARD",
Self::SqrtPauli => "SQRT_PAULI",
Self::Prepare => "PREPARE",
Self::Measure => "MEASURE",
Self::Shuffle => "SHUFFLE",
Self::Discard => "DISCARD",
Self::ConditionalPauli => "CONDITIONAL_PAULI",
Self::Pauli => "PAULI",
Self::ControlledPauli => "CONTROLLED_PAULI",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN" => Some(Self::Unknown),
"HADAMARD" => Some(Self::Hadamard),
"SQRT_PAULI" => Some(Self::SqrtPauli),
"PREPARE" => Some(Self::Prepare),
"MEASURE" => Some(Self::Measure),
"SHUFFLE" => Some(Self::Shuffle),
"DISCARD" => Some(Self::Discard),
"CONDITIONAL_PAULI" => Some(Self::ConditionalPauli),
"PAULI" => Some(Self::Pauli),
"CONTROLLED_PAULI" => Some(Self::ControlledPauli),
_ => None,
}
}
}