Commit graph

158 commits

Author SHA1 Message Date
Fredrik Roubert
0bf8a95309 ICU-22793 Remove superfluous return value typecasts to UBool. 2024-09-19 17:11:38 +02:00
Rich Gillam
967babdc5f ICU-22669 Fix circular dependency in DateTimePatternGenerator::addICUPatterns(). 2024-08-27 10:37:19 -07:00
Fredrik Roubert
0178a07a26 ICU-22793 Clang-Tidy: google-readability-casting
https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/clang-tidy/checks/google/readability-casting.html
2024-07-04 22:32:12 +02:00
Fredrik Roubert
91721504ef ICU-22621 Clang-Tidy: modernize-return-braced-init-list
https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/clang-tidy/checks/modernize/return-braced-init-list.html
2024-03-21 13:50:45 +01:00
Fredrik Roubert
ce052f52c2 ICU-22621 Clang-Tidy: readability-delete-null-pointer
https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/clang-tidy/checks/readability/delete-null-pointer.html
2024-03-18 17:14:23 +01:00
Frank Tang
de9910659d ICU-22661 Limit the size of variants in Locale
See #2821
2024-03-14 16:23:51 -07:00
Fredrik Roubert
53568e8dfc ICU-22520 Refactor CharString & CharStringByteSink into helper.
The repeated sequence of allocating a CharString and CharStringByteSink,
before calling some function that writes into this, can be moved into a
single shared helper function which then is used to give all ulocimp.h
functions that write to ByteSink an overload that instead returns a
CharString, to make call sites look like perfectly normal C++ code.
2024-03-05 23:44:50 +01:00
Fredrik Roubert
939f08f274 ICU-22520 Use C++ function signatures for internal C++ functions.
Some of this code was originally written as C code and some of this code
was originally written as C++ code but made to resemble the then already
existing code that had once been C code. Changing it all to normal C++
now will make it easier and safer to work with going forward.

· Use unnamed namespace instead of static.
· Use reference instead of non-nullable pointer.
· Use bool instead of UBool.
· Use constexpr for static data.
· Use U_EXPORT instead of U_CAPI or U_CFUNC.
· Use the default calling convention instead of U_EXPORT2.
2024-02-12 21:44:06 +01:00
Fredrik Roubert
a6efa924ad ICU-22520 Let ulocimp_getRegionForSupplementalData() return CharString. 2024-02-07 14:27:40 +01:00
Rich Gillam
bcae6f2a43 ICU-22575 Change AvailableFormatsSink to allow locales to inherit availableFormats items from the root locale. 2023-12-04 12:47:50 -08:00
Fredrik Roubert
6d1999fbb9 ICU-21289 Switch to using CharString for calling uloc_getKeywordValue(). 2023-09-25 19:02:41 +02:00
Rich Gillam
8817c25c1e ICU-22449 Fixed SimpleDateFormat (in C++ and Java) to correctly honor the rg and hc subtags in the locale when choosing the hour cycle. 2023-08-28 13:30:45 -04:00
Markus Scherer
b6dcc95d3c ICU-21833 remove redundant void parameter lists
See #2351
2023-03-02 09:31:57 -08:00
Fredrik Roubert
2de88f9d9c ICU-21833 Replace UChar with char16_t in all C++ code. 2023-02-06 19:27:44 +01:00
Fredrik Roubert
2e0d30cfcf ICU-21833 Replace NULL with nullptr in all C++ code. 2023-02-03 20:20:38 +01:00
Fredrik Roubert
030fa1a479 ICU-21148 Consistently use standard lowercase true/false everywhere.
This is the normal standard way in C, C++ as well as Java and there's no
longer any reason for ICU to be different. The various internal macros
providing custom boolean constants can all be deleted and code as well
as documentation can be updated to use lowercase true/false everywhere.
2022-09-07 20:56:33 +02:00
Rich Gillam
721d41153e ICU-22071 Fixed DateTimePatternGenerator to respect the locale's "rg" subtag (when it has one) when determining the hour cycle. 2022-07-12 10:55:03 -07:00
Peter Edberg
64b3548126 ICU-21957 integrate CLDR release-42-m1 (early milestone) to ICU main for 72 (rebased on main) +
FormattedStringBuilderTest::testInsertOverflow infolns,logKnownIssue skip for CI exhaustive crash
2022-05-27 13:50:43 -07:00
Andy Heninger
85705f04e0 ICU-21960 C++20 Warnings from ATOMIC_VAR_INIT
Remove the ICU macros ATOMIC_INT32_T_INITIALIZER and U_INITONCE_INITIALIZER,
which made use of C++ ATOMIC_VAR_INIT, which has been removed from C++20.

