Rcpp Version 1.1.2
Loading...
Searching...
No Matches
date.cpp File Reference
#include <R_ext/Boolean.h>
#include <Rcpp.h>
#include <time.h>
#include <Rcpp/exceptions.h>
#include "sys/types.h"
#include "string.h"
#include "limits.h"
#include <errno.h>
#include "stdlib.h"
#include "stdint.h"
#include "stdio.h"
#include "fcntl.h"
#include "float.h"
#include <unistd.h>
Include dependency graph for date.cpp:

Go to the source code of this file.

Classes

struct  Rcpp::tzhead
struct  Rcpp::ttinfo
struct  Rcpp::lsinfo
struct  Rcpp::state
struct  Rcpp::rule

Namespaces

namespace  Rcpp
 Rcpp API.

Macros

#define COMPILING_RCPP
#define isleap(y)
#define days_in_year(year)
#define _NO_OLDNAMES   /* avoid tznames */
#define EOVERFLOW   79
#define TYPE_BIT(type)
#define TYPE_SIGNED(type)
#define TYPE_INTEGRAL(type)
#define TWOS_COMPLEMENT(t)
#define GRANDPARENTED   "Local time zone must be set--see zic manual page"
#define YEARSPERREPEAT   400 /* years before a Gregorian repeat */
#define AVGSECSPERYEAR   31556952L
#define SECSPERREPEAT   ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
#define SECSPERREPEAT_BITS   34 /* ceil(log2(SECSPERREPEAT)) */
#define is_digit(c)
#define INITIALIZE(x)
#define MAXVAL(t, b)
#define MINVAL(t, b)
#define TZFILE_H
#define TZDIR   "/usr/local/etc/zoneinfo" /* Time zone object file directory */
#define TZDEFAULT   "localtime"
#define TZDEFRULES   "America/New_York"
#define TZ_MAGIC   "TZif"
#define TZ_MAX_TIMES   1200
#define TZ_MAX_TYPES   256 /* Limited by what (unsigned char)'s can hold */
#define TZ_MAX_CHARS   100 /* Maximum number of abbreviation characters */
#define TZ_MAX_LEAPS   50 /* Maximum number of leap second corrections */
#define SECSPERMIN   60
#define MINSPERHOUR   60
#define HOURSPERDAY   24
#define DAYSPERWEEK   7
#define DAYSPERNYEAR   365
#define DAYSPERLYEAR   366
#define SECSPERHOUR   (SECSPERMIN * MINSPERHOUR)
#define SECSPERDAY   ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)
#define MONSPERYEAR   12
#define TM_SUNDAY   0
#define TM_MONDAY   1
#define TM_TUESDAY   2
#define TM_WEDNESDAY   3
#define TM_THURSDAY   4
#define TM_FRIDAY   5
#define TM_SATURDAY   6
#define TM_JANUARY   0
#define TM_FEBRUARY   1
#define TM_MARCH   2
#define TM_APRIL   3
#define TM_MAY   4
#define TM_JUNE   5
#define TM_JULY   6
#define TM_AUGUST   7
#define TM_SEPTEMBER   8
#define TM_OCTOBER   9
#define TM_NOVEMBER   10
#define TM_DECEMBER   11
#define TM_YEAR_BASE   1900
#define EPOCH_YEAR   1970
#define EPOCH_WDAY   TM_THURSDAY
#define isleap(y)
#define isleap_sum(a, b)
#define OPEN_MODE   O_RDONLY
#define TZDEFRULESTRING   ",M4.1.0,M10.5.0"
#define BIGGEST(a, b)
#define MY_TZNAME_MAX   255
#define JULIAN_DAY   0 /* Jn - Julian day */
#define DAY_OF_YEAR   1 /* n - day of year */
#define MONTH_NTH_DAY_OF_WEEK   2 /* Mm.n.d - month, week, day of week */
#define gmtptr   (&gmtmem)

Functions

