55
66use crate :: byte_message:: message:: ByteMessage ;
77use crate :: byte_message:: protocol:: {
8- BatchHeader , GateCommandHeader , MeasurementHeader , MeasurementResultHeader , MessageFlags ,
9- MessageHeader , MessageType , calc_padding,
8+ BatchHeader , GateCommandHeader , MeasurementHeader , MessageFlags , MessageHeader , MessageType ,
9+ OutcomeHeader , calc_padding,
1010} ;
1111use bytemuck:: bytes_of;
1212use pecos_core:: QubitId ;
@@ -21,10 +21,10 @@ use std::mem::size_of;
2121/// Enum to track what kind of message is being built
2222#[ derive( Debug , PartialEq , Clone , Copy ) ]
2323pub enum BuilderMode {
24- Empty , // No operations added yet
25- QuantumOperations , // Contains quantum operations
26- MeasurementResults , // Contains measurement results
27- ControlMessage , // Contains control messages like Flush
24+ Empty , // No operations added yet
25+ QuantumOperations , // Contains quantum operations
26+ MeasurementOutcomes , // Contains measurement outcomes
27+ ControlMessage , // Contains control messages like Flush
2828}
2929
3030/// Helper for building binary messages
@@ -77,10 +77,10 @@ impl ByteMessageBuilder {
7777 self
7878 }
7979
80- /// Create a builder pre-configured for measurement results
80+ /// Create a builder pre-configured for measurement outcomes
8181 #[ must_use]
82- pub fn for_measurement_results ( & mut self ) -> & mut Self {
83- self . mode = BuilderMode :: MeasurementResults ;
82+ pub fn for_outcomes ( & mut self ) -> & mut Self {
83+ self . mode = BuilderMode :: MeasurementOutcomes ;
8484 self . add_message ( MessageType :: BeginBatch , & [ ] , MessageFlags :: NONE ) ;
8585 self
8686 }
@@ -98,7 +98,7 @@ impl ByteMessageBuilder {
9898 /// # Panics
9999 ///
100100 /// This function will panic if:
101- /// - Attempting to mix quantum operations and measurement results in the same message
101+ /// - Attempting to mix quantum operations and measurement outcomes in the same message
102102 /// - Attempting to mix control messages with other message types
103103 pub fn add_message (
104104 & mut self ,
@@ -120,19 +120,19 @@ impl ByteMessageBuilder {
120120 }
121121 MessageType :: GateCommand | MessageType :: Measurement => {
122122 assert ! (
123- !( self . mode == BuilderMode :: MeasurementResults ) ,
124- "Cannot mix quantum operations and measurement results in the same message"
123+ !( self . mode == BuilderMode :: MeasurementOutcomes ) ,
124+ "Cannot mix quantum operations and measurement outcomes in the same message"
125125 ) ;
126126 if self . mode == BuilderMode :: Empty {
127127 self . mode = BuilderMode :: QuantumOperations ;
128128 }
129129 }
130- MessageType :: MeasurementResult => {
130+ MessageType :: Outcome => {
131131 assert ! (
132132 !( self . mode == BuilderMode :: QuantumOperations ) ,
133- "Cannot mix quantum operations and measurement results in the same message"
133+ "Cannot mix quantum operations and measurement outcomes in the same message"
134134 ) ;
135- self . mode = BuilderMode :: MeasurementResults ;
135+ self . mode = BuilderMode :: MeasurementOutcomes ;
136136 }
137137 MessageType :: Flush | MessageType :: Reset | MessageType :: Error => {
138138 assert ! (
@@ -236,29 +236,25 @@ impl ByteMessageBuilder {
236236 self
237237 }
238238
239- /// Add multiple measurement results at once
239+ /// Add multiple measurement outcomes at once
240240 ///
241241 /// # Panics
242242 ///
243243 /// Panics if any result outcome is too large to fit in a u32.
244- pub fn add_measurement_results ( & mut self , results : & [ usize ] ) -> & mut Self {
245- for ( i, & result) in results . iter ( ) . enumerate ( ) {
246- let is_last = i == results . len ( ) - 1 ;
244+ pub fn add_outcomes ( & mut self , outcomes : & [ usize ] ) -> & mut Self {
245+ for ( i, & result) in outcomes . iter ( ) . enumerate ( ) {
246+ let is_last = i == outcomes . len ( ) - 1 ;
247247 let flags = if is_last {
248248 MessageFlags :: LAST_MESSAGE
249249 } else {
250250 MessageFlags :: NONE
251251 } ;
252252
253- let result_header = MeasurementResultHeader {
253+ let result_header = OutcomeHeader {
254254 outcome : u32:: try_from ( result) . expect ( "Result outcome too large" ) ,
255255 } ;
256256
257- self . add_message (
258- MessageType :: MeasurementResult ,
259- bytes_of ( & result_header) ,
260- flags,
261- ) ;
257+ self . add_message ( MessageType :: Outcome , bytes_of ( & result_header) , flags) ;
262258 }
263259 self
264260 }
@@ -518,7 +514,7 @@ impl ByteMessageBuilder {
518514 /// consider using `reset()` instead, which preserves memory allocation.
519515 ///
520516 /// After clearing, you'll need to configure the builder for the desired message type
521- /// by calling `for_quantum_operations()` or `for_measurement_results ()`.
517+ /// by calling `for_quantum_operations()` or `for_outcomes ()`.
522518 pub fn clear ( & mut self ) -> & mut Self {
523519 * self = Self :: new ( ) ;
524520 self
@@ -532,7 +528,7 @@ impl ByteMessageBuilder {
532528 /// especially when creating many messages in sequence.
533529 ///
534530 /// After resetting, you'll need to configure the builder for the desired message type
535- /// by calling `for_quantum_operations()` or `for_measurement_results ()`:
531+ /// by calling `for_quantum_operations()` or `for_outcomes ()`:
536532 ///
537533 /// ```
538534 /// # use pecos_engines::byte_message::ByteMessageBuilder;
@@ -593,7 +589,7 @@ impl ByteMessageBuilder {
593589 // Validate that a mode was explicitly set if operations were added
594590 assert ! (
595591 !( self . msg_count > 0 && self . mode == BuilderMode :: Empty ) ,
596- "Builder mode not specified. Call for_quantum_operations() or for_measurement_results () before adding operations."
592+ "Builder mode not specified. Call for_quantum_operations() or for_outcomes () before adding operations."
597593 ) ;
598594
599595 // Add validation based on the builder's current mode
@@ -604,8 +600,8 @@ impl ByteMessageBuilder {
604600 self . add_flush ( true ) ;
605601 }
606602 }
607- BuilderMode :: QuantumOperations | BuilderMode :: MeasurementResults => {
608- // For quantum operations and measurement results , ensure we have both BeginBatch and EndBatch
603+ BuilderMode :: QuantumOperations | BuilderMode :: MeasurementOutcomes => {
604+ // For quantum operations and measurement outcomes , ensure we have both BeginBatch and EndBatch
609605 // Check if the last message is already an EndBatch
610606 let has_end_batch = self . buffer . len ( ) >= size_of :: < MessageHeader > ( ) && {
611607 let header_offset = self . buffer . len ( ) - size_of :: < MessageHeader > ( ) ;
@@ -685,12 +681,12 @@ mod tests {
685681
686682 #[ test]
687683 fn test_builder_measurement_message ( ) {
688- // Create a builder for measurement results
684+ // Create a builder for measurement outcomes
689685 let mut builder = ByteMessageBuilder :: new ( ) ;
690- let _ = builder. for_measurement_results ( ) ;
686+ let _ = builder. for_outcomes ( ) ;
691687
692- // Add some measurement results
693- builder. add_measurement_results ( & [ 0 ] ) ;
688+ // Add some measurement outcomes
689+ builder. add_outcomes ( & [ 0 ] ) ;
694690
695691 // Build the message
696692 let message = builder. build ( ) ;
@@ -735,12 +731,12 @@ mod tests {
735731
736732 #[ test]
737733 #[ should_panic(
738- expected = "Cannot mix quantum operations and measurement results in the same message"
734+ expected = "Cannot mix quantum operations and measurement outcomes in the same message"
739735 ) ]
740736 fn test_builder_type_checking ( ) {
741- // Create a builder for measurement results
737+ // Create a builder for measurement outcomes
742738 let mut builder = ByteMessageBuilder :: new ( ) ;
743- let _ = builder. for_measurement_results ( ) ;
739+ let _ = builder. for_outcomes ( ) ;
744740
745741 // Try to add a gate (should panic)
746742 builder. add_h ( & [ 0 ] ) ;
0 commit comments