With modern C++ features being available, these macros no longer served
any real need.
2022-05-17 15:45:06 -07:00
Peter Edberg
df6a8c877c ICU-13619 Now that UDATPG_NARROW is @stable, can reference it in header 2022-03-11 13:06:50 -08:00
Peter Edberg
23081486ff ICU-21353 Implement DateTimePatternGenerator use of correct datetime pattern;
includes new getter/setter API per TC discussion.
2022-01-13 19:16:37 -08:00
Andy Heninger
904cf62457 ICU-21763 UVector cleanup in Formatting Code
Revise uses of UVector in Formatting related code to better handle memory
allocation failures.  This is one of an ongoing series of commits to address
similar problems with UVector usage throughout ICU.

The changes primarily involve switching uses of UVector::addElementX() to the
new adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
2021-12-16 11:56:30 -08:00
Peter Edberg
e69f337f3c ICU-21669 UPRV_UNREACHABLE > UPRV_UNREACHABLE_EXIT/ASSERT, update usages 2021-09-14 15:22:52 -07:00
Peter Varga
1986dcd0d8 ICU-21734 Add missing overrides 2021-09-07 17:42:14 -07:00
Rich Gillam
19b8b076f9 ICU-20992 Added new API for iterating child resources while following aliases, and changed DateTimePatternGenerator
to use it.
2021-09-03 12:47:24 -07:00
Fredrik Roubert
0a1cfa398c ICU-20973 Use standard keywords true & false to initialize type bool.
Now when all equality operators return standard bool (commit 633438f),
it no longer makes any sense to use the ICU4C constants TRUE & FALSE
or local variables of type UBool for their return value.
2021-08-26 18:53:10 +02:00
Fredrik Roubert
633438f8da ICU-20973 Change all equality operator return types from UBool to bool. 2021-08-17 00:35:00 +02:00
Andy Heninger
c26aebe802 ICU-21662 Rename UVector::addElement().
This is the first step towards improving the error handling and out-of-memory
behavior of UVector::addElement(). A followup PR will add back a new addElement()
with corrected error handling, then additional followups will switch call sites
from the original (renamed) function to the new addElement().

This commit includes no logic or behavior changes; it only renames the existing functions.
2021-07-28 15:36:50 -07:00
Rich Gillam
ac51a1921f ICU-21650 Modified DateTimePatternGenerator to handle skeletons with "e" and "c" better (allowing support for numeric
day-of-week abbreviations).
2021-07-15 18:16:51 -07:00
Peter Edberg
3d8ae5eb6d ICU-20590 Ensure time format consistency for SHORT vs j patterns if no locale data 2020-09-22 22:50:36 -07:00
Jeff Genovy
ef4913316f ICU-21271 Fix valgrind failure in dtptngen.cpp 2020-09-08 13:52:53 -07:00
Shane F. Carr
3b0772fff9 ICU-21015 Fixing gcc compiler warnings 2020-04-03 01:56:07 -05:00
Jeff Genovy
7302079653 ICU-21000 Fix abort called by DateTimePatternGenerator::getDefaultHourCycle
If you call the API getDefaultHourCycle on an empty DateTimePatternGenerator
instance (ie: no locale) then it calls UPRV_UNREACHABLE which calls abort().
We should return an error code instead of aborting.
2020-03-05 18:19:04 -08:00
Jeff Genovy
ce7e060d50 ICU-21001 Fixing problems found by running valgrind.
This makes fixes in order to run the icu4c tests (intltest, cintltst,
iotest, and icuinfo) cleanly under valgrind with --leak-check=full.
2020-03-05 14:34:20 -08:00
Mihai Nita
dd50e38f45 ICU-20738 Best-match pattern for 'sS' uses <appendItem> data 2020-02-10 07:59:52 -08:00
Caio Lima
09d409f5f4 ICU-20442 Adding support for hour-cycle on DateTimePatternGenerator
DateTimePatternGenerator needs to consider the hour-cycle preferred by
Locale. This means that we need to to override the hour-cycle when a
locale contains "hc" keyword. This patch is adding such functionality.
In addition, "DateTimePatternGenerator::adjustFieldTypes" should adjust
hour field to properly follow tr35
spec(https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-hour).
2020-01-09 16:45:56 +01:00
Frank Tang
923ec1ad30 ICU-20436 Add getDefaultHourCycle to DateTimePatternGenerator
See #901
2019-12-12 00:13:37 -08:00
Mihai Nita
17d23d71c0 ICU-20739 Force seconds if the skeleton has fractional seconds 2019-11-08 16:03:40 -08:00
Shane Carr
46c86b47cc ICU-20629 Fixing DTPG hour-format locale and region fallback logic.
Includes changes in C and J.  Makes region.cpp no longer depend on DecimalFormat.  See also: CLDR-13071, ICU-20640, ICU-9982.
2019-05-29 16:37:40 -07:00
Shane Carr
f9ea5351b0 ICU-20625 Fixing uninitialized memory in DTPG detected by Valgrind. 2019-05-29 15:07:05 -07:00
Jeff Genovy
693adf3987 ICU-20558 Fix regression in DateTimePatternGenerator
This fixes a regression introduced by commit 
b12a927c93 for issue ICU-13778.