attribute_hidden double Rcpp::mktime00 (struct tm &tm)
static int Rcpp::tzparse (const char *name, struct state *sp, int lastditch)
static int Rcpp::typesequiv (const struct state *sp, int a, int b)
static const char * Rcpp::getsecs (const char *strp, int_fast32_t *secsp)
static const char * Rcpp::getnum (const char *strp, int *const nump, const int min, const int max)
static const char * Rcpp::getrule (const char *strp, struct rule *const rulep)
static int_fast32_t Rcpp::transtime (int year, const struct rule *rulep, int_fast32_t offset)
static struct tmRcpp::timesub (const time_t *timep, int_fast32_t offset, const struct state *sp, struct tm *tmp)
static int Rcpp::leaps_thru_end_of (const int y)
static int Rcpp::increment_overflow (int *const ip, int j)
static int Rcpp::increment_overflow_time (time_t *tp, int_fast32_t j)
static int_fast32_t Rcpp::detzcode (const char *const codep)
static int_fast64_t Rcpp::detzcode64 (const char *const codep)
static int Rcpp::differ_by_repeat (const time_t t1, const time_t t0)
static const char * Rcpp::getzname (const char *strp)
static const char * Rcpp::getqzname (const char *strp, const int delim)
static const char * Rcpp::getoffset (const char *strp, int_fast32_t *const offsetp)
static int Rcpp::tzload (const char *name, struct state *const sp, const int doextend)
static void Rcpp::gmtload (struct state *const sp)
static struct tmRcpp::gmtsub (const time_t *const timep, const int_fast32_t offset, struct tm *const tmp)
attribute_hidden struct tmRcpp::gmtime_ (const time_t *const x)

Variables

static time_t const Rcpp::time_t_min = MINVAL(time_t, TYPE_BIT(time_t))
static time_t const Rcpp::time_t_max = MAXVAL(time_t, TYPE_BIT(time_t))
static const char Rcpp::gmt [] = "GMT"
static const int Rcpp::mon_lengths [2][MONSPERYEAR]
static const int Rcpp::year_lengths [2]
static int Rcpp::gmt_is_set
static struct state Rcpp::gmtmem
static struct tm Rcpp::tm

Macro Definition Documentation

◆ _NO_OLDNAMES

#define _NO_OLDNAMES   /* avoid tznames */

Definition at line 119 of file date.cpp.

◆ AVGSECSPERYEAR

#define AVGSECSPERYEAR   31556952L

Definition at line 144 of file date.cpp.

◆ BIGGEST

#define BIGGEST ( a,
b )
Value:
(((a) > (b)) ? (a) : (b))

Definition at line 370 of file date.cpp.

◆ COMPILING_RCPP

#define COMPILING_RCPP

Definition at line 26 of file date.cpp.

◆ DAY_OF_YEAR

#define DAY_OF_YEAR   1 /* n - day of year */

Definition at line 416 of file date.cpp.

Referenced by Rcpp::getrule(), and Rcpp::transtime().

◆ days_in_year

#define days_in_year ( year)
Value:
(isleap(year) ? 366 : 365)
#define isleap(y)
Definition date.cpp:326

◆ DAYSPERLYEAR

#define DAYSPERLYEAR   366

Definition at line 295 of file date.cpp.

Referenced by Rcpp::getrule(), and Rcpp::timesub().

◆ DAYSPERNYEAR

#define DAYSPERNYEAR   365

Definition at line 294 of file date.cpp.

Referenced by Rcpp::getrule(), and Rcpp::timesub().

◆ DAYSPERWEEK

#define DAYSPERWEEK   7

Definition at line 293 of file date.cpp.

Referenced by Rcpp::getrule(), Rcpp::getsecs(), Rcpp::timesub(), and Rcpp::transtime().

◆ EOVERFLOW

#define EOVERFLOW   79

Definition at line 125 of file date.cpp.

◆ EPOCH_WDAY

#define EPOCH_WDAY   TM_THURSDAY

Definition at line 324 of file date.cpp.

Referenced by Rcpp::timesub().

◆ EPOCH_YEAR

#define EPOCH_YEAR   1970

Definition at line 323 of file date.cpp.

Referenced by Rcpp::timesub(), and Rcpp::tzparse().

◆ gmtptr

#define gmtptr   (&gmtmem)

Definition at line 433 of file date.cpp.

Referenced by Rcpp::gmtsub().

◆ GRANDPARENTED

#define GRANDPARENTED   "Local time zone must be set--see zic manual page"

Definition at line 142 of file date.cpp.

◆ HOURSPERDAY

#define HOURSPERDAY   24

Definition at line 292 of file date.cpp.

Referenced by Rcpp::getsecs().

◆ INITIALIZE

#define INITIALIZE ( x)
Value:
(x = 0)

Definition at line 148 of file date.cpp.

