mod bool;
mod float;
mod prelude;
mod rotation;
mod tk1;
mod tk2;
pub use bool::BoolEmitter;
pub use float::FloatEmitter;
pub use prelude::PreludeEmitter;
pub use rotation::RotationEmitter;
pub use tk1::Tk1Emitter;
pub use tk2::Tk2Emitter;
pub(crate) use bool::set_bits_op;
pub(crate) use tk1::OpaqueTk1Op;
use super::encoder::{RegisterCount, TrackedValues};
use super::Tk1EncoderContext;
use crate::serialize::pytket::encoder::EncodeStatus;
use crate::serialize::pytket::Tk1ConvertError;
use crate::Circuit;
use hugr::extension::ExtensionId;
use hugr::ops::constant::OpaqueValue;
use hugr::ops::ExtensionOp;
use hugr::types::CustomType;
use hugr::HugrView;
pub trait PytketEmitter<H: HugrView> {
fn extensions(&self) -> Option<Vec<ExtensionId>>;
fn op_to_pytket(
&self,
node: H::Node,
op: &ExtensionOp,
circ: &Circuit<H>,
encoder: &mut Tk1EncoderContext<H>,
) -> Result<EncodeStatus, Tk1ConvertError<H::Node>> {
let _ = (node, op, circ, encoder);
Ok(EncodeStatus::Unsupported)
}
fn type_to_pytket(
&self,
typ: &CustomType,
) -> Result<Option<RegisterCount>, Tk1ConvertError<H::Node>> {
let _ = typ;
Ok(None)
}
fn const_to_pytket(
&self,
value: &OpaqueValue,
encoder: &mut Tk1EncoderContext<H>,
) -> Result<Option<TrackedValues>, Tk1ConvertError<H::Node>> {
let _ = (value, encoder);
Ok(None)
}
}