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
Howard Hinnant
e12f7c66f0
Unconstrain make_zoned for VS-2015
2017-11-07 13:01:16 -07:00
Howard Hinnant
3a5e8c9384
Silence clang warning
2017-10-30 13:48:09 -04:00
Howard Hinnant
fa6529a2fc
Allow zoned_time conversion among different TimeZonePtr types
2017-10-28 18:20:34 -04:00
Howard Hinnant
4b73a42d02
Update README.md
2.3
2017-10-25 22:12:31 -04:00
Howard Hinnant
25696b7fb3
Optimize to_stream for zoned_time
...
* Decrease the number of lookups in the database from 2 to 1.
2017-10-24 15:44:41 -04:00
Howard Hinnant
9381e894a5
Specify exception constructors
...
* For nonexistent_local_time and ambiguous_local_time.
* Simplify the constructors.
* Make these exceptions usable for custom time zones.
2017-10-24 12:12:31 -04:00
Howard Hinnant
5563d31b2e
Update validation.cpp for new directory structure
2017-10-24 12:06:50 -04:00
Pavel Davydov
202041e531
Add a workaround for a missing operator<< for gcc 5 on linux. See issue #205 for details.
2017-10-24 11:02:54 -04:00
Howard Hinnant
0b7d9c6dbe
Update README.md
2017-10-23 09:47:15 -04:00
Howard Hinnant
66a97f907e
to_stream sets failbit if required to supply a bad name:
...
* for an invalid month
* for an invalid weekday
2017-10-15 13:57:19 -04:00
Howard Hinnant
94eb182256
Add wt to list of products using this library
...
Announced at CppCon-2017 by Roel Standaert.
2017-10-15 11:03:40 -04:00
Howard Hinnant
f328d8c84a
Have format set exceptions(failbit | badbit)
...
* Be sure if something bad happens under the hood it is not silently
swallowed.
2017-10-14 20:42:26 -04:00
Manlio Morini
8b9f0515b5
Replacing 0 with nullptr to avoid GCC warning
...
All the calls to `std::time_get::get` had `0` as end-of-range iterator.
E.g.
auto& f = use_facet<time_get<CharT>>(is.getloc());
// ...
f.get(is, 0, is, err, &tm, command, fmt+1);
^
Using `nullptr` instead of `0` doesn't trigger the GCC 5.x warning:
> warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]
2017-10-12 19:51:06 +02:00
Howard Hinnant
ce975cadb0
Update Try-it-out link
2017-10-03 18:11:57 -04:00
Tomi Valkeinen
2032fccbb7
Fix valgrind warning about uninitialized variable use in to_stream()
...
tm variable is not initialized in to_stream(), and valgrind warns about
"Conditional jump or move depends on uninitialised value(s)".
This is a false positive, as strftime always reads tm_hour, even if it
ends up never using it. To silence the warnings, initialize tm to zero.
2017-10-03 15:22:49 -04:00
Howard Hinnant
2e213abb76
Silence clang static analyzer warnings
2017-10-03 12:45:09 -04:00
Howard Hinnant
3acb299f3f
Rename TZ_DB to tzdb
...
* Bring into alignment with proposal
* TZ_DB alias left behind for backwards compatibility
2017-09-30 14:48:25 -04:00
Howard Hinnant
22a229af91
On macOS tz_dir is now discoverable at run time
...
* Apple changed the location of their IANA database in High Sierra,
breaking current_zone(). Now on Apple the location of the IANA
database is searched for at run time.
2017-09-26 09:47:24 -04:00
Howard Hinnant
fc917fe303
Port testit to new directory structure
2017-09-25 19:28:04 -04:00
tagunil
bff551b2a5
Convert Windows header file names to lower case
2017-09-23 19:55:56 -04:00
Howard Hinnant
9f6c8d8c10
Update include paths for new directory structure
2017-09-22 20:10:58 -04:00
Markus Werle
3c3ba68906
Proposal for an alternative directory structure
2017-09-22 20:03:16 -04:00
Howard Hinnant
c5e58fd015
include <wordexp.h> is unnecessary when using USE_OS_TZDB
2017-09-10 13:50:51 -04:00
Tony Walker
ef6d53595d
Fix CHAR_BIT not found by including climits.
2017-09-09 19:05:54 -04:00
Howard Hinnant
0f658db2cd
Correct how width is counted for fractional seconds
...
* Include decimal point character in count.
2017-09-09 15:32:47 -04:00
Howard Hinnant
481771ef5e
Add support down to femtosecond precision
...
* Requires platform specific use of 128bit integral representation
(e.g. std::chrono::duration<__int128_t, std::femto>).
2017-09-09 10:30:39 -04:00
atkawa7
5f01382e24
Enable current_zone() on FreeBSD
2017-09-08 20:47:38 -04:00
Kiryl Mikhneev
41563c46e8
Disabled some template constraints for vs since it does not work properly there
2017-09-07 19:41:47 -04:00
Kiryl Mikhneev
bba9aeafab
Added shortened curl include path to support nuget package rmt_curl
2017-09-07 19:33:59 -04:00
Howard Hinnant
4cb893c780
Enable DATE_BUILD_DLL for Linux and macOS
2017-09-05 20:07:13 -04:00
gm
c09d35534d
Reformulate macros for static and shared linking on windows.
2017-09-05 19:59:57 -04:00
Howard Hinnant
272d487b3d
Add non-const front() to tzdb_list
...
* Needed when USE_OS_TZDB==1 && MISSING_LEAP_SECONDS==0
2017-08-31 17:45:42 -04:00
Howard Hinnant
aad6010831
Add test for custom time zone support
2017-08-31 10:44:07 -04:00
gm
0707cc4932
NULL to nullptr change.
2017-08-27 21:13:47 -04:00
gmcode
d3fcf00d55
Small exception safety improvement.
2017-08-27 21:13:47 -04:00
gm
2402a0bd25
undef somethings
2017-08-28 13:10:57 +12:00
Howard Hinnant
873aa0515e
Correct the fixes for VS-2017 that broke everyone else
2017-08-21 21:21:59 -04:00
Howard Hinnant
49b50c43d9
Introduce the ONLY_C_LOCALE
...
*Eliminates dependance on on the time_get and time_put facets.
2017-08-18 22:56:03 -04:00
Howard Hinnant
38c24b4090
Add fixes for VS-2017.
2017-08-18 22:55:31 -04:00
Howard Hinnant
2515dfd1b5
Remove deleted weekday(int) constructor
...
* This was a failed experiment.
2017-08-15 13:44:16 -04:00
Howard Hinnant
c3ab69ee0d
Hard code year::min(), year::max() to [-32767, 32767]
...
* When year < 0, -year > 0 (always).
* These are the minimal limits C places on short.
* Reserving -32768 is useful in the implementation.
2017-08-15 12:42:27 -04:00
Howard Hinnant
be871e6c85
Add is_clock
2017-08-13 22:57:36 -04:00
Howard Hinnant
eced00fc1c
Make tzdb_list::push_front private
2017-08-12 17:42:48 -04:00
Howard Hinnant
859a50a70e
Replace list<TZ_DB> with tzdb_list
...
* tzdb_list is a singly linked list with an atomic head
* push_front() and front() are thread safe.
2017-08-12 17:41:55 -04:00
Howard Hinnant
80a142407a
Add zoned_traits
...
* zoned_traits is SFINEA-friendly.
* zoned_traits is specialized on const time_zone*
to call locate_zone.
* zoned_time accesses the database via zoned_traits<TimeZonePtr>.
* Clients with custom time zone databases can specialize zoned_traits.
2017-08-12 17:41:55 -04:00
Howard Hinnant
d4d6eda861
Template zoned_time on TimeZonePtr
...
* TimeZonePtr defaults to const time_zone*.
* Adjust template deduction guides and make_zoned.
* Add HAS_STRING_VIEW
2017-08-12 17:41:55 -04:00
Howard Hinnant
07ada69385
Expose a list<TZ_DB>
...
* Existing API always accesses the front of the list.
* Add locate_zone and current_zone member functions to TZ_DB.
* reload_tzdb() pushes a new database to the front of the list.
* get_tzdb_list() exposes the list<TZ_DB>&.
2017-08-12 17:41:55 -04:00
Jan Kratochvil
e7c3ca0e90
Fix compilation warnings for -DUSE_OS_TZDB.
...
tz.cpp:1617:24: error: unused parameter 't' [-Werror,-Wunused-parameter]
maybe_reverse_bytes(T& t, std::false_type)
^
tz.cpp:2470:1: error: unused function 'get_version' [-Werror,-Wunused-function]
get_version()
^
tz.cpp: In lambda function:
tz.cpp:1922:84: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
[](const sys_seconds& x, const transition& t)
^
tz.cpp:1921:19: note: shadowed declaration is here
for (auto t = std::upper_bound(transitions_.begin(), transitions_.end(), l,
^
2017-08-12 16:59:23 -04:00
Howard Hinnant
82de27d339
Fix bug in sys_time and local_time from_stream
...
* to handle microfortnights
2017-08-12 13:56:17 -04:00
Howard Hinnant
922abf1299
Protect from Oracle sun macro
2017-08-06 00:30:27 -04:00
Howard Hinnant
c4dcd5eb78
More Oracle fixes.
2017-08-05 20:27:15 -04:00
Howard Hinnant
9c181a1440
Update tests for default constructible:
...
* weekday_indexed
* year_month_weekday
2017-08-05 16:31:18 -04:00
Howard Hinnant
e2a38e600c
Set constexpr rules to C++11 for Oracle 12.6 and earlier
2017-08-05 16:06:20 -04:00
Howard Hinnant
4ae416f06a
Add default constructor for weekday_indexed
...
* This enables the year_month_weekday default constructor.
2017-07-27 14:34:11 -04:00
Howard Hinnant
5726b70bb7
Turn off constexpr when using clang + VS-2013 std::lib
2017-07-24 08:26:37 -04:00
Howard Hinnant
e6b1e0fe58
Allow read_unsigned to read 0 digits
...
* Will allow reading "optional" integers.
2017-07-24 08:18:18 -04:00
schmidt9
170ebfd354
Another memory leaks fix
2017-07-22 12:00:52 -04:00
Paul Thompson
a5b77bb0fe
add to copyright holder
2017-07-21 10:41:48 -04:00
Paul Thompson
5a53cb38a3
VS2013 doesn't accept exception specification for constructor default. Resolves #183
2017-07-21 10:41:48 -04:00
Paul Thompson
494fee4e1b
User defined literals are not supported by VS2013, use explicit year constructor instead
2017-07-21 10:41:48 -04:00
Howard Hinnant
a034eeed23
Have parse of %p set failbit if unsuccessful.
2017-07-19 15:26:29 -04:00
Howard Hinnant
a1b19a2ed6
Silence some warnings.
2017-07-19 15:25:57 -04:00
schmidt9
496497d16e
Fix memory leaks
2017-07-17 12:25:27 -04:00
Semir Puskarevic
a828109809
Suppress -Wunused-function warning
2017-07-13 09:49:38 -04:00
Howard Hinnant
2129b813c9
Add www.safe.com to list of projects using date
2017-07-10 20:42:29 -04:00
Howard Hinnant
c8d3cc14da
Add zoned_time deduction guides
2017-07-06 20:49:53 -04:00
Howard Hinnant
893cf51fd8
Add test for zoned_time
2017-07-06 20:49:28 -04:00
Howard Hinnant
6067371127
Don't pass ill-formed strings to stold
...
* Avoid exceptions coming out of stold.
* from_stream should always set failbit instead of throw.
2017-07-06 11:54:55 -04:00
Howard Hinnant
0c8b1f5967
Put expand_path back in when INSTALL is defined
2017-07-05 10:30:23 -04:00
Howard Hinnant
16dd16e64e
Silence warning on VS
2017-07-03 16:48:48 -04:00
Howard Hinnant
ea0158c779
Move get_program_folder closer to where it is used
2017-07-03 16:45:11 -04:00
Howard Hinnant
a0b8883763
Remove unused variables in load_timezone_mappings_from_xml_file
2017-07-03 16:43:01 -04:00
Howard Hinnant
156bdf8bc6
Remove #ifdef in time_of_day
...
* Workaround for MSVC no longer needed.
2017-07-03 16:41:09 -04:00
Howard Hinnant
2d1d8f2255
Put %Z back into default streaming for zoned_time
...
* It was removed by accident.
2017-07-01 23:00:34 -04:00
Howard Hinnant
e0c962a8ce
Silence unused variable warnings
2017-07-01 20:37:14 -04:00