683 Commits

Author SHA1 Message Date
Howard Hinnant
1eeb4cd652 Prepare for the new definition of IST
* Irish Standard Time has a -1h save in the winter instead
  of a +1h save in the summer.
2017-12-08 13:08:40 -05:00
Howard Hinnant
b49bdc3ca7 Add missing include <memory> for unique_ptr 2017-12-06 10:12:49 -05:00
Howard Hinnant
c7e5a4d08e Add posix-style time zone example: ptz.h 2017-12-03 14:40:01 -05:00
Peter Karlovsek
5653e9e3a9 Fixes CURLE_SSL_CACERT (60) when downloading tzdata2017c.tar.gz 2017-12-01 12:14:41 -05:00
Andreas Stallinger
d3b8d4af8d use target_include_directories instead of include_directories 2017-12-01 11:18:59 -05:00
Howard Hinnant
c2e139ef53 Replace realpath with readlink
* Appears to be more modern and Debian Stretch requires it.
2017-11-30 17:17:28 -05:00
Howard Hinnant
a3e8f399c4 ifdef out clock_cast for VC-2017 and earlier
* Clients report it can't handle the C++11
* Triggered to be enabled on VC-number-next
* Deprecated API (to_xxx_time) rewritten to be independent of
  clock_cast.
* Whitespace changes to bring column length down to 90.
2017-11-30 15:40:37 -05:00
Howard Hinnant
443a29df53 Improve range check on year
* The previous fix broke parsing of sub-date quantities such as
  durations.
2017-11-30 12:06:51 -05:00
Howard Hinnant
1902b8e8fb Range check year on parse 2017-11-30 10:45:30 -05:00
Howard Hinnant
c513a20691 Fix off-by-one bug in iso_week::year_lastweek_weekday
* The conversion from year_lastweek_weekday to sys_days
  and local_days had an off by one error.
* Added test for this case.
2017-11-30 10:28:14 -05:00
Howard Hinnant
87ed7f83cf Correct IANA data download URL 2017-11-27 12:44:57 -05:00
Darrell Wright
f8cc62c396 Changed naming
so that it is parent folder name _pass or _fail (e.g.)
date_test_fail_<test_name>
and date_test_pass_<test_name>
As this should be easier to sort
2017-11-27 10:20:14 -05:00
Darrell Wright
2d2b65906a Set so that the pass tests are all tests that do not end in .fail.cpp 2017-11-27 10:20:14 -05:00
Darrell Wright
53629fa30c No longer hardwiring subfolders of test
Hid build errors on should fail tests
2017-11-27 10:20:14 -05:00
Darrell Wright
748a1fd5a9 Updated testing so that failures of the should fail tests will compile
but will return 1 in testing if they actually built
2017-11-26 23:22:29 -05:00
Darrell Wright
524517b369 Added scripts to do fail testing 2017-11-26 23:11:58 -05:00
Darrell Wright
98ae1e5241
part 1 of merge request 2017-11-26 23:09:46 -05:00
Howard Hinnant
9b88763dbf Remove noexcept from tai_clock::now() and gps_clock::now()
*  These functions may try to initialize the tzdb which
   could fail.
2017-11-26 21:24:45 -05:00
Darrell Wright
f3741d68ff Removed OpenSSL requirement. Curl, if it supports SSL, will pull it in.
Tested on Ubuntu so far
2017-11-26 16:56:41 -05:00
Darrell Wright
080df4988f excluded testit from Windows 2017-11-26 16:56:41 -05:00
Darrell Wright
1f27fb7d42 Cannot set USE_OS_TZDB=1 on Windows 2017-11-26 16:56:41 -05:00
Darrell Wright
3e47883c41 Added compile option BUILD_STATIC that defaults to ON to build static
libraries.  Set to off to build shared
2017-11-26 16:56:41 -05:00
Darrell Wright
3a33cdca7d Fixed WORKING_DIR path on testit target to use project root as base 2017-11-26 16:56:41 -05:00
Darrell Wright
3c4f0b5ada Changed testing approach and added gitignore 2017-11-26 16:56:41 -05:00
Darrell Wright
c0a3e528a3 Typo 2017-11-26 16:56:41 -05:00
Darrell Wright
9c67d94f2f Started adding test building 2017-11-26 16:56:41 -05:00
Darrell Wright
9c39772731 Create CMakeList.txt
This is an implementation of cmake config relating to #18
2017-11-26 16:56:41 -05:00
Howard Hinnant
15a63ec819 Updated on behalf of schmidt9 2017-11-26 14:41:40 -05:00
Tomasz Kamiński
543315b700 Reversed order of arguments to clock_time_conversion.
Now the order of argument matches the clock_cast function.
The test only is_clock_castable trait still matches is_convertible
order of arguments.
2017-11-26 13:50:21 -05:00
Tomasz Kamiński
7c69f1570d Changed invocation to match specification
Slight difference between invocation on lvalue of clock_time_conversion
object and prvalue.
2017-11-25 22:01:12 +01:00
Tomasz Kamiński
dd91be668e Added deprecated functions test for real 2017-11-24 23:42:18 +01:00
Tomasz Kamiński
b13c859ff1 Restored deprecated to_clock_time function.
Fixed the to_utc_time(const gps_time<Duration>& t) function
to correctly use clock_cast<utc_time>.

