#ifndef _TIME_H
#define _TIME_H

#include <stddef.h>
#include <sys/types.h>

// Structure representing broken-down time.
struct tm
{
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;

    long tm_gmtoff;
    const char* tm_zone;
};

// Captures elapsed time.
struct timeval
{
    time_t tv_sec;
    suseconds_t tv_usec;
};

#define CLOCKS_PER_SEC 1000 // Number of clock_t per second.

#ifdef __cplusplus
extern "C"
{
#endif

    /* Returns a number representing how much CPU time has been used by this process. Divide this by CLOCKS_PER_SEC to
     * get the value in seconds. */
    clock_t clock(void);

    /* FIXME: For now, is an alias for clock(), but in seconds. */
    time_t time(time_t* tloc);

    struct tm* localtime(const time_t* timep);                                         // Not implemented.
    struct tm* gmtime(const time_t* timep);                                            // Not implemented.
    size_t strftime(char* str, size_t max, const char* format, const struct tm* time); // Not implemented.

#ifdef __cplusplus
}
#endif

#endif