#ifndef _SIMPLETIMER
#define _SIMPLETIMER

#include <chrono>

class SimpleTimer {

public:
    SimpleTimer() {
        running = false;
        lastElapsed = 0.0;
    }
    
    void start() {
        startTime = std::chrono::steady_clock::now();
        running = true;
    }
    
    void stop() {
        if (running) {
            std::chrono::duration<double> elapsed_seconds = std::chrono::steady_clock::now()-startTime;
            lastElapsed = elapsed_seconds.count();
            running = false;
        }
    }
    
    void restart() {
        running = true;
    }
    
    void reset() {
        running = false;
        lastElapsed = 0.0;
    }
    
    double elapsedSeconds() { 
        if (running) {
            std::chrono::duration<double> elapsed_seconds = std::chrono::steady_clock::now()-startTime;
            return elapsed_seconds.count();
        }
        else {
            return lastElapsed;
        }
    }
    
    
private:
    std::chrono::steady_clock::time_point startTime;
    bool running;
    double lastElapsed;
};

#endif