Referenced by Rcpp::transtime(), and Rcpp::tzparse().

◆ is_digit

#define is_digit ( c)
Value:
((unsigned)(c) - '0' <= 9)

Definition at line 147 of file date.cpp.

Referenced by Rcpp::getnum(), Rcpp::getrule(), and Rcpp::getzname().

◆ isleap [1/2]

#define isleap ( y)
Value:
(((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))

Definition at line 326 of file date.cpp.

◆ isleap [2/2]

#define isleap ( y)
Value:
((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)

Definition at line 326 of file date.cpp.

Referenced by Rcpp::timesub(), Rcpp::transtime(), and Rcpp::tzparse().

◆ isleap_sum

#define isleap_sum ( a,
b )
Value:
isleap((a) % 400 + (b) % 400)

Definition at line 340 of file date.cpp.

◆ JULIAN_DAY

#define JULIAN_DAY   0 /* Jn - Julian day */

Definition at line 415 of file date.cpp.

Referenced by Rcpp::getrule(), and Rcpp::transtime().

◆ MAXVAL

#define MAXVAL ( t,
b )
Value:
((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \
- 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t)))))
#define TYPE_SIGNED(type)
Definition date.cpp:139

Definition at line 153 of file date.cpp.

◆ MINSPERHOUR

#define MINSPERHOUR   60

Definition at line 291 of file date.cpp.

Referenced by Rcpp::getsecs().

◆ MINVAL

#define MINVAL ( t,
b )
Value:
((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0))
#define MAXVAL(t, b)
Definition date.cpp:153
#define TWOS_COMPLEMENT(t)
Definition date.cpp:141

Definition at line 156 of file date.cpp.

◆ MONSPERYEAR

#define MONSPERYEAR   12

Definition at line 298 of file date.cpp.

Referenced by Rcpp::getrule().

◆ MONTH_NTH_DAY_OF_WEEK

#define MONTH_NTH_DAY_OF_WEEK   2 /* Mm.n.d - month, week, day of week */

Definition at line 417 of file date.cpp.

Referenced by Rcpp::getrule(), and Rcpp::transtime().

◆ MY_TZNAME_MAX

#define MY_TZNAME_MAX   255

Definition at line 376 of file date.cpp.

◆ OPEN_MODE

#define OPEN_MODE   O_RDONLY

Definition at line 354 of file date.cpp.

Referenced by Rcpp::tzload().

◆ SECSPERDAY

#define SECSPERDAY   ((int_fast32_t) SECSPERHOUR * HOURSPERDAY)

Definition at line 297 of file date.cpp.

Referenced by Rcpp::timesub(), Rcpp::transtime(), and Rcpp::tzparse().

◆ SECSPERHOUR

#define SECSPERHOUR   (SECSPERMIN * MINSPERHOUR)

Definition at line 296 of file date.cpp.

Referenced by Rcpp::getrule(), Rcpp::getsecs(), Rcpp::timesub(), and Rcpp::tzparse().

◆ SECSPERMIN

#define SECSPERMIN   60

Definition at line 290 of file date.cpp.

Referenced by Rcpp::getsecs(), and Rcpp::timesub().

◆ SECSPERREPEAT

#define SECSPERREPEAT   ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)

Definition at line 145 of file date.cpp.

Referenced by Rcpp::differ_by_repeat().

◆ SECSPERREPEAT_BITS

#define SECSPERREPEAT_BITS   34 /* ceil(log2(SECSPERREPEAT)) */

Definition at line 146 of file date.cpp.

Referenced by Rcpp::differ_by_repeat().

◆ TM_APRIL

#define TM_APRIL   3

Definition at line 311 of file date.cpp.

◆ TM_AUGUST

#define TM_AUGUST   7

Definition at line 315 of file date.cpp.

◆ TM_DECEMBER

#define TM_DECEMBER   11

Definition at line 319 of file date.cpp.

◆ TM_FEBRUARY

#define TM_FEBRUARY   1

Definition at line 309 of file date.cpp.

◆ TM_FRIDAY

#define TM_FRIDAY   5

Definition at line 305 of file date.cpp.

◆ TM_JANUARY

#define TM_JANUARY   0

Definition at line 308 of file date.cpp.

◆ TM_JULY

#define TM_JULY   6

Definition at line 314 of file date.cpp.

◆ TM_JUNE

#define TM_JUNE   5

