395 Commits

Author SHA1 Message Date
Andrey Semashev
5628638ade Added a workaround for MSVC 14.0 for BOOST_BITMASK.
Apparently, MSVC 14.0 does not import type aliases into namespaces via
a using-declaration. Work around the problem by enabling the use of
a compiler intrinsic for deducing the underlyng type of the enum.
2025-06-12 23:56:02 +03:00
Andrey Semashev
1a28d9d60f Mark bitmask_set generated by BOOST_BITMASK as deprecated.
This function is not really needed and can be replaced with double
negation (!!) or comparison with an enum value of zero. We should
prefer to minimize polluting the user's namespace with new names.
2025-06-12 18:41:01 +03:00
Andrey Semashev
f7fdaf08a3 Use C++11 underlying_type trait in BOOST_BITMASK.
This bumps the language requirement to C++11, although for compilers
that support the __underlying_type intrinsic this may work even in C++03
mode.

The operators generated by BOOST_BITMASK now use proper underlying types
for casts, which means the operators will no longer truncate bits from
large enums.

Also mark the operators as noexcept and constexpr (since C++14).
2025-06-12 18:40:55 +03:00
Andrey Semashev
080df0554b Added a missing trailing newline. 2024-04-27 19:35:02 +03:00
Andrey Semashev
87489a4346 Fixed inconsistent linkage specification on MSVC. Code cleanup.
cc32906071 introduced inconsistent
BOOST_UTF8_DECL markup between function declarations and definitions,
which caused MSVC build errors. This commit fixes this.

Also, replaced unneeded BOOST_UTF8_DECL markup with inline for functions
that are only used internally. Made get_cont_octet_out_count static.

Additionally, removed duplicate octet1_modifier_table definitions
and moved it to a function-local static.

Whitespace and formatting cleanup.

Closes https://github.com/boostorg/filesystem/issues/204.
2021-08-18 00:47:12 +03:00
Robert Ramey
db4c8248c0 Merge commit 'a01fe6d57b906edf0400daebfb5ea88bb4582f44' into develop
* commit 'a01fe6d57b906edf0400daebfb5ea88bb4582f44':
  Update CMakeLists.txt
  Fixed out-of-bounds access in utf8_codecvt_facet::do_length.
  Update maintainer list
  Disabled libstdc++ debug mode to work around gcc 10.1 bug.
  Added a workaround for removed nested typedefs in std::allocator.
  Added a workaround for C++20 ostream having deleted operator<< for wchar_t.
  Added gcc 10 build jobs to Travis CI.
  Use more up-to-date location of lightweight_test.hpp
  Converted binary_search_test to lightweight_test.hpp
  Converted allocator_utilities_test to lightweight_test.hpp
  Converted blank_test to lightweight_test.hpp.
  Removed use of deprecated header boost/detail/iterator.hpp.
  Reordered includes.
  Added boost/config.hpp.
  Changed because config.hpp is not being included
  Added clang-10 jobs to Travis CI.
  Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers.
  Disabled OS X builds because they are slow on Travis CI.
  Updated CI configs, added compilers.
2021-08-14 11:08:29 -07:00
Robert Ramey
cc32906071 adjustments to visibiity 2021-08-14 11:08:14 -07:00
Andrey Semashev
131208d8cc Fixed out-of-bounds access in utf8_codecvt_facet::do_length.
The loop in do_length used to dereference from_end pointer, which
could point to an out-of-bounds memory. Rewritten the loop to
avoid this and also make the logic a bit more clear.

Closes https://github.com/boostorg/detail/pull/21.
2021-03-17 14:12:36 +03:00
Andrey Semashev
63f2e170cb Removed use of deprecated header boost/detail/iterator.hpp. 2020-05-10 23:14:19 +03:00
Andrey Semashev
c281caa89f Reordered includes. 2020-05-06 20:31:14 +03:00
Edward Diener
f5bb480082 Added boost/config.hpp. 2020-05-06 13:16:18 -04:00
Edward Diener
3b9267be46 Changed because config.hpp is not being included 2020-05-06 11:15:57 -04:00
Edward Diener
116cc18560 Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-23 09:35:45 -04:00
Marcel Raad
1e5a4ad35e Fix -Wextra-semi clang warnings
Remove superfluous semicola.
2019-02-25 10:19:45 +01:00
Peter Dimov
b29edf18cb Move ~utf_codecvt_facet to .ipp file to try to fix visibility issues 2018-09-17 21:46:12 +03:00
Daniel James
83d7ee837d Remove use of BOOST_MPL_AUX_LAMBDA_SUPPORT
It's only need when compilers don't support template template parameters or
partial specialization. I don't think there are any such compilers in use.
2018-04-08 20:57:32 +01:00
Daniel James
3fc08cca25 Stop using mpl::void_ in reference_content 2018-04-08 20:57:31 +01:00
Daniel James
abfaa1443a Use type traits bool type in reference_content 2018-04-08 20:57:31 +01:00
Daniel James
121cbef225 Use true_type/false_type from type traits in is_xxx.hpp 2018-04-08 20:57:31 +01:00
Daniel James
be57f3c000 Remove mpl dependency from allocator_utilities.hpp 2018-04-08 20:57:31 +01:00
Daniel James
941fff4dc0 Stop using mpl binary logic classes in indirect_traits
Was going to use the ice_* classes from type traits, but they're deprecated.
2018-04-08 20:57:07 +01:00
Daniel James
6172f9a30e Use type traits' true type in boost::blank 2018-04-08 20:55:53 +01:00
Andrey Semashev
824721a753 Trim trailing spaces. 2018-01-01 15:52:37 +03:00
Daniela Engert
1631ba8134 Most members of std::allocate are deprecated in C++17
Replace them by their cousins from std::allocator_traits.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-12-30 18:15:56 +01:00
Andrey Semashev
cf6808b26f Swapped the standard and non-standard overrides for do_length. 2017-10-29 19:31:28 +03:00
Andrey Semashev
aee87734a8 Fixed do_length virtual override.
Fixed a bug introduced by b47fccb4a4, which
commented the correct virtual function override and thus broke length() result.
2017-10-29 19:27:04 +03:00
Robert Ramey
b47fccb4a4 adjusted visibility to permit passing of tests on mingw for serialization library 2017-10-22 11:22:45 -07:00
Andrey Semashev
15d8f9a59c Actualized numeric_traits implementation.
1. Ported to Boost.TypeTraits primitives for type inspection and simple
   metaprogramming instead of local implementations. This effectively
   drops any workarounds for compilers without support for partial template
   specializations. Such compilers are long outdated.

