use std::io::{self, Write};
use std::time::{Instant, Duration};


/// RAII timer to measure how long phases take.
#[derive(Debug)]
pub struct Timer<'a> {
    output: bool,
    name: &'a str,
    start: Instant,
}


impl<'a> Timer<'a> {
    /// Creates a Timer with the given name, and starts it. By default,
    /// will print to stderr when it is `drop`'d
    pub fn new(name: &'a str) -> Self {
        Timer {
            output: true,
            name,
            start: Instant::now()
        }
    }

    /// Sets whether or not the Timer will print a message
    /// when it is dropped.
    pub fn with_output(mut self, output: bool) -> Self {
        self.output = output;
        self
    }

    /// Returns the time elapsed since the timer's creation
    pub fn elapsed(&self) -> Duration {
        Instant::now() - self.start
    }

    fn print_elapsed(&mut self) {
        if self.output {
            let elapsed = self.elapsed();
            let time = (elapsed.as_secs() as f64) * 1e3
                       + (elapsed.subsec_nanos() as f64) / 1e6;
            let stderr = io::stderr();
            // Arbitrary output format, subject to change.
            writeln!(stderr.lock(),
                     "  time: {:>9.3} ms.\t{}",
                     time, self.name)
                     .expect("timer write should not fail");
        }
    }
}


impl<'a> Drop for Timer<'a> {
    fn drop(&mut self) {
        self.print_elapsed();
    }
}
