@@ -49,17 +49,17 @@ namespace Rcpp {
4949 m_tm.tm_sec = m_tm.tm_min = m_tm.tm_hour = m_tm.tm_isdst = 0 ;
5050
5151 // allow for ISO-notation case (yyyy, mm, dd) which we prefer over (mm, dd, year)
52- if (mon >= baseYear && day <= 12 && year <= 31 ) {
53- m_tm.tm_year = mon - baseYear;
52+ if (mon >= baseYear () && day <= 12 && year <= 31 ) {
53+ m_tm.tm_year = mon - baseYear () ;
5454 m_tm.tm_mon = day - 1 ; // range 0 to 11
5555 m_tm.tm_mday = year;
5656 } else {
5757 m_tm.tm_mday = day;
5858 m_tm.tm_mon = mon - 1 ; // range 0 to 11
59- m_tm.tm_year = year - baseYear;
59+ m_tm.tm_year = year - baseYear () ;
6060 }
6161 double tmp = mktime00 (m_tm); // use mktime() replacement borrowed from R
62- m_tm.tm_year += baseYear; // we'd rather keep it as a normal year
62+ m_tm.tm_year += baseYear () ; // we'd rather keep it as a normal year
6363 m_d = tmp/(24 *60 *60 );
6464 }
6565
@@ -79,10 +79,10 @@ namespace Rcpp {
7979 int getWeekday () const { return m_tm.tm_wday + 1 ; } // makes it 1 .. 7
8080 int getYearday () const { return m_tm.tm_yday + 1 ; } // makes it 1 .. 366
8181
82- static const unsigned int QLtoJan1970Offset; // Offset between R / Unix epoch date and the QL base date
83- static const unsigned int baseYear; // 1900 as per POSIX mktime() et al
84-
85- Date & operator =( const Date &newdate); // copy assignment operator
82+ // 1900 as per POSIX mktime() et al
83+ static inline const unsigned int baseYear (){
84+ return 1900 ;
85+ }
8686
8787 // Minimal set of date operations.
8888 friend Date operator +(const Date &date, int offset);
@@ -116,9 +116,6 @@ namespace Rcpp {
116116 double mktime00 (struct tm &tm) const ; // from R's src/main/datetime.c
117117 };
118118
119- const unsigned int Date::QLtoJan1970Offset = 25569 ; // Offset between R / Unix epoch date and the QL base date
120- const unsigned int Date::baseYear = 1900 ; // because we hate macros
121-
122119 // template specialisation for wrap() on the date
123120 template <> SEXP wrap<Rcpp::Date>(const Rcpp::Date &date);
124121
0 commit comments