///|
/// Extract a marked event's surrounding interval without compressing missing time.
fn main {
  let fast : @edf.Signal = {
    label: "Synthetic fast",
    transducer: "",
    unit: "uV",
    physical_min: -32768.0,
    physical_max: 32767.0,
    digital_min: -32768,
    digital_max: 32767,
    prefilter: "",
    samples_per_record: 4,
    reserved: "",
  }
  let slow : @edf.Signal = {
    ..fast,
    label: "Synthetic slow",
    samples_per_record: 2,
  }
  let r = @edf.create(
    [fast, slow],
    [
      { onset: 0.25, samples: [[1, 2, 3, 4], [10, 20]], events: [], },
      {
        onset: 2.25,
        samples: [[5, 6, 7, 8], [30, 40]],
        events: [{ onset: 2.5, duration: None, text: "synthetic event", }],
      },
    ],
    1.0,
    continuity=@edf.Discontinuous,
  ) catch {
    e => abort("Cannot create example: " + @debug.to_string(e))
  }
  let event = r.annotations[0]
  let start = event.onset - 2.0
  let end = event.onset + 0.5
  let window = r.time_window(0, start, end) catch {
    e => abort("Cannot query: " + @debug.to_string(e))
  }
  println("Event: \{event.text}; [\{start}, \{end}) seconds")
  println("Fast-channel samples: \{window.samples.length()}")
  for gap in window.gaps {
    println("Missing interval: [\{gap.start}, \{gap.end})")
  }
  let csv = r.window_csv([0, 1], start, end, physical=false) catch {
    e => abort("Cannot export: " + @debug.to_string(e))
  }
  println(csv)
}