Definition at line 313 of file date.cpp.

◆ TM_MARCH

#define TM_MARCH   2

Definition at line 310 of file date.cpp.

◆ TM_MAY

#define TM_MAY   4

Definition at line 312 of file date.cpp.

◆ TM_MONDAY

#define TM_MONDAY   1

Definition at line 301 of file date.cpp.

◆ TM_NOVEMBER

#define TM_NOVEMBER   10

Definition at line 318 of file date.cpp.

◆ TM_OCTOBER

#define TM_OCTOBER   9

Definition at line 317 of file date.cpp.

◆ TM_SATURDAY

#define TM_SATURDAY   6

Definition at line 306 of file date.cpp.

◆ TM_SEPTEMBER

#define TM_SEPTEMBER   8

Definition at line 316 of file date.cpp.

◆ TM_SUNDAY

#define TM_SUNDAY   0

Definition at line 300 of file date.cpp.

◆ TM_THURSDAY

#define TM_THURSDAY   4

Definition at line 304 of file date.cpp.

◆ TM_TUESDAY

#define TM_TUESDAY   2

Definition at line 302 of file date.cpp.

◆ TM_WEDNESDAY

#define TM_WEDNESDAY   3

Definition at line 303 of file date.cpp.

◆ TM_YEAR_BASE

#define TM_YEAR_BASE   1900

Definition at line 321 of file date.cpp.

Referenced by Rcpp::timesub().

◆ TWOS_COMPLEMENT

#define TWOS_COMPLEMENT ( t)
Value:
((t) ~ (t) 0 < 0)

Definition at line 141 of file date.cpp.

◆ TYPE_BIT

#define TYPE_BIT ( type)
Value:
(sizeof (type) * CHAR_BIT)

Definition at line 138 of file date.cpp.

Referenced by Rcpp::differ_by_repeat().

◆ TYPE_INTEGRAL

#define TYPE_INTEGRAL ( type)
Value:
(((type) 0.5) != 0.5)

Definition at line 140 of file date.cpp.

Referenced by Rcpp::differ_by_repeat(), and Rcpp::tzload().

◆ TYPE_SIGNED

#define TYPE_SIGNED ( type)
Value:
(((type) -1) < 0)

Definition at line 139 of file date.cpp.

Referenced by Rcpp::differ_by_repeat(), Rcpp::increment_overflow_time(), Rcpp::timesub(), and Rcpp::tzload().

◆ TZ_MAGIC

#define TZ_MAGIC   "TZif"

Definition at line 202 of file date.cpp.

◆ TZ_MAX_CHARS

#define TZ_MAX_CHARS   100 /* Maximum number of abbreviation characters */

Definition at line 282 of file date.cpp.

Referenced by Rcpp::tzload().

◆ TZ_MAX_LEAPS

#define TZ_MAX_LEAPS   50 /* Maximum number of leap second corrections */

Definition at line 287 of file date.cpp.

Referenced by Rcpp::tzload().

◆ TZ_MAX_TIMES

#define TZ_MAX_TIMES   1200

Definition at line 264 of file date.cpp.

Referenced by Rcpp::tzload(), and Rcpp::tzparse().

◆ TZ_MAX_TYPES

#define TZ_MAX_TYPES   256 /* Limited by what (unsigned char)'s can hold */

Definition at line 269 of file date.cpp.

Referenced by Rcpp::tzload().

◆ TZDEFAULT

#define TZDEFAULT   "localtime"

Definition at line 191 of file date.cpp.

Referenced by Rcpp::tzload().

◆ TZDEFRULES

#define TZDEFRULES   "America/New_York"

Definition at line 195 of file date.cpp.

Referenced by Rcpp::tzparse().

◆ TZDEFRULESTRING

#define TZDEFRULESTRING   ",M4.1.0,M10.5.0"

Definition at line 367 of file date.cpp.

Referenced by Rcpp::tzparse().

◆ TZDIR

#define TZDIR   "/usr/local/etc/zoneinfo" /* Time zone object file directory */

Definition at line 187 of file date.cpp.

◆ TZFILE_H

#define TZFILE_H

Definition at line 167 of file date.cpp.

◆ YEARSPERREPEAT

#define YEARSPERREPEAT   400 /* years before a Gregorian repeat */

Definition at line 143 of file date.cpp.

Referenced by Rcpp::tzload(), and Rcpp::tzparse().