blob: b48f1d7ddd4d67ab73d9784cd9c8a58c429a35f1 [file] [log] [blame]
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* vim: set ts=8 sts=4 et sw=4 tw=99:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef prmjtime_h
#define prmjtime_h
#include <time.h>
/*
* Broken down form of 64 bit time value.
*/
struct PRMJTime {
int32_t tm_usec; /* microseconds of second (0-999999) */
int8_t tm_sec; /* seconds of minute (0-59) */
int8_t tm_min; /* minutes of hour (0-59) */
int8_t tm_hour; /* hour of day (0-23) */
int8_t tm_mday; /* day of month (1-31) */
int8_t tm_mon; /* month of year (0-11) */
int8_t tm_wday; /* 0=sunday, 1=monday, ... */
int32_t tm_year; /* absolute year, AD */
int16_t tm_yday; /* day of year (0 to 365) */
int8_t tm_isdst; /* non-zero if DST in effect */
};
/* Some handy constants */
#define PRMJ_USEC_PER_SEC 1000000L
#define PRMJ_USEC_PER_MSEC 1000L
/* Return the current local time in micro-seconds */
extern int64_t
PRMJ_Now(void);
/* Release the resources associated with PRMJ_Now; don't call PRMJ_Now again */
#if defined(JS_THREADSAFE) && defined(XP_WIN)
extern void
PRMJ_NowShutdown(void);
#else
#define PRMJ_NowShutdown()
#endif
/* Format a time value into a buffer. Same semantics as strftime() */
extern size_t
PRMJ_FormatTime(char *buf, int buflen, const char *fmt, PRMJTime *tm);
#endif /* prmjtime_h */