diff options
| author | hachem <im@hachem.wtf> | 2024-09-28 23:58:13 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2024-09-28 23:58:13 +0200 |
| commit | 2770097e25e7fb5090efe0f85340f0c638f9dd71 (patch) | |
| tree | 591323ea709e14c0b6d8e5d0c396d51b59db5659 /libpsi-visualizer/src | |
| parent | ce0a2aa7fe9fe3a6b638c39078c8b77ac912b860 (diff) | |
Prep for first CLI visualizer
Diffstat (limited to 'libpsi-visualizer/src')
| -rw-r--r-- | libpsi-visualizer/src/cli/horizontal_cli.rs | 26 | ||||
| -rw-r--r-- | libpsi-visualizer/src/cli/mod.rs | 2 | ||||
| -rw-r--r-- | libpsi-visualizer/src/lib.rs | 10 |
3 files changed, 37 insertions, 1 deletions
diff --git a/libpsi-visualizer/src/cli/horizontal_cli.rs b/libpsi-visualizer/src/cli/horizontal_cli.rs new file mode 100644 index 0000000..0a5bf8e --- /dev/null +++ b/libpsi-visualizer/src/cli/horizontal_cli.rs @@ -0,0 +1,26 @@ +use crate::Visualizer; +use libpsi_core::QuantumCircuit; + +pub struct HorizontalCLIVisualizer<'a> { + circuit: &'a QuantumCircuit, +} + +impl<'a> Visualizer<'a> for HorizontalCLIVisualizer<'a> { + fn new(circuit: &'a QuantumCircuit) -> HorizontalCLIVisualizer<'a> { + HorizontalCLIVisualizer { circuit } + } + + // NOTE(Hachem): This is a temporary function + fn render(&self) { + for instruction in self.circuit.get_instructions() { + print!("Applied {} on ", &instruction.gate.0); + for bit_index in instruction.control_indices { + print!("q{} ", bit_index); + } + for bit_index in instruction.target_indices { + print!("q{} ", bit_index); + } + println!(); + } + } +} diff --git a/libpsi-visualizer/src/cli/mod.rs b/libpsi-visualizer/src/cli/mod.rs new file mode 100644 index 0000000..fe10249 --- /dev/null +++ b/libpsi-visualizer/src/cli/mod.rs @@ -0,0 +1,2 @@ +pub mod horizontal_cli; +pub use horizontal_cli::*; diff --git a/libpsi-visualizer/src/lib.rs b/libpsi-visualizer/src/lib.rs index 9fc645f..72bb588 100644 --- a/libpsi-visualizer/src/lib.rs +++ b/libpsi-visualizer/src/lib.rs @@ -1 +1,9 @@ -pub struct Visualizer; +use libpsi_core::*; + +pub mod cli; +pub use cli::*; + +pub trait Visualizer<'a> { + fn new(circuit: &'a QuantumCircuit) -> Self; + fn render(&self); +} |