The above commit improved the error checking in the
DateTimePatternGenerator class, adding checks for errors/failures
where there previously was none at all. This was done in order to
catch catastrophic errors like out-of-memory (OOM), and properly
report them to the caller, rather than ignoring/hiding these errors.

However, in doing so it exposed a case where the code was depending
on ignoring errors in order to fall-back to the Gregorian calendar
when the default ICU locale is set to root.

This restores the previous behavior, by allowing the error of
U_MISSING_RESOURCE_ERROR to fall-though and continue without
reporting back an error to the caller.

Note: This regression was technically introduced in ICU 63, and
also effects ICU 64 as well.
2019-04-25 10:52:06 -07:00
Fredrik Roubert
01c69cfa85 ICU-20158 Pass ByteSink all the way to _uloc_(addLikely|minimize)Subtags().
This eliminates the need for scratch buffers in any code path that ends
with these functions and also eliminates the need for counting bytes,
something that ByteSink will now handle correctly when needed.

Existing calls to uloc_addLikelySubtags() and uloc_minimizeSubtags()
throughout ICU4C implementation code are also updated to instead use
either the Locale or ulocimp_* functions with the new API.

None of this should have any externally visible effect, it's all about
cleaning up implementation internals.
2019-02-21 12:19:04 +01:00
Peter Edberg
2b82c096e0 ICU-20383 DateTimePatternGen should map 'j' using timeData, not short time cycle (#419) 2019-02-17 19:55:52 -08:00
Daniel Ju
7453181fff ICU-20074 Define UPRV_UNREACHABLE macro for unreachable code
Replaced occurrences of U_ASSERT(FALSE) with new UPRV_UNREACHABLE macro.
2019-01-14 14:16:26 -08:00
Daniel Ju
b13c951348
ICU-20043 ICU-13214 ICU-13764 MSVC W3 and W4 warning cleanup (#53)
Cleaned up all of the MSVC W3 warnings and most of the W4 warnings in the common and i18n projects.
2018-09-27 14:27:38 -07:00
Jeff Genovy
b12a927c93 ICU-13778 DataTimePatternGenerator code refactor. Handle Out-of-Memory (OOM) errors, use LocalPointer to prevent memory leaks when OOM occurs, use an internal error code to better report errors during clone and copy construction, mark helper methods and parameters as const, use nullptr instead of NULL, minor spelling and formatting changes. (Note: All tests pass on Windows and Linux).
X-SVN-Rev: 41552
2018-06-27 19:25:52 +00:00
Norbert Runge
63d5dc895a ICU-13624 Public header build failures
X-SVN-Rev: 41070
2018-03-06 18:40:12 +00:00
Peter Edberg
b69d78b0e8 ICU-12740 use private static const int32_t, not #define, for UDATPG_WIDTH_COUNT
X-SVN-Rev: 41035
2018-03-01 07:21:19 +00:00
Peter Edberg
7cf0adb29a ICU-12740 getFieldDisplayName C/C++ initial implementation & C tests; TODO: C++ tests and Java imp
X-SVN-Rev: 40922
2018-02-15 08:38:20 +00:00
Peter Edberg
e2e48c9dce ICU-13183 for compatibility, get(Base)Skeleton should not include 'a' added by DateTimeMatcher; add tests
X-SVN-Rev: 40133
2017-05-24 06:57:45 +00:00