예제 #1
0
 /// Capture SEs produced by changes on a control.
 static void CaptureSideEffectsRec(Control c, ValueStore values, Lane lane)
 {
     foreach (Control ctrl in c.Controls)
     {
         if (HasChanged(ctrl, values))
         {
             DieUnless(UpdateValueStore(ctrl, values), "Fail to update values.");
             PrintChange(ctrl, se: true);
             lane.GetLastMove().Change.RecordSide(ctrl.Name, ctrl.Text);
         }
         CaptureSideEffectsRec(ctrl, values, lane);
     }
 }
예제 #2
0
    /// Inits the capture of a new frame.
    static void CaptureFrame(Form f, Control sender, ValueStore values, Lane lane)
    {
        BeginFrame(values, sender, lane);

        Unless(sender == null, () => {
            DieUnless(UpdateValueStore(sender, values), "Fail to update vals.");
            PrintChange(sender);
            lane.GetLastMove().RecordChange(sender.Text);
        });

        // Register dependencies changes.
        CaptureSideEffectsRec(f, values, lane);

        EndFrame();
    }