425 Commits

Author SHA1 Message Date
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