3
3
mod op;
4
4
mod param;
5
5
6
+ #[ expect(
7
+ unused_imports,
8
+ reason = "Temporarily unused while we refactor the pytket decoder"
9
+ ) ]
10
+ pub use param:: { LoadedParameter , LoadedParameterType } ;
11
+
6
12
use std:: collections:: { HashMap , HashSet } ;
7
13
8
14
use hugr:: builder:: { Container , Dataflow , DataflowHugr , FunctionBuilder } ;
@@ -14,7 +20,6 @@ use hugr::std_extensions::arithmetic::float_types::ConstF64;
14
20
use hugr:: types:: Signature ;
15
21
use hugr:: { Hugr , Wire } ;
16
22
17
- use derive_more:: Display ;
18
23
use indexmap:: IndexMap ;
19
24
use itertools:: { EitherOrBoth , Itertools } ;
20
25
use serde_json:: json;
@@ -27,7 +32,7 @@ use super::{
27
32
METADATA_B_REGISTERS , METADATA_OPGROUP , METADATA_PHASE , METADATA_Q_OUTPUT_REGISTERS ,
28
33
METADATA_Q_REGISTERS ,
29
34
} ;
30
- use crate :: extension:: rotation:: { rotation_type, RotationOp } ;
35
+ use crate :: extension:: rotation:: rotation_type;
31
36
use crate :: serialize:: pytket:: METADATA_INPUT_PARAMETERS ;
32
37
use crate :: symbolic_constant_op;
33
38
use op:: Tk1Op ;
@@ -354,84 +359,3 @@ fn check_register(register: ®ister::ElementId) -> Result<(), Tk1ConvertError>
354
359
Ok ( ( ) )
355
360
}
356
361
}
357
-
358
- /// The type of a loaded parameter in the Hugr.
359
- #[ derive( Debug , Display , Clone , Copy , Hash , PartialEq , Eq ) ]
360
- enum LoadedParameterType {
361
- Float ,
362
- Rotation ,
363
- }
364
-
365
- /// A loaded parameter in the Hugr.
366
- ///
367
- /// Tracking the type of the wire lets us delay conversion between the types
368
- /// until they are actually needed.
369
- #[ derive( Debug , Clone , Copy , Hash , PartialEq , Eq ) ]
370
- struct LoadedParameter {
371
- /// The type of the parameter.
372
- pub typ : LoadedParameterType ,
373
- /// The wire where the parameter is loaded.
374
- pub wire : Wire ,
375
- }
376
-
377
- impl LoadedParameter {
378
- /// Returns a `LoadedParameter` for a float param.
379
- pub fn float ( wire : Wire ) -> LoadedParameter {
380
- LoadedParameter {
381
- typ : LoadedParameterType :: Float ,
382
- wire,
383
- }
384
- }
385
-
386
- /// Returns a `LoadedParameter` for a rotation param.
387
- pub fn rotation ( wire : Wire ) -> LoadedParameter {
388
- LoadedParameter {
389
- typ : LoadedParameterType :: Rotation ,
390
- wire,
391
- }
392
- }
393
-
394
- /// Convert the parameter into a given type, if necessary.
395
- ///
396
- /// Adds the necessary operations to the Hugr and returns a new wire.
397
- pub fn as_type (
398
- & self ,
399
- typ : LoadedParameterType ,
400
- hugr : & mut FunctionBuilder < Hugr > ,
401
- ) -> LoadedParameter {
402
- match ( self . typ , typ) {
403
- ( LoadedParameterType :: Float , LoadedParameterType :: Rotation ) => {
404
- let wire = hugr
405
- . add_dataflow_op ( RotationOp :: from_halfturns_unchecked, [ self . wire ] )
406
- . unwrap ( )
407
- . out_wire ( 0 ) ;
408
- LoadedParameter :: rotation ( wire)
409
- }
410
- ( LoadedParameterType :: Rotation , LoadedParameterType :: Float ) => {
411
- let wire = hugr
412
- . add_dataflow_op ( RotationOp :: to_halfturns, [ self . wire ] )
413
- . unwrap ( )
414
- . out_wire ( 0 ) ;
415
- LoadedParameter :: float ( wire)
416
- }
417
- _ => {
418
- debug_assert_eq ! ( self . typ, typ, "cannot convert {} to {}" , self . typ, typ) ;
419
- * self
420
- }
421
- }
422
- }
423
-
424
- /// Convert the parameter into a float, if necessary.
425
- ///
426
- /// Adds the necessary operations to the Hugr and returns a new wire.
427
- pub fn as_float ( & self , hugr : & mut FunctionBuilder < Hugr > ) -> LoadedParameter {
428
- self . as_type ( LoadedParameterType :: Float , hugr)
429
- }
430
-
431
- /// Convert the parameter into a rotation, if necessary.
432
- ///
433
- /// Adds the necessary operations to the Hugr and returns a new wire.
434
- pub fn as_rotation ( & self , hugr : & mut FunctionBuilder < Hugr > ) -> LoadedParameter {
435
- self . as_type ( LoadedParameterType :: Rotation , hugr)
436
- }
437
- }
0 commit comments