Added test to deprecated functions.
2017-11-24 23:37:32 +01:00
Tomasz Kamiński
d4592bd497 Maked clock_time_conversion as const and used alias.
Marked operator() of all supplied clock_time_conversion overload
as const.
Changed input type to sys_time/utc_time alias when possible.
Used consitient nomencalture: st for sys_time, ut for utc_time
and tp for time in different clock.
2017-11-24 23:26:56 +01:00
Tomasz Kamiński
9910f5fcc3 Moved clock_cast test to separate dir.
Fixed naqme of the to_sys_return_reference test, so it
is invoked.
2017-11-24 22:30:54 +01:00
Tomasz Kamiński
58a4a9518a Mismatch in return type of converting function is now hard error.
Change the implementation, in the way that mismatch in return
type of the from/to_sys/utc functions (not returning time_point,
or returning time_point with inappropriate clock) leads to
hard error.

Added appropariate fail test for to_sys function, including:
* returning an int
* returning time_point of wrong clock
* reutrning reference to time_point
2017-11-24 22:23:50 +01:00
Tomasz Kamiński
5a9b44a37a Implemented test for casting non-wall clocks and detecting that clocks cannot be casted.
Added test that detects if clock_cast<Dest>(Source) properly
SFINAEs if clock's are not castable, this includes test for
steady_clock that is not castable to any wall-clock.

Secondly added steady_based_clock based on steady_clock
(as name indicates), that clock_cast may be extended to clock
non-related to wall-time (sys/utc) using conversion traits.

Final example is pair of ambiguous clocks (amb1/amb2_clock) that can convert
to each other either using sys_clock or utc_clock.
Then the conversion from amb2 to amb1 is disambiguated
via trait specialization.
2017-11-24 18:08:00 +01:00
Tomasz Kamiński
a9d2907fa1 Implemented test for custom clocks derived from sys_clock.
Created mil_clock and s2s_clock, that are both using to_sys/from_sys
function and are fully interoperable with existing clocks (including
ones based on utc).

Implemented an trait is used to provide direct conversion
from s2s_clock to mil_clock without converting to sys_clock
(conversion counter is used for this purpose).
2017-11-24 18:07:33 +01:00
Tomasz Kamiński
bf5a4f3cd5 Implemented test for existing clocks.
Implemented test for conversions between existing clocks
(sys_clock, utc_clock, tai_clock, gps_clock) showing that
they can be used instead of to_clock_time functions.
2017-11-24 18:06:55 +01:00
Tomasz Kamiński
e1099ef3ab Implemented clock_cast function.
Added an clock_time_conversion trait, that should be specialized
with SourceClock and DestClock respectively and provide an function
that convert time_point in SourceClock to equivalent time_point
in DestClock.

This function has following specializations:
1) <sys_clock, utc_clock> - convert sys_time to utc_time
2) <utc_clock, sys_clock> - convert utc_time to sys_time
3) <Clock, sys_clock>     - calls Clock::to_sys if it returns sys_time
4) <Clock, utc_clock>     - calls Clock::to_utc if it returns utc_time
5) <sys_clock, Clock>     - calls Clock::from_sys if it returns time_point<Clock>
5) <utc_clock, Clock>     - calls Clock::from_utc if it returns time_point<Clock>

Implemented an clock_cast<DestClock>(time_point<SourceClock, Dur> st), that
works as follow:
1) If DestClock is same as SourceClock, returns std
2) Otherwise, if clock_conversion<SourceClock, DestClock> available, uses it
3) Otherwise, if tries using clock_conversion<SourceClock, CommClock>
   and clock_conversion<CommClock, DestClock> for CommClock being utc_time
   or sys_time
4) Otherwise, tries using clock_conversion<SourceClock, utc_clock>
   and clock_conversion<sys_clock, DestinationClock> or reversed (firstly
   convert to sys_clock, then to utc_clock) to convert.
2017-11-24 17:55:15 +01:00
Darrell Wright
4614ebda4a
Update to accomidate change of iana url #241 2017-11-23 20:25:00 -05:00
Howard Hinnant
c286981b3b Fix improper application of GCC diagnostic suppression 2017-11-21 10:07:31 -05:00
Howard Hinnant
9ca582d9da Silence GCC conversion warning for bitfields
* Used only in weekday_indexed.
2017-11-20 14:50:48 -05:00
Tullio Menga
f4b12ab023 Adjust HAS_CHRONO_ROUNDING macro for MSVC with v140_clang_c2 and LLVM-vs2014 2017-11-20 11:45:04 -05:00
Alexander Karatarakis
bd51baf31e msvc token workaround 2017-11-19 18:52:56 -05:00
Michael Maroszek
16439a8ce2 enhance tz_dir detection for buildroot with uclibc systems
* use /etc/TZ for timezone detection on buildroot with uclibc systems
2017-11-19 18:42:13 -05:00
Howard Hinnant
d97bc984c7 Change default_zone from "UTC" to "Etc/UTC"
* zoned_traits<const time_zone*>::default_zone()
  should not depend on a Link, but on a Zone.
2017-11-19 18:17:09 -05:00
Aaron Bishop
c9ef0a8f05 express reverse_bytes in an easy to optimize way
optimizes to single bswap instruction on gcc and clang
2017-11-19 17:52:17 -05:00
Howard Hinnant
4832ea0ddb Move HAS_STRING_VIEW to date.h 2017-11-17 11:09:17 -05:00
Tullio Menga
ec514101a6 minor patches to build on Windows with MSVC v140_clang_c2 and LLVM-vs2014 2017-11-15 07:20:07 -05:00
Howard Hinnant
517c0f2704
Update C++ standards proposal status 2017-11-12 06:27:50 -05:00