#ifndef TIMER_HPP
#define TIMER_HPP

// Define LIBCXXABI_NO_TIMER to disable testing with a timer.
#ifndef LIBCXXABI_NO_TIMER

#include <chrono>
#include <iostream>

class timer
{
    typedef std::chrono::high_resolution_clock Clock;
    typedef Clock::time_point TimePoint;
    typedef std::chrono::microseconds MicroSeconds;
public:
    timer() : m_start(Clock::now()) {}

    timer(timer const &) = delete;
    timer & operator=(timer const &) = delete;

    ~timer()
    {
        using std::chrono::duration_cast;
        TimePoint end = Clock::now();
        MicroSeconds us = duration_cast<MicroSeconds>(end - m_start);
        std::cout << us.count() << " microseconds\n";
    }

private:
    TimePoint m_start;
};

#else /* LIBCXXABI_NO_TIMER */

class timer
{
public:
    timer() {}
    timer(timer const &) = delete;
    timer & operator=(timer const &) = delete;
    ~timer() {}
};

#endif /* LIBCXXABI_NO_TIMER */

#endif /* TIMER_HPP */