2. Include more fine-grained headers from Boost.TypeTraits to optimize
   compilation times.

3. Made numeric_distance function constexpr.

4. Updated the test accordingly (i.e. replaced the use of now removed local
   components with Boost.TypeTraits). Also replaced lexical_cast with
   standard streams to further reduce dependencies.

None of these changes should affect functionality.
2017-09-20 02:01:51 +03:00
Beman
ce79a887c4 Add BOOST_CONSTEXPR where required by C++ Std [bitmark.types].
Add operator! and function bitmask_set as Boost extensions.
2017-08-28 07:32:08 -04:00
Beman
782208b04d Revert "adjustment to avoid linking problem: vtable not found found for ~utf8_codecvt_facet.hpp"
This reverts commit 73c12230c3.

Reverted because the change broke GCC/MinGW builds of Filesystem.
2017-08-28 07:27:30 -04:00
Robert Ramey
73c12230c3 adjustment to avoid linking problem: vtable not found found for ~utf8_codecvt_facet.hpp 2017-08-13 15:11:17 -07:00
Andrey Semashev
94f1e6b0c6 Fixed length calculation and added a test. 2016-08-07 23:35:04 +03:00
Robert Ramey
10f1da5034 corrected usage of visibility macro with inline function 2016-06-09 11:00:30 -07:00
Robert Ramey
e9c548eeb5 correction in visibility for utf8 facet 2016-04-15 09:42:19 -07:00
Robert Ramey
11a9234e13 re-correct visibility macro for utf8-codecvt 2016-03-28 14:43:26 -07:00
Robert Ramey
313c13b263 Added test for utf8_codecvt 2016-03-28 10:29:57 -07:00
Robert Ramey
99f7f4042f Revert "change visibility setting to import/export from visibility"
This reverts commit bda87dd74e.
2016-03-23 09:34:48 -07:00
Robert Ramey
bda87dd74e change visibility setting to import/export from visibility 2016-03-20 23:16:13 -07:00
Robert Ramey
fbf832c900 make utf8 visible 2016-02-26 17:58:54 -08:00
Robert Ramey
32b98c7586 correct usage of visibility macro for MSVC 2015-10-23 15:12:36 -07:00
Robert Ramey
9fcf2ae390 update visibility attributes 2015-10-20 12:00:27 -07:00
Andrey Semashev
b0a2809915 Corrected indents, removed trailing spaces. 2015-04-02 18:36:26 +03:00
Edward Diener
fbc7c23ab1 Remove dependency on deprecated type_trait headers 2015-04-01 12:16:29 -04:00
Edward Diener
3dde52aaa3 Corrected is_postfix_incrementable implementation 2015-03-31 21:04:47 -04:00
Edward Diener
f24860d28c Remove unneeded header file inclusion for deprecated type_traits header. 2015-03-30 02:23:13 -04:00
Beman
fcaf168000 Initial commit if lightweight_test_report.hpp, aimed at making it easier for users to supply sample programs in bug reports. First use will be in filesystem. 2014-12-28 09:06:33 -05:00
Robert Ramey
1fef8494fe eliminated MACRO for do length by providing both const and non-const versions 2014-12-12 21:28:21 -08:00
Beman
26cf086520 Fix #10354 from Juan Alday. As he pointed out, the declaration (in detail/utf8_codecvt_facet.hpp) and definition (in detail/utf8_codecvt_facet.ipp) need to use the same signature. Reapply Marshall Clow's [SVN r81616] and [SVN r81877] from November and December, 2012, as these appear to correctly supply const for the msvc/dinkumware library (since fixed) that used a do_length() first argument. Revert the portion of [SVN r86722] that removed BOOST_CODECVT_DO_LENGTH_CONST from the do_length() signature in utf8_codecvt_facet.ipp so that it stays in sync with utf8_codecvt_facet.hpp. For the same reason, copy the __IBMCPP__ workaround from utf8_codecvt_facet.ipp to utf8_codecvt_facet.hpp. Verified all libraries (filesystem, log, program_options, property_tree, serialization) that use utf8_codecvt_facet passed all tests before, and then after, these changes. Also applied minor edits to the use comments embedded in utf8_codecvt_facet.hpp. 2014-09-03 17:43:39 -04:00
Beman
5ef03bffe3 Move get_cont_octet_out_count_impl from unnamed namespace to namespace detail. Workaround for unnamed namespace symbols having external linkage prior to C++11, which causes duplicate symbol errors in libraries (for example filesystem) that link in multiple object files (differing only in namespaces) built from the same source file, allowing two versions to exist side-by-side in the same lib or dll. 2014-09-01 07:29:57 -04:00
Andrey Semashev
275643c97b Removed trailing spaces. 2014-06-13 01:14:22 +04:00