Compare commits

..

129 Commits

Author SHA1 Message Date
Gennaro Prota
c13a99640a Try a workaround to have MrDocs document the specialization of std::hash 2025-09-16 10:53:23 +02:00
Gennaro Prota
11088d0d80 Remove extra parentheses in the implementation of operator<()
Reason: Consistency.
2025-09-15 19:23:49 +02:00
Gennaro Prota
fa3cef5485 Add missing spaces in a comment
Reason: Consistency.
2025-09-15 19:23:49 +02:00
Gennaro Prota
4157a327d9 Simplify the implementation of all() 2025-09-15 19:23:49 +02:00
Gennaro Prota
eea6992389 Remove a reference to a removed comment
The referenced comment was removed when porting the documentation to
MrDocs. It advised against using the constructor from basic_string, but,
perhaps, that advice was a bit too strong (constructing from strings is
handy, and probably faster than inputting from a stringstream).
2025-09-15 19:23:49 +02:00
Gennaro Prota
87ea757f7b Add trailing periods to the \pre paragraphs that missed them
Reason: Consistency.
2025-09-15 19:22:48 +02:00
Gennaro Prota
8b729ca3ff Fix a few documentation glitches 2025-09-15 17:18:18 +02:00
Gennaro Prota
a6a7ffa9e6 Make the three "from string" constructors explicit
Making them non-explicit was an oversight.
2025-09-15 12:13:43 +02:00
Gennaro Prota
228d39efd2 Settle the documentation of the iterators
We choose to hide the iterator type definitions and just document their
category, which is enough.
2025-09-15 12:07:27 +02:00
Gennaro Prota
09b7ca2135 Improve the encapsulation of bit_iterator_base 2025-09-12 19:48:15 +02:00
Gennaro Prota
71eaf3136b Fix an error in the documentation of operator==() 2025-09-12 18:33:05 +02:00
Gennaro Prota
ca06119e71 Remove the dependency on core/allocator_access.hpp 2025-09-12 16:34:25 +02:00
Gennaro Prota
fae1e7f97a Make the max_size() tests a bit more meaningful 2025-09-12 11:53:01 +02:00
Gennaro Prota
94eef0dd8d Add a missing comment 2025-09-12 11:41:26 +02:00
Gennaro Prota
f3526cb606 Add push_front() and pop_front() 2025-09-12 11:10:33 +02:00
Gennaro Prota
d79c7f992d No longer use BOOST_NO_CXX11_RVALUE_REFERENCES
Reason: We require decent C++11 support anyway.
2025-09-12 10:42:05 +02:00
Gennaro Prota
ce3435f662 Add two blank lines
Reason: Readability, consistency.
2025-09-12 10:25:30 +02:00
Gennaro Prota
c3a0cc2a32 Make the descriptions of the preconditions of the three "from string" constructors more precise 2025-09-12 10:19:51 +02:00
Gennaro Prota
bd36e481d8 Add a constructor from basic_string_view in C++17 or later
Note that we have MrDocs compile as C++17 again (a change that we had
reverted).
2025-09-12 10:19:51 +02:00
Gennaro Prota
0d0e881254 Add a constructor from const CharT * (pointer to C-style string)
This is in preparation of the next commit, which will add a constructor
from std::basic_string_view (otherwise, construction from a C-style
string would be ambiguous between the basic_string_view and the
basic_string constructor).

Note that, rather than duplicating code to test the new member, we
changed many constructions in dyn_bitset_unit_tests1.cpp to use const
char *, instead of std::string. (The constructor from std::basic_string
is tested separately anyway.)
2025-09-12 10:19:51 +02:00
Gennaro Prota
ba12d33c84 Don't test for Tr::eq( c, one ) twice in init_from_string() 2025-09-12 10:19:51 +02:00
Gennaro Prota
36d52d6b00 No longer use boost::move()
Reason: We require C++11 now, so we can use std::move().
2025-09-12 10:19:51 +02:00
Gennaro Prota
95e06608e1 Actually test the move constructor in the move constructor tests
We were testing the *copy* constructor, instead.
2025-09-12 10:19:51 +02:00
Gennaro Prota
21eda71789 Replace a #include of a deprecated include file 2025-09-12 10:19:51 +02:00
Gennaro Prota
8587d4f97c Remove a superfluous #include directive 2025-09-12 10:19:51 +02:00
Gennaro Prota
c442ecdc90 Add missing const qualifiers 2025-09-12 10:19:51 +02:00
Gennaro Prota
ed2f5281fe Make lowest_bit() more efficient
As a nice bonus, this also removes the dependency on Boost.Integer.
2025-09-12 10:19:51 +02:00
Gennaro Prota
fd95d1b570 Remove a spurious space 2025-09-12 10:19:51 +02:00
Gennaro Prota
a02393bd26 Fix a misleading variable name 2025-09-12 10:19:51 +02:00
Gennaro Prota
d7ba1ffd13 Get rid of BOOST_STATIC_ASSERT() and BOOST_STATIC_CONSTANT()
Reason: They are no longer necessary, given that we require C++11 now.
2025-09-12 10:19:51 +02:00
Gennaro Prota
6ef22fc69c Assert that Block is the same type as AllocatorOrContainer::value_type
Reason: That's required both when AllocatorOrContainer is an allocator
type and when it's a container type. Now, when it is an allocator type,
the assert is usually in the implementation of std::vector, which we
use. But, when it's a container type, we need to assert that on our own.
2025-09-12 10:19:51 +02:00
Gennaro Prota
6a5faf3597 Remove the parameter-less overloads of find_first() and find_first_off()
Reason: We can use a default argument, instead, which is what
dynamic_bitset usually does.
2025-09-12 10:19:51 +02:00
Gennaro Prota
399230316c Make pop_back() more efficient 2025-09-12 10:19:51 +02:00
Gennaro Prota
f997c1fa7f Back out the support for operator<=> in our iterators
Reason: It required operator<=> for the underlying container, and
boost::container::small_vector doesn't support it.
2025-09-12 10:19:51 +02:00
Gennaro Prota
969c7e0947 Make buffer_type public
Reason: Failures from GCC and Clang. See the new code comment.
2025-09-12 10:19:51 +02:00
Gennaro Prota
7668759686 Remove some outdated macros (workarounds for MSVC 6) 2025-09-12 10:19:51 +02:00
Gennaro Prota
7144965095 Remove another workaround for Codewarrior 8.3
Reason: Obsolete compiler.
2025-09-12 10:19:51 +02:00
Gennaro Prota
b0b94ec560 Add C++20 iterators
Reason: Requested on the mailing list.
2025-09-12 10:19:51 +02:00
Gennaro Prota
1f6e471132 Allow choosing the underlying container type
The user can now choose the underlying container used by dynamic_bitset.
This allows e.g. having small buffer optimization by using
boost::container::small_vector.

Since the underlying container is no longer guaranteed to be
std::vector, we revert "Reflect some noexcept specifications of
std::vector in dynamic_bitset" and the related "Let MrDocs compile the
code as C++17".

Note that we didn't add serialization tests (dyn_bitset_unit_tests5.cpp)
because boost::container::small_vector has no serialization support.

This closes issue #76.
2025-09-12 10:19:51 +02:00
Gennaro Prota
467e121a68 Add find_first_off(), find_first_off( size_type ) and find_next_off( size_type ) 2025-09-12 10:19:51 +02:00
Gennaro Prota
c12ffc8b37 Don't repeat the preprocessing condition to specialize std::hash 2025-09-12 10:19:51 +02:00
Alan de Freitas
dc2a88e9a7 Make the MrDocs documentation multipage 2025-09-12 10:19:51 +02:00
Alan de Freitas
1ead020341 Support CMake root mode 2025-09-12 10:19:51 +02:00
Gennaro Prota
0b177806ce Ensure all #includes are at the top of the source file 2025-09-12 10:19:38 +02:00
Gennaro Prota
055631591a Document our support for std::hash 2025-09-12 10:16:34 +02:00
Gennaro Prota
abbecdb56e Remove some symbol filters from mrdocs.yml
Reason: They no longer seem necessary.
2025-09-11 12:49:13 +02:00
Gennaro Prota
7a01d14918 Reword a comment using singular they 2025-09-11 12:49:13 +02:00
Gennaro Prota
9baffa4887 Document that max_size() doesn't emit exceptions 2025-09-11 12:49:13 +02:00
Gennaro Prota
baf130a7e6 Use noexcept instead of BOOST_NOEXCEPT
Reason: We require C++11 support anyway.
2025-09-11 12:49:13 +02:00
ivanpanch
9ad6687e9a Fix a typo (“slighly”) in a documentation comment 2025-09-11 12:49:13 +02:00
ivanpanch
fd5e2fae75 Remove a spurious comma in a documentation comment 2025-09-11 12:49:13 +02:00
Gennaro Prota
122c4b986d Avoid an interrupted sentence in the \brief documentation of the stream inserter 2025-09-11 12:49:13 +02:00
Gennaro Prota
495aec32a0 Use the same parameter name for the two overloads of at()
Reason: Consistency.

This incidentally also fixes the documentation of the non-const
overload.
2025-09-11 12:49:13 +02:00
Gennaro Prota
ba8c408b31 Add a missing const qualifier 2025-09-11 12:49:13 +02:00
Gennaro Prota
c63af26734 Fix an error in the documentation of resize() 2025-09-11 12:49:13 +02:00
Gennaro Prota
ff0b3b97f2 Let MrDocs compile the code as C++17
Reason: Getting the noexcept specifications introduced in "Reflect some
noexcept specifications of std::vector in dynamic_bitset".
2025-09-11 12:49:13 +02:00
Gennaro Prota
e8a570b4b4 Work around some glitches from the MrDocs parser 2025-09-11 12:49:13 +02:00
Gennaro Prota
5bba2b7694 Document our overload of hash_value() 2025-09-11 12:49:13 +02:00
Gennaro Prota
4a5dbf29af Fix two typos in the documentation comments 2025-09-11 12:49:13 +02:00
Gennaro Prota
e93f96cc96 Document many function parameters and some return values
For some of these, we were getting "undocumented parameter" warnings
from MrDocs. For others, MrDocs was automatically adding some
documentation, but that was inadequate for DynamicBitset.
2025-09-11 12:49:13 +02:00
Gennaro Prota
edd9091371 Run the Antora workflow on macOS 15, in GitHub Actions 2025-09-11 12:49:13 +02:00
Gennaro Prota
b104747c51 Use the same parameter names in the two declarations of boost::swap()
Reason: Fixing an error from MSVC 14.3 about different noexcept
specifications between the two declarations.
2025-09-11 12:49:13 +02:00
Gennaro Prota
2d33df8f43 Simplify a redundant assert condition 2025-09-11 12:49:13 +02:00
Gennaro Prota
8de7c429c3 Reflect some noexcept specifications of std::vector in dynamic_bitset
This closes issue #85.
2025-09-11 12:49:13 +02:00
Gennaro Prota
b06e995e77 Always use braces with for-statements, as well
Reason: Consistency and safety.

See: "Always use braces with if-statements".
2025-09-11 12:49:13 +02:00
Gennaro Prota
e173eb3531 Denote short and long consistently 2025-09-11 12:49:13 +02:00
Gennaro Prota
a4820c1146 Rename dynamic_bitset.tpp to "dynamic_bitset.ipp"
Reason: Having it copied at installation time.
2025-09-11 12:49:13 +02:00
Gennaro Prota
3ed154a1bd Leave inline to the compiler 2025-09-11 12:49:13 +02:00
Gennaro Prota
b18ddca496 Set badbit if an exception is thrown during output
Reason: This is what the standard formatted output functions do.
2025-09-11 12:49:13 +02:00
Gennaro Prota
3d7458554d Remove two erroneous references to the standard 2025-09-11 12:49:13 +02:00
Gennaro Prota
683e160337 Move a few includes to where they are actually used 2025-09-11 12:49:13 +02:00
Gennaro Prota
0187aa3d16 Always use braces with if-statements
Reason: Consistency and safety.
2025-09-11 12:49:13 +02:00
Gennaro Prota
1cb4f79f55 Fix a typo in the documentation of operator>>=() 2025-09-11 12:49:13 +02:00
Gennaro Prota
3b14784fa0 Shorten some brief descriptions in the docs
This simply separates the first sentence from the rest with a blank
line, so that MrDocs takes just the first sentence as brief description.
2025-09-11 12:49:13 +02:00
Gennaro Prota
915950efb8 Add two missing spaces in a documentation comment 2025-09-11 12:49:13 +02:00
Gennaro Prota
a44af50e30 Also exclude bit_appender from the MrDocs documentation 2025-09-11 12:49:13 +02:00
Gennaro Prota
59c40f1978 Remove a pair of unneeded parentheses 2025-09-11 12:49:13 +02:00
Sébastien Loriot
6aafdcf80e qualify full path 2025-09-11 12:49:13 +02:00
Gennaro Prota
1eea7dc9e9 Fix nav.adoc 2025-09-11 12:49:13 +02:00
Gennaro Prota
f7237d08f2 Add a few links to the reference in the documentation index 2025-09-11 12:49:13 +02:00
Gennaro Prota
13693afa74 Add doc/package.json and doc/package-lock.json 2025-09-11 12:49:13 +02:00
Gennaro Prota
de0d6f1745 Exclude old, failing versions of Clang and GCC from CI 2025-09-11 12:49:13 +02:00
Gennaro Prota
023055938c Also build the documentation in the CI workflow 2025-09-11 12:49:13 +02:00
James E. King III
6a3775e91c Implement Boost.CI 2025.07 reusable workflow
This moves the majority of build logic into Boost.CI with configuration
options for consumers.  By moving build logic into Boost.CI we can fix
build issues faster for everyone.
2025-09-11 12:49:13 +02:00
Gennaro Prota
3673eb67af Rethrow any exception coming from the underlying vector, in the stream extractor 2025-09-11 12:49:13 +02:00
Gennaro Prota
4bd3dd25d6 Delete unary operator&() for dynamic_bitset::reference
Reason: That's better than declaring it as private and leaving it
undefined.
2025-09-11 12:49:13 +02:00
Gennaro Prota
85678044f2 Don't add a semicolon after "BOOST_RETHROW"
Reason: When exceptions are enabled, the semicolon is already included
in the macro expansion, and the resulting second semicolon (empty
statement) may give compiler warnings. Note how we added braces, for
when exceptions are disabled and the macro has an empty replacement
list.
2025-09-11 12:49:13 +02:00
Gennaro Prota
2c5d4dafc5 Add a missing blank line 2025-09-11 12:49:13 +02:00
Gennaro Prota
3cdaaa77df Remove an unnecessary constructor definition 2025-09-11 12:49:13 +02:00
Gennaro Prota
dd5426c4a6 Remove an unnecessary implementation detail 2025-09-11 12:49:13 +02:00
Gennaro Prota
5d321779f8 Add a definition for the copy constructor of dynamic_bitset::reference
Reason: Implicit definition is deprecated, because the class has a
user-declared copy assignment operator.

This closes issue #62.
2025-09-11 12:49:13 +02:00
Gennaro Prota
e90c7c5074 Make scoped_temp_file non-copyable, as it should 2025-09-11 12:49:13 +02:00
Gennaro Prota
27c94d5a31 Remove a nonsensical typedef 2025-09-11 12:49:12 +02:00
Gennaro Prota
1cc0ea2d18 Don't use lowerCamelCase for template type parameters 2025-09-11 12:49:12 +02:00
Gennaro Prota
7f88f43c3e Copy edit a comment 2025-09-11 12:49:12 +02:00
Gennaro Prota
e478613276 Remove a few unneeded permission notices 2025-09-11 12:49:12 +02:00
Gennaro Prota
970624a2fe Port the documentation to MrDocs and Antora 2025-09-11 12:49:12 +02:00
Gennaro Prota
9cbb307df1 Reformat all the C++ code (with ClangFormat) 2025-09-11 12:49:12 +02:00
Gennaro Prota
e6eb4d62e7 Add a ClangFormat configuration file
This specifies a more readable style with respect to the existing one.
I'll reformat the code with the next commit.
2025-09-11 12:49:12 +02:00
Gennaro Prota
7df7ebd808 Move all the function definitions to a separate file
Reason: Improving readability of the class template declaration.

This separation was not originally possible due to limitations in older
compilers (see the removed comment at the start of the definition of
dynamic_bitset), but is now feasible.
2025-09-11 12:49:04 +02:00
Gennaro Prota
5bd37d352a Leverage core::popcount() in the implementation of count()
Reason: This significantly simplifies the code, replacing a previous
complex and error-prone implementation.
2025-09-11 12:36:49 +02:00
Gennaro Prota
ad7d867a83 Fix some inconsistent placement of const qualifiers 2025-09-11 12:36:49 +02:00
Gennaro Prota
f56b3dde37 Assert on the precondition to pop_back() 2025-09-11 12:36:49 +02:00
Gennaro Prota
32ae43ef6d Make the swap() functions noexcept 2025-09-11 12:36:49 +02:00
Gennaro Prota
92789a9f61 Remove a misleading comment 2025-09-11 12:36:49 +02:00
Gennaro Prota
f801c2ced8 Remove a redundant assertion
We already assert that the two bitsets have the same size and, since
they have the same block_type, that implies they have the same number of
blocks.
2025-09-11 12:36:49 +02:00
Gennaro Prota
6e17428110 Remove a top-level const qualifier for a function parameter 2025-09-11 12:36:49 +02:00
Gennaro Prota
0f3612bd4a Add a missing const qualifier in a test function 2025-09-11 12:36:49 +02:00
Gennaro Prota
be94d262e4 Use BOOST_TEST(), not assert(), for test cases 2025-09-11 12:36:49 +02:00
Gennaro Prota
8235c9c523 Remove other workarounds for obsolete compilers 2025-09-11 12:36:49 +02:00
Gennaro Prota
072714abdc Don't misuse the term "precondition" in the documentation
If you guarantee some behavior, e.g. throwing an exception, it's not
really a precondition.
2025-09-11 12:36:49 +02:00
Gennaro Prota
a87502c04f Clean up detail/lowest_bit.hpp (mostly, reformat) 2025-09-11 12:36:49 +02:00
Gennaro Prota
98964c77c9 Remove a naive comment
If you are asserting on it at the beginning of the function, it's
clearly a precondition :-).
2025-09-11 12:36:49 +02:00
Gennaro Prota
68e48485b2 Replace the references to the SGI documentation
This commit just removes all the links to the SGI documentation and
replaces most of them with links to cppreference.com. The SGI docs were
likely used by Jeremy Siek at the time because they were a good and
clear reference. But we have cppreference.com now, which is much better.
And, in the event it disappears, we can still revert this commit.

Some links have simply been removed (e.g. those to the documentation of
basic_string, which really didn't seem opportune).
2025-09-11 12:36:49 +02:00
Gennaro Prota
2c31089bb2 Remove inconsistent uses of title case 2025-09-11 12:36:49 +02:00
Gennaro Prota
cdbcfd3853 Remove trailing whitespace 2025-09-11 12:36:48 +02:00
Gennaro Prota
55ca6c1449 Remove an unneeded #include directive in a test file 2025-09-11 12:36:48 +02:00
Gennaro Prota
20a866a032 Remove a tab character in a test file 2025-09-11 12:36:48 +02:00
Gennaro Prota
bf53144cd7 Remove a superfluous #include directive 2025-09-11 12:36:48 +02:00
Gennaro Prota
8d5dee07be Remove superfluous parentheses around a macro name 2025-09-11 12:36:48 +02:00
Gennaro Prota
e16b7bf01a Copy edit the readme
Note how I removed the "Directories" paragraph, as it just stated the
obvious.
2025-09-11 12:36:48 +02:00
Gennaro Prota
0a3198a2f0 Remove an unused, junk function template 2025-09-11 12:36:48 +02:00
Gennaro Prota
17bf6c27c8 Consistently use BOOST_ASSERT() in the implementation
Note: Not in the unit tests, which better do without the dependency.
2025-09-11 12:36:48 +02:00
Gennaro Prota
174050bee8 Remove a workaround for CodeWarrior 8 2025-09-11 12:36:48 +02:00
Gennaro Prota
9e164b9db7 Remove a spurious #undef directive
The #undef'd macro wasn't actually defined anywhere.
2025-09-11 12:36:48 +02:00
Gennaro Prota
b051052884 Declare some internal details as private
They had been accidentally made public.
2025-09-11 12:36:48 +02:00
Gennaro Prota
f2db3e80d6 Remove some redundant access specifiers 2025-09-11 12:36:48 +02:00
Gennaro Prota
a9a0d152d9 Remove a hopefully outdated workaround 2025-09-11 12:36:48 +02:00
Gennaro Prota
240c721d88 Remove a nonsensical usage of boost::addressof
Because `dynamic_bitset` doesn't overload unary `operator &`.
2025-09-11 12:36:48 +02:00
22 changed files with 781 additions and 937 deletions

View File

@@ -94,10 +94,10 @@ jobs:
cd dynamic_bitset
cd doc
bash ./build_antora.sh
bash ./build_docs.sh
# Antora returns zero even if it fails, so we check if the site directory exists.
if [ ! -d "html" ]
if [ ! -d "build/site" ]
then
echo "Antora build failed"
exit 1
@@ -107,4 +107,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: antora-docs-${{ matrix.name }}
path: doc/html
path: doc/build/site

View File

@@ -1,57 +0,0 @@
import generate ;
import path ;
import property-set ;
import virtual-target ;
path-constant HERE : . ;
make html/index.html : build_antora.sh : @run-script ;
generate files-to-install : html/index.html : <generating-rule>@delayed-glob ;
install install
: files-to-install
: <location>html
<install-source-root>html/dynamic_bitset
;
explicit html/index.html files-to-install ;
# this runs the antora script
actions run-script
{
bash $(>)
}
# this globs after its sources are created
rule delayed-glob ( project name : property-set : sources * )
{
for local src in $(sources)
{
# the next line causes the source to be generated immediately
# and not later (which it normally would)
UPDATE_NOW [ $(src).actualize ] ;
}
# we need to construct the path to the globbed directory;
# this path would be <current-project>/antora
local root = [ path.root html [ $(project).location ] ] ;
local files ;
# actual globbing happens here
for local file in [ path.glob-tree $(root) : * ]
{
# we have to skip directories, because our match expression accepts anything
if [ CHECK_IF_FILE $(file) ]
{
# we construct a list of targets to copy
files += [ virtual-target.from-file $(file:D=) : $(file:D) : $(project) ] ;
}
}
# we prepend empty usage requirements to the result
return [ property-set.empty ] $(files) ;
}
###############################################################################
alias boostdoc ;
explicit boostdoc ;
alias boostrelease : install ;
explicit boostrelease ;

View File

@@ -18,9 +18,6 @@ else
PLAYBOOK=$1
fi
SCRIPT_DIR=$( dirname -- "${BASH_SOURCE[0]}" )
cd "$SCRIPT_DIR"
echo "Installing npm dependencies..."
npm ci

View File

@@ -13,6 +13,7 @@
site:
title: Boost.DynamicBitset
url: https://antora.cppalliance.org/develop/lib/doc
start_page: dynamic_bitset::index.adoc
robots: allow
keys:
@@ -24,9 +25,6 @@ content:
start_path: doc
edit_url: 'https://github.com/boostorg/dynamic_bitset/edit/{refname}/{path}'
output:
dir: html
ui:
bundle:
url: https://github.com/boostorg/website-v2-docs/releases/download/ui-master/ui-bundle.zip

View File

@@ -46,11 +46,12 @@ an unsigned long `n`, the bit at position `i` of the bitset has the same value
as `(n >> i) & 1`.
== Rationale
Because of the proxy reference type, `dynamic_bitset` is not a
https://en.cppreference.com/w/cpp/named_req/Container.html[Container] and its
iterators do not satisfy the requirements for a LegacyForwardIterator. This
means that its iterators are not usable with many standard algorithms. However,
`dynamic_bitset` provides C++20 iterators which can be used with ranges.
Because of the proxy reference type, `dynamic_bitset` is not a <a
href="https://en.cppreference.com/w/cpp/named_req/Container.html">Container</a>
and its iterators do not satisfy the requirements for a LegacyForwardIterator.
This means that its iterators are not usable with many standard algorithms.
However, `dynamic_bitset` provides C++20 iterators which can be used with
ranges.
Some people prefer the name "toggle" to "flip". The name "flip" was chosen
because that is the name used in `std::bitset`. In fact, most of the function

188
doc/package-lock.json generated
View File

@@ -5,25 +5,38 @@
"requires": true,
"packages": {
"": {
"name": "doc",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@alandefreitas/antora-cpp-reference-extension": "^0.0.3",
"@antora/lunr-extension": "^1.0.0-alpha.10",
"@asciidoctor/tabs": "^1.0.0-beta.6",
"@cppalliance/antora-cpp-reference-extension": "^0.0.6",
"@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4",
"@cppalliance/asciidoctor-boost-links": "^0.0.2",
"antora": "^3.1.10"
}
},
"node_modules/@alandefreitas/antora-cpp-reference-extension": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@alandefreitas/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.3.tgz",
"integrity": "sha512-tgshdhPzjlfBaRG11jACMH9R4apAogTHAP2Y57qTj9m1YzeZqABNTRwor7uTCgB27bGLnWM73tT8EqguBEJ+yQ==",
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"license": "BSL-1.0",
"dependencies": {
"@antora/expand-path-helper": "^2.0.0",
"@antora/lunr-extension": "^1.0.0-alpha.8",
"@asciidoctor/tabs": "^1.0.0-beta.3",
"@cppalliance/antora-cpp-reference-extension": "^0.0.8",
"@cppalliance/antora-cpp-tagfiles-extension": "^0.0.5",
"@cppalliance/asciidoctor-boost-links": "^0.0.2"
},
"devDependencies": {
"@antora/cli": "3.1.10",
"@antora/site-generator": "3.1.10",
"antora": "3.1.10"
"axios": "^1.7.2",
"cache-directory": "^2.0.0",
"fast-glob": "^3.3.2",
"isomorphic-git": "^1.27.1",
"js-yaml": "^4.1.0"
}
},
"node_modules/@antora/asciidoc-loader": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.10.tgz",
"integrity": "sha512-np0JkOV37CK7V4eDZUZXf4fQuCKYW3Alxl8FlyzBevXi2Ujv29O82JLbHbv1cyTsvGkGNNB+gzJIx9XBsQ7+Nw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/logger": "3.1.10",
@@ -38,7 +51,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.10.tgz",
"integrity": "sha512-gp8u9aVM0w1DtWSsB5PwvEfFYKrooPENLhN58RAfdgTrcsTsWw+CDysFZPgEaHB0Y1ZbanR82ZH/f6JVKGcZfQ==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/logger": "3.1.10",
@@ -57,7 +69,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.10.tgz",
"integrity": "sha512-OT6ZcCA7LrtNfrAZUr3hFh+Z/1isKpsfnqFjCDC66NEMqIyzJO99jq0CM66rYlYhyX7mb5BwEua8lHcwpOXNow==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/expand-path-helper": "~3.0",
@@ -84,7 +95,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz",
"integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==",
"dev": true,
"license": "MPL-2.0",
"engines": {
"node": ">=16.0.0"
@@ -94,7 +104,6 @@
"version": "1.25.10",
"resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz",
"integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"async-lock": "^1.4.1",
@@ -120,7 +129,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.10.tgz",
"integrity": "sha512-3JJl4IIiTX00v/MirK603NoqIcHjGYAaRWt3Q4U03tI1Fv2Aho/ypO3FE45069jFf0Dx2uDJfp5kapb9gaIjdQ==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/asciidoc-loader": "3.1.10",
@@ -136,7 +144,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.10.tgz",
"integrity": "sha512-qi9ctgcKal8tZtWflVo66w+4zCJoBmUKRV+eA9aRRR09KDdU9r514vu1adWNgniPppISr90zD13V5l2JUy/2CQ==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/asciidoc-loader": "3.1.10"
@@ -158,7 +165,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.10.tgz",
"integrity": "sha512-DPR/0d1P+kr3qV4T0Gh81POEO/aCmNWIp/oLUYAhr0HHOcFzgpTUUoLStgcYynZPFRIB7EYKSab+oYSCK17DGA==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/expand-path-helper": "~3.0",
@@ -174,7 +180,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz",
"integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==",
"dev": true,
"license": "MPL-2.0",
"engines": {
"node": ">=16.0.0"
@@ -184,7 +189,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.10.tgz",
"integrity": "sha512-WSuIxEP2tVrhWtTj/sIrwBDjpi4ldB/1Kpiu4PXmY4/qeWP8thW6u8nXdwdDcWss5zqkZWjourvWKwVq7y8Wjg==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/expand-path-helper": "~3.0",
@@ -200,7 +204,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz",
"integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==",
"dev": true,
"license": "MPL-2.0",
"engines": {
"node": ">=16.0.0"
@@ -224,7 +227,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.10.tgz",
"integrity": "sha512-aLMK49nYsSB3mEZbLkmUXDAUYmscv2AFWu+5c3eqVGkQ6Wgyd79WQ6Bz3/TN9YqkzGL+PqGs0G39F0VQzD23Hw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/asciidoc-loader": "3.1.10"
@@ -237,7 +239,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.10.tgz",
"integrity": "sha512-JoEg8J8HVsnPmAgUrYSGzf0C8rQefXyCi/18ucy0utyfUvlJNsZvUbGUPx62Het9p0JP0FkAz2MTLyDlNdArVg==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/logger": "3.1.10",
@@ -252,7 +253,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.10.tgz",
"integrity": "sha512-UB8UmRYfkKgActTUlotdVS4FKGjaZgTnSXE7Fns1xb3/3HRanWvI+Yze1OmCkGC33cTpoQFnSYp7ySEH8LaiBw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@iarna/toml": "~2.2",
@@ -268,7 +268,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.10.tgz",
"integrity": "sha512-IbWJGh6LmsxJQ821h0B9JfooofFZBgFLZxsbp/IoTLkBFGLFAY5tDRvB6rvubfNLRoSjM8VjEUXGqVLlwZOb+g==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"vinyl": "~3.0"
@@ -281,7 +280,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.10.tgz",
"integrity": "sha512-NCULYtwUjIyr5FGCymhfG/zDVUmZ6pfmCPorka8mAzo4/GDx1T7bgaRL9rEIyf2AMqcm7apQiAz03mpU4kucsw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/asciidoc-loader": "3.1.10",
@@ -307,7 +305,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.10.tgz",
"integrity": "sha512-KY1j/y0uxC2Y7RAo4r4yKv9cgFm8aZoRylZXEODJnwj3tffbZ2ZdRzSWHp6fN0QX/Algrr9JNd9CWrjcj2f3Zw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/content-classifier": "3.1.10",
@@ -321,7 +318,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.10.tgz",
"integrity": "sha512-G4xcUWvgth8oeEQwiu9U1cE0miQtYHwKHOobUbDBt2Y6LlC5H31zQQmAyvMwTsGRlvYRgLVtG6j9d6JBwQ6w9Q==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/file-publisher": "3.1.10"
@@ -334,7 +330,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.10.tgz",
"integrity": "sha512-H1f5wI5a5HjLuE/Wexvc8NZy8w83Bhqjka7t1DbwOOqP+LyxFGLx/QbBVKdTtgFNDHVMtNBlplQq0ixeoTSh0A==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/expand-path-helper": "~3.0",
@@ -357,7 +352,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz",
"integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==",
"dev": true,
"license": "MPL-2.0",
"engines": {
"node": ">=16.0.0"
@@ -367,7 +361,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-3.0.0.tgz",
"integrity": "sha512-KIXb8WYhnrnwH7Jj21l1w+et9k5GvcgcqvLOwxqWLEd0uVZOiMFdqFjqbVm3M+zcrs1JXWMeh2LLvxBbQs3q/Q==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/expand-path-helper": "~3.0"
@@ -380,7 +373,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz",
"integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==",
"dev": true,
"license": "MPL-2.0",
"engines": {
"node": ">=16.0.0"
@@ -390,7 +382,6 @@
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz",
"integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==",
"dev": true,
"license": "MIT",
"dependencies": {
"asciidoctor-opal-runtime": "0.3.3",
@@ -412,31 +403,31 @@
}
},
"node_modules/@cppalliance/antora-cpp-reference-extension": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.8.tgz",
"integrity": "sha512-iacd5+4e3yYF8hdxFWfA326H04hjYoYnUbBwu5rW0Y3HlDBGNx9E9ub/igLuzVFPftNlldqucEWHqhzgl7yfKA==",
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-reference-extension/-/antora-cpp-reference-extension-0.0.6.tgz",
"integrity": "sha512-Weud5Cn9KAoU3+fSA4IZM7THAEA8VPhclH7EfU6SiKSp/Iy92vSItpZioTmVrn0DIVo9tIxxrJXBp5GpSFk6hg==",
"license": "BSL-1.0",
"dependencies": {
"@antora/expand-path-helper": "^2.0.0",
"axios": "^1.12.2",
"axios": "^1.7.2",
"cache-directory": "^2.0.0",
"fast-glob": "^3.3.3",
"isomorphic-git": "^1.33.2",
"fast-glob": "^3.3.2",
"isomorphic-git": "^1.27.1",
"js-yaml": "^4.1.0",
"semver": "^7.7.2"
"semver": "^7.6.3"
}
},
"node_modules/@cppalliance/antora-cpp-tagfiles-extension": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-tagfiles-extension/-/antora-cpp-tagfiles-extension-0.0.5.tgz",
"integrity": "sha512-ig6mktelQKpY0vepy8ilTne4kUWuGhhd5E2Oaf9CnucEuwYJ7rgpkQcNkp7ysk5zvnH1Ff4BVvcjuqsTpvY6QA==",
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@cppalliance/antora-cpp-tagfiles-extension/-/antora-cpp-tagfiles-extension-0.0.4.tgz",
"integrity": "sha512-dzb/QDZ+a5yk7vaEb2jNQ5p02XjA6LfPmLRWcxqb/MvpA9DHZKsPunFDy+yqY3eGy9zqNppunljy9TZUbeoczg==",
"license": "BSL-1.0",
"dependencies": {
"@antora/expand-path-helper": "^2.0.0",
"cache-directory": "^2.0.0",
"fast-xml-parser": "^4.5.3",
"fast-xml-parser": "^4.4.1",
"he": "^1.2.0",
"isomorphic-git": "^1.33.2"
"isomorphic-git": "^1.27.1"
}
},
"node_modules/@cppalliance/asciidoctor-boost-links": {
@@ -449,7 +440,6 @@
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"dev": true,
"license": "ISC"
},
"node_modules/@nodelib/fs.scandir": {
@@ -491,7 +481,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dev": true,
"license": "MIT",
"dependencies": {
"event-target-shim": "^5.0.0"
@@ -504,7 +493,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/antora/-/antora-3.1.10.tgz",
"integrity": "sha512-FcXPfqxi5xrGF2fTrFiiau45q8w0bzRcnfk97nxvpvztPDHX/lUOrBF/GpaGl1JT5K085VkI3/dbxTlvWK1jjw==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
"@antora/cli": "3.1.10",
@@ -527,7 +515,6 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz",
"integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"glob": "7.1.3",
@@ -553,7 +540,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.0.0"
@@ -575,13 +561,13 @@
}
},
"node_modules/axios": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
"integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
@@ -589,21 +575,18 @@
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
"integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
"dev": true,
"license": "Apache-2.0"
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true,
"license": "MIT"
},
"node_modules/bare-events": {
"version": "2.5.4",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
"integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
"dev": true,
"license": "Apache-2.0",
"optional": true
},
@@ -611,7 +594,6 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
"funding": [
{
"type": "github",
@@ -632,7 +614,6 @@
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -655,7 +636,6 @@
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"funding": [
{
"type": "github",
@@ -680,7 +660,6 @@
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "*"
@@ -755,7 +734,6 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.8"
@@ -765,7 +743,6 @@
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true,
"license": "MIT"
},
"node_modules/combined-stream": {
@@ -784,7 +761,6 @@
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
"integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=16"
@@ -794,14 +770,12 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true,
"license": "MIT"
},
"node_modules/convict": {
"version": "6.2.4",
"resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz",
"integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"lodash.clonedeep": "^4.5.0",
@@ -827,7 +801,6 @@
"version": "4.6.3",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
"integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "*"
@@ -953,7 +926,6 @@
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
"dev": true,
"license": "MIT",
"dependencies": {
"once": "^1.4.0"
@@ -1020,7 +992,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -1030,7 +1001,6 @@
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.8.x"
@@ -1040,14 +1010,12 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
"integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==",
"dev": true,
"license": "MIT"
},
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"dev": true,
"license": "MIT"
},
"node_modules/fast-glob": {
@@ -1070,7 +1038,6 @@
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -1080,7 +1047,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
"dev": true,
"license": "MIT"
},
"node_modules/fast-xml-parser": {
@@ -1158,9 +1124,9 @@
}
},
"node_modules/form-data": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
@@ -1177,7 +1143,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true,
"license": "ISC"
},
"node_modules/function-bind": {
@@ -1231,7 +1196,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -1273,7 +1237,6 @@
"version": "4.7.8",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
"integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"minimist": "^1.2.5",
@@ -1355,14 +1318,12 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
"integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
"dev": true,
"license": "MIT"
},
"node_modules/hpagent": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz",
"integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14"
@@ -1391,7 +1352,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true,
"funding": [
{
"type": "github",
@@ -1422,7 +1382,6 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dev": true,
"license": "ISC",
"dependencies": {
"once": "^1.3.0",
@@ -1456,15 +1415,6 @@
"node": ">=0.10.0"
}
},
"node_modules/is-git-ref-name-valid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-git-ref-name-valid/-/is-git-ref-name-valid-1.0.0.tgz",
"integrity": "sha512-2hLTg+7IqMSP9nNp/EVCxzvAOJGsAn0f/cKtF8JaBeivjH5UgE/XZo3iJ0AvibdE7KSF1f/7JbjBTB8Wqgbn/w==",
"license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -1508,9 +1458,9 @@
"license": "MIT"
},
"node_modules/isomorphic-git": {
"version": "1.34.0",
"resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.34.0.tgz",
"integrity": "sha512-J82yRa/4wm9VuOWSlI37I9Sa+n1gWaSWuKQk8zhpo6RqTW+ZTcK5c/KubLMcuVU3Btc+maRCa3YlRKqqY9q7qQ==",
"version": "1.32.1",
"resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.32.1.tgz",
"integrity": "sha512-NZCS7qpLkCZ1M/IrujYBD31sM6pd/fMVArK4fz4I7h6m0rUW2AsYU7S7zXeABuHL6HIfW6l53b4UQ/K441CQjg==",
"license": "MIT",
"dependencies": {
"async-lock": "^1.4.1",
@@ -1518,13 +1468,12 @@
"crc-32": "^1.2.0",
"diff3": "0.0.3",
"ignore": "^5.1.4",
"is-git-ref-name-valid": "^1.0.0",
"minimisted": "^2.0.0",
"pako": "^1.0.10",
"path-browserify": "^1.0.1",
"pify": "^4.0.1",
"readable-stream": "^3.4.0",
"sha.js": "^2.4.12",
"sha.js": "^2.4.9",
"simple-get": "^4.0.1"
},
"bin": {
@@ -1538,7 +1487,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
"integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -1560,7 +1508,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"license": "MIT",
"bin": {
"json5": "lib/cli.js"
@@ -1573,7 +1520,6 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"dev": true,
"license": "MIT"
},
"node_modules/lunr": {
@@ -1668,7 +1614,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -1699,7 +1644,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz",
"integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"progress": "^2.0.0"
@@ -1709,14 +1653,12 @@
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true,
"license": "MIT"
},
"node_modules/on-exit-leak-free": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=14.0.0"
@@ -1747,7 +1689,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -1757,14 +1698,12 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true,
"license": "MIT"
},
"node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -1786,7 +1725,6 @@
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz",
"integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==",
"dev": true,
"license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0",
@@ -1809,7 +1747,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz",
"integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"readable-stream": "^4.0.0",
@@ -1820,7 +1757,6 @@
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
"integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"dev": true,
"license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0",
@@ -1837,7 +1773,6 @@
"version": "11.2.2",
"resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz",
"integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==",
"dev": true,
"license": "MIT",
"dependencies": {
"colorette": "^2.0.7",
@@ -1863,7 +1798,6 @@
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
"integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"dev": true,
"license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0",
@@ -1880,7 +1814,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
"dev": true,
"license": "MIT"
},
"node_modules/possible-typed-array-names": {
@@ -1896,7 +1829,6 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6.0"
@@ -1906,14 +1838,12 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
"integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
"dev": true,
"license": "MIT"
},
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@@ -1929,7 +1859,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
"dev": true,
"license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
@@ -1960,7 +1889,6 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
"dev": true,
"license": "MIT"
},
"node_modules/readable-stream": {
@@ -1981,7 +1909,6 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 12.13.0"
@@ -1991,14 +1918,12 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
"dev": true,
"license": "ISC"
},
"node_modules/replace-ext": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
"integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10"
@@ -2008,7 +1933,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -2071,7 +1995,6 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -2081,7 +2004,6 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
"integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/semver": {
@@ -2137,7 +2059,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz",
"integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==",
"dev": true,
"license": "MIT"
},
"node_modules/simple-concat": {
@@ -2189,7 +2110,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz",
"integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0"
@@ -2199,7 +2119,6 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -2209,7 +2128,6 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">= 10.x"
@@ -2219,7 +2137,6 @@
"version": "2.22.1",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
"integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
"dev": true,
"license": "MIT",
"dependencies": {
"fast-fifo": "^1.3.2",
@@ -2242,7 +2159,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -2267,7 +2183,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
"integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
"dev": true,
"license": "MIT",
"dependencies": {
"streamx": "^2.12.5"
@@ -2277,7 +2192,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
"integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"b4a": "^1.6.4"
@@ -2287,7 +2201,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
"integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
"dev": true,
"license": "MIT",
"dependencies": {
"real-require": "^0.2.0"
@@ -2337,7 +2250,6 @@
"version": "3.19.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
"integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"dev": true,
"license": "BSD-2-Clause",
"optional": true,
"bin": {
@@ -2351,7 +2263,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz",
"integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.11"
@@ -2367,7 +2278,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz",
"integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==",
"dev": true,
"license": "MIT",
"dependencies": {
"clone": "^2.1.2",
@@ -2404,7 +2314,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true,
"license": "MIT"
},
"node_modules/wrappy": {
@@ -2426,7 +2335,6 @@
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
"license": "ISC",
"engines": {
"node": ">=10"
@@ -2436,7 +2344,6 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz",
"integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==",
"dev": true,
"license": "MIT",
"dependencies": {
"buffer-crc32": "~0.2.3",
@@ -2450,7 +2357,6 @@
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
"integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
"dev": true,
"license": "MIT",
"dependencies": {
"buffer-crc32": "~0.2.3"

View File

@@ -1,15 +1,21 @@
{
"devDependencies": {
"@antora/cli": "3.1.10",
"@antora/site-generator": "3.1.10",
"antora": "3.1.10"
"name": "doc",
"version": "1.0.0",
"description": "The documentation for the dynamic_bitset library is the top-level index.html file.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@antora/expand-path-helper": "^2.0.0",
"@antora/lunr-extension": "^1.0.0-alpha.8",
"@asciidoctor/tabs": "^1.0.0-beta.3",
"@cppalliance/antora-cpp-reference-extension": "^0.0.8",
"@cppalliance/antora-cpp-tagfiles-extension": "^0.0.5",
"@cppalliance/asciidoctor-boost-links": "^0.0.2"
"@alandefreitas/antora-cpp-reference-extension": "^0.0.3",
"@antora/lunr-extension": "^1.0.0-alpha.10",
"@asciidoctor/tabs": "^1.0.0-beta.6",
"@cppalliance/antora-cpp-reference-extension": "^0.0.6",
"@cppalliance/antora-cpp-tagfiles-extension": "^0.0.4",
"@cppalliance/asciidoctor-boost-links": "^0.0.2",
"antora": "^3.1.10"
}
}

View File

@@ -1,16 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=doc/html/index.html">
<script>location="doc/html/index.html"</script>
<title>Automatic redirection</title>
</head>
<body>
<p>Automatic redirection failed. Please click <a href="doc/html/index.html">here</a>.</p>
<p>© Copyright 2025 Gennaro Prota.</p>
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy
at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
</body>
</html>

View File

@@ -1,7 +1,7 @@
// -----------------------------------------------------------
//
// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
// Copyright (c) 2003-2006, 2008, 2025 Gennaro Prota
// Copyright (c) 2003-2006, 2008 Gennaro Prota
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
@@ -34,6 +34,28 @@ make_non_const( T t )
# define BOOST_DYNAMIC_BITSET_WRAP_CONSTANT( expr ) ( expr )
#endif
// A couple of macros to cope with libraries without locale
// support. The first macro must be used to declare a reference
// to a ctype facet. The second one to widen a char by using
// that ctype object. If facets and locales aren't available
// the first macro is a no-op and the second one just expands
// to its parameter c.
//
#if defined BOOST_USE_FACET
# define BOOST_DYNAMIC_BITSET_CTYPE_FACET( ch, name, loc ) \
const std::ctype< ch > & name = \
BOOST_USE_FACET( std::ctype< ch >, loc ) /**/
# define BOOST_DYNAMIC_BITSET_WIDEN_CHAR( fac, c ) \
( fac.widen( c ) )
#else
# define BOOST_DYNAMIC_BITSET_CTYPE_FACET( ch, name, loc ) /**/
# define BOOST_DYNAMIC_BITSET_WIDEN_CHAR( fac, c ) c
#endif
#if ! defined( BOOST_NO_CXX11_HDR_FUNCTIONAL ) && ! defined( BOOST_DYNAMIC_BITSET_NO_STD_HASH )
# define BOOST_DYNAMIC_BITSET_SPECIALIZE_STD_HASH
#endif
@@ -42,10 +64,4 @@ make_non_const( T t )
# define BOOST_DYNAMIC_BITSET_USE_CPP17_OR_LATER
#endif
#if ( defined( _MSVC_LANG ) && _MSVC_LANG >= 202002L ) || __cplusplus >= 202002L
# define BOOST_DYNAMIC_BITSET_CONSTEXPR20 constexpr
#else
# define BOOST_DYNAMIC_BITSET_CONSTEXPR20
#endif
#endif // include guard

View File

@@ -16,6 +16,7 @@
#ifndef BOOST_DETAIL_DYNAMIC_BITSET_HPP
#define BOOST_DETAIL_DYNAMIC_BITSET_HPP
#include "boost/config.hpp"
#include <cstddef>
#include <memory>
#include <type_traits>
@@ -31,7 +32,13 @@ class is_container
{
private:
template< typename U >
static decltype( std::declval< U >().resize( std::size_t{} ), std::declval< U >()[ 0 ], typename U::value_type(), std::is_same< typename U::value_type, Block >{}, std::true_type{} ) test( int );
static decltype(
std::declval< U >().resize( std::size_t{} ),
std::declval< U >()[ 0 ],
typename U::value_type(),
std::is_same< typename U::value_type, Block >{},
std::true_type{}
) test( int );
template< typename >
static std::false_type test( ... );
@@ -40,18 +47,18 @@ public:
static constexpr bool value = decltype( test< AllocatorOrContainer >( 0 ) )::value;
};
template< typename AllocatorOrContainer, bool IsContainer >
template< typename AllocatorOrContainer, typename Block, bool IsContainer >
class allocator_type_extractor_impl;
template< typename AllocatorOrContainer >
class allocator_type_extractor_impl< AllocatorOrContainer, false >
template< typename AllocatorOrContainer, typename Block >
class allocator_type_extractor_impl< AllocatorOrContainer, Block, false >
{
public:
typedef AllocatorOrContainer type;
};
template< typename AllocatorOrContainer >
class allocator_type_extractor_impl< AllocatorOrContainer, true >
template< typename AllocatorOrContainer, typename Block >
class allocator_type_extractor_impl< AllocatorOrContainer, Block, true >
{
public:
typedef typename AllocatorOrContainer::allocator_type type;
@@ -63,13 +70,15 @@ class allocator_type_extractor
public:
typedef typename allocator_type_extractor_impl<
AllocatorOrContainer,
is_container< AllocatorOrContainer, Block >::value >::type type;
Block,
is_container< AllocatorOrContainer, Block >::value
>::type type;
};
template< typename T, int amount, int width /* = default */ >
struct shifter
{
static BOOST_DYNAMIC_BITSET_CONSTEXPR20 void
static void
left_shift( T & v )
{
amount >= width ? ( v = 0 )
@@ -82,6 +91,30 @@ struct value_to_type
{
};
// Some library implementations simply return a dummy
// value such as
//
// size_type(-1) / sizeof(T)
//
// from vector<>::max_size. This tries to get more
// meaningful info.
//
template< typename T >
typename T::size_type
vector_max_size_workaround( const T & v )
noexcept
{
typedef typename T::allocator_type allocator_type;
const allocator_type & alloc = v.get_allocator();
typename std::allocator_traits< allocator_type >::size_type alloc_max =
std::allocator_traits< allocator_type >::max_size( alloc );
const typename T::size_type container_max = v.max_size();
return alloc_max < container_max ? alloc_max : container_max;
}
// for static_asserts
template< typename T >
struct allowed_block_type
@@ -131,13 +164,16 @@ BOOST_dynamic_bitset_is_numeric( signed char );
BOOST_dynamic_bitset_is_numeric( short );
BOOST_dynamic_bitset_is_numeric( int );
BOOST_dynamic_bitset_is_numeric( long );
BOOST_dynamic_bitset_is_numeric( long long );
BOOST_dynamic_bitset_is_numeric( unsigned char );
BOOST_dynamic_bitset_is_numeric( unsigned short );
BOOST_dynamic_bitset_is_numeric( unsigned int );
BOOST_dynamic_bitset_is_numeric( unsigned long );
BOOST_dynamic_bitset_is_numeric( unsigned long long );
#if defined( BOOST_HAS_LONG_LONG )
BOOST_dynamic_bitset_is_numeric( ::boost::long_long_type );
BOOST_dynamic_bitset_is_numeric( ::boost::ulong_long_type );
#endif
// intentionally omitted
// BOOST_dynamic_bitset_is_numeric(float);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv=refresh content="0; URL=doc/html/index.html">
<meta http-equiv=refresh content="0; URL=dynamic_bitset.html">
<title>Automatic redirection</title>
</head>
<body>
Automatic redirection failed, please go to
<a href="dynamic_bitset.html">doc/html/index.html</a>.&nbsp;<hr>
<a href="dynamic_bitset.html">dynamic_bitset.html</a>.&nbsp;<hr>
<p>© Copyright Beman Dawes, 2001</p>
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<explicit-failures-markup>
<library name="dynamic_bitset">
<mark-unusable>
<toolset name="*c++98"/>
<toolset name="*gnu98"/>
<toolset name="*c++0x"/>
<toolset name="*gnu0x"/>
<toolset name="msvc-7.1"/>
<toolset name="msvc-8.*"/>
<toolset name="msvc-9.*"/>
<toolset name="msvc-10.*"/>
<toolset name="msvc-11.*"/>
<note author="Gennaro Prota">DynamicBitset requires at least C++11.</note>
</mark-unusable>
</library>
</explicit-failures-markup>

View File

@@ -6,6 +6,7 @@
"Chuck Allison"
],
"description": "The dynamic_bitset template represents a set of bits. It provides access to the value of individual bits via operator[] and provides all of the bitwise operators that one can apply to builtin integers, such as operator& and operator<<. The number of bits in the set can change at runtime.",
"documentation": "dynamic_bitset.html",
"category": [
"Data structures"
],

View File

@@ -22,13 +22,14 @@
#include "boost/limits.hpp"
#include <algorithm>
#include <assert.h> // <cassert> is sometimes macro-guarded :-(
#include <iterator>
#include <locale>
#include <sstream>
#include <string>
#include <type_traits>
#include <vector>
#if ! defined( BOOST_NO_STD_LOCALE )
# include <locale>
#endif
template< typename T >
using small_vector = boost::container::small_vector< T, 8 >;
@@ -87,6 +88,20 @@ private:
boost::filesystem::path m_path;
};
#if defined BOOST_NO_STD_LOCALE
template< typename Stream >
bool
is_one_or_zero( const Stream & /*s*/, char c )
{
return c == '1' || c == '0';
}
template< typename Stream >
bool
is_white_space( const Stream & /*s*/, char c )
{
return std::isspace( c );
}
#else
template< typename Stream, typename Ch >
bool
is_one_or_zero( const Stream & s, Ch c )
@@ -103,6 +118,7 @@ is_white_space( const Stream & s, Ch c )
{
return std::isspace( c, s.getloc() );
}
#endif
template< typename Stream >
bool
@@ -227,12 +243,6 @@ struct bitset_test
BOOST_TEST( b.begin() <= b.end() );
BOOST_TEST( b.end() > b.begin() );
BOOST_TEST( b.end() >= b.begin() );
BOOST_TEST( b.rbegin() < b.rend() );
BOOST_TEST( b.rbegin() <= b.rend() );
BOOST_TEST( b.rend() > b.rbegin() );
BOOST_TEST( b.rend() >= b.rbegin() );
typename Bitset::const_iterator it = b.begin();
it += b.size() / 2;
BOOST_TEST( *it == b[ b.size() / 2 ] );
@@ -240,7 +250,6 @@ struct bitset_test
BOOST_TEST( *it == b[ 0 ] );
} else {
BOOST_TEST( b.begin() == b.end() );
BOOST_TEST( b.rbegin() == b.rend() );
}
if ( b.size() > 1 ) {
@@ -248,8 +257,6 @@ struct bitset_test
BOOST_TEST( *( 1 + b.begin() ) == b[ 1 ] );
BOOST_TEST( *( b.end() - 1 ) == b[ b.size() - 1 ] );
}
BOOST_TEST( b.end() - b.begin() == static_cast< std::ptrdiff_t >( b.size() ) );
}
static void
@@ -281,6 +288,8 @@ struct bitset_test
}
// TODO from_block_range (below) should be splitted
// PRE: std::equal(first1, last1, first2) == true
static void
from_block_range( const std::vector< Block > & blocks )
{
@@ -346,6 +355,7 @@ struct bitset_test
{
BOOST_TEST( b.max_size() > 0 );
BOOST_TEST( b.max_size() >= b.size() );
BOOST_TEST( b.max_size() / Bitset::bits_per_block <= std::allocator_traits< typename Bitset::allocator_type >::max_size( b.get_allocator() ) );
}
// move constructor (absent from std::bitset)
@@ -379,16 +389,17 @@ struct bitset_test
BOOST_TEST( copy1 == rhs );
BOOST_TEST( copy2 == lhs );
// references must be stable under a swap
for ( typename Bitset::size_type i = 0; i < lhs.size(); ++i ) {
Bitset b1( lhs );
Bitset b2( rhs );
typename Bitset::reference ref = b1[ i ];
const bool x = ref;
bool x = ref;
if ( i < b2.size() )
b2[ i ] = ! x; // make sure b2[i] is different
b1.swap( b2 );
BOOST_TEST( b2[ i ] == x ); // now it must be equal
// b2.flip( i );
BOOST_TEST( b2[ i ] == x ); // now it must be equal..
b2.flip( i );
// Since we transformed the Allocator parameter into
// AllocatorOrContainer, the following is no longer true (think e.g.
// of boost::container::small_vector).
@@ -403,14 +414,11 @@ struct bitset_test
Bitset b( lhs );
// Test no change in size
b.resize( lhs.size(), true);
BOOST_TEST( b == lhs );
b.resize( lhs.size(), false );
b.resize( lhs.size() );
BOOST_TEST( b == lhs );
// Test increase in size with new bits to true
// Test increase in size
b.resize( lhs.size() * 2, true );
BOOST_TEST( b.size() == lhs.size() * 2 );
std::size_t i;
for ( i = 0; i < lhs.size(); ++i )
@@ -420,17 +428,8 @@ struct bitset_test
// Test decrease in size
b.resize( lhs.size() );
BOOST_TEST( b.size() == lhs.size() );
for ( i = 0; i < lhs.size(); ++i )
BOOST_TEST( b[ i ] == lhs[ i ] );
// Test increase in size with new bits to false
b.resize( lhs.size() * 2, false );
BOOST_TEST( b.size() == lhs.size() * 2 );
for ( i = 0; i < lhs.size(); ++i )
BOOST_TEST( b[ i ] == lhs[ i ] );
for ( ; i < b.size(); ++i )
BOOST_TEST( b[ i ] == false );
}
static void
@@ -514,7 +513,7 @@ struct bitset_test
b.append( value );
BOOST_TEST( b.size() == lhs.size() + bits_per_block );
for ( int i = 0; i < bits_per_block; ++i )
BOOST_TEST( b[ lhs.size() + i ] == nth_bit( value, i ) );
BOOST_TEST( b[ lhs.size() + i ] == bool( ( value >> i ) & 1 ) );
}
static void
@@ -529,20 +528,6 @@ struct bitset_test
BOOST_TEST( b == c );
}
static void
append_block_range_input_iter( const Bitset & lhs )
{
if ( ! std::is_same< Block, unsigned char >::value ) {
Bitset b( lhs ), c( lhs );
std::istringstream ss( "1 2 3" );
b.append( std::istream_iterator< Block >( ss ), std::istream_iterator< Block >() );
c.append( 1 );
c.append( 2 );
c.append( 3 );
BOOST_TEST( b == c );
}
}
// operator[] and reference members
// PRE: b[i] == bit_vec[i]
static void
@@ -807,7 +792,6 @@ struct bitset_test
std::size_t N = lhs.size();
Bitset prev( lhs );
lhs.flip();
BOOST_TEST( lhs.size() == N );
// Toggles all the bits in lhs
for ( std::size_t I = 0; I < N; ++I )
BOOST_TEST( lhs[ I ] == ! prev[ I ] );
@@ -821,7 +805,6 @@ struct bitset_test
if ( pos < N ) {
Bitset prev( lhs );
lhs.flip( pos );
BOOST_TEST( lhs.size() == N );
// Toggles the bit at position pos in lhs
BOOST_TEST( lhs[ pos ] == ! prev[ pos ] );
@@ -893,6 +876,7 @@ struct bitset_test
}
}
// to_string()
static void
to_string( const Bitset & b )
{
@@ -1151,7 +1135,6 @@ struct bitset_test
BOOST_TEST( diff );
}
} else {
BOOST_TEST( a.size() == b.size() );
for ( std::size_t I = 0; I < a.size(); ++I )
BOOST_TEST( a[ I ] == b[ I ] );
}
@@ -1184,7 +1167,7 @@ struct bitset_test
return false;
// if (a[i] = b[j]) skip to next
}
return a.size() < b.size();
return ( a.size() < b.size() );
}
}
@@ -1484,6 +1467,8 @@ struct bitset_test
} else {
if ( ! did_throw )
BOOST_TEST( s.width() == 0 );
// This test require that os be an output _and_ input stream.
// Of course dynamic_bitset's operator << doesn't require that.
size_type total_len = w <= 0 || static_cast< size_type >( w ) < b.size() ? b.size() : static_cast< size_type >( w );
const string_type padding( total_len - b.size(), fill_char );
@@ -1604,7 +1589,27 @@ struct bitset_test
BOOST_TEST( ! has_flags( is, std::ios::failbit ) );
if ( num_digits == 0 && after_digits == len ) {
// The VC6 library has a bug/non-conformity in the sentry
// constructor. It uses code like
// // skip whitespaces...
// int_type _C = rdbuf()->sgetc();
// while (!_Tr::eq_int_type(_Tr::eof(), _C) ...
//
// For an empty file the while statement is never "entered"
// and the stream remains in good() state; thus the sentry
// object gives "true" when converted to bool. This is worse
// than the case above, because not only failbit is not set,
// but no bit is set at all, end we end up clearing the
// bitset though there's nothing in the file to be extracted.
// Note that the dynamic_bitset docs say a sentry object is
// constructed and then converted to bool, thus we rely on
// what the underlying library does.
//
#if ! defined( BOOST_DINKUMWARE_STDLIB ) || ( BOOST_DINKUMWARE_STDLIB >= 306 )
BOOST_TEST( b == a_copy );
#else
BOOST_TEST( b.empty() == true );
#endif
} else {
String sub = str.substr( after_spaces, num_digits );
BOOST_TEST( b == Bitset( sub ) );

View File

@@ -20,9 +20,8 @@
#if ! defined( BOOST_NO_CXX11_ALLOCATOR )
# include <cstdlib>
# include <new>
template< typename T >
template< class T >
class minimal_allocator
{
public:
@@ -171,13 +170,16 @@ run_test_cases()
run_numeric_ctor_tests< Tests, short int >();
run_numeric_ctor_tests< Tests, int >();
run_numeric_ctor_tests< Tests, long int >();
run_numeric_ctor_tests< Tests, long long >();
run_numeric_ctor_tests< Tests, unsigned char >();
run_numeric_ctor_tests< Tests, unsigned short >();
run_numeric_ctor_tests< Tests, unsigned int >();
run_numeric_ctor_tests< Tests, unsigned long >();
run_numeric_ctor_tests< Tests, unsigned long long >();
#if defined( BOOST_HAS_LONG_LONG )
run_numeric_ctor_tests< Tests, ::boost::long_long_type >();
run_numeric_ctor_tests< Tests, ::boost::ulong_long_type >();
#endif
}
//=====================================================================
// Test construction from a string
@@ -541,19 +543,6 @@ run_test_cases()
blocks[ 2 ] = all_1s;
Tests::append_block_range( a, blocks );
}
// Test with input iterators
{
bitset_type b;
Tests::append_block_range_input_iter( b );
}
{
bitset_type b( "0" );
Tests::append_block_range_input_iter( b );
}
{
bitset_type b( long_string.c_str() );
Tests::append_block_range_input_iter( b );
}
//=====================================================================
// Test bracket operator
{
@@ -603,11 +592,6 @@ run_test_cases()
bitset_test< Bitset >::max_size( b );
}
#endif
{
typedef boost::dynamic_bitset< Block, small_vector< Block > > Bitset;
Bitset b;
bitset_test< Bitset >::max_size( b );
}
// Test copy-initialize with default constructor
{
bitset_type b[ 1 ] = {};
@@ -626,8 +610,10 @@ main()
run_test_cases< unsigned int, small_vector< unsigned int > >();
run_test_cases< unsigned long >();
run_test_cases< unsigned long, small_vector< unsigned long > >();
run_test_cases< unsigned long long >();
run_test_cases< unsigned long long, small_vector< unsigned long long > >();
#ifdef BOOST_HAS_LONG_LONG
run_test_cases< ::boost::ulong_long_type >();
run_test_cases< ::boost::ulong_long_type, small_vector< ::boost::ulong_long_type > >();
#endif
return boost::report_errors();
}

View File

@@ -11,6 +11,7 @@
// -----------------------------------------------------------
#include "bitset_test.hpp"
#include "boost/config.hpp"
#include "boost/dynamic_bitset/dynamic_bitset.hpp"
template< typename Block, typename AllocatorOrContainer = std::allocator< Block > >
@@ -21,7 +22,7 @@ run_test_cases()
typedef bitset_test< bitset_type > Tests;
const int bits_per_block = bitset_type::bits_per_block;
const std::string long_string = get_long_string();
std::string long_string = get_long_string();
//=====================================================================
// Test operator&=
@@ -208,13 +209,6 @@ run_test_cases()
}
//=====================================================================
// Test b.set(pos, len)
// case size is 0
{
bitset_type b( std::string( "10" ) ) ;
Tests::set_segment( b, 0, 0, true );
Tests::set_segment( b, 0, 0, false );
}
{ // case size is 1
bitset_type b( std::string( "0" ) );
Tests::set_segment( b, 0, 1, true );
@@ -380,8 +374,10 @@ main()
run_test_cases< unsigned int, small_vector< unsigned int > >();
run_test_cases< unsigned long >();
run_test_cases< unsigned long, small_vector< unsigned long > >();
run_test_cases< unsigned long long >();
run_test_cases< unsigned long long, small_vector< unsigned long long > >();
#ifdef BOOST_HAS_LONG_LONG
run_test_cases< ::boost::ulong_long_type >();
run_test_cases< ::boost::ulong_long_type, small_vector< ::boost::ulong_long_type > >();
#endif
return boost::report_errors();
}

View File

@@ -11,6 +11,7 @@
// -----------------------------------------------------------
#include "bitset_test.hpp"
#include "boost/config.hpp"
#include "boost/dynamic_bitset/dynamic_bitset.hpp"
#include "boost/limits.hpp"
#include <assert.h>
@@ -24,8 +25,8 @@ run_test_cases()
typedef bitset_test< bitset_type > Tests;
// typedef typename bitset_type::size_type size_type; // unusable with Borland 5.5.1
const std::string long_string = get_long_string();
const std::size_t ul_width = std::numeric_limits< unsigned long >::digits;
std::string long_string = get_long_string();
std::size_t ul_width = std::numeric_limits< unsigned long >::digits;
//=====================================================================
// Test b.empty()
@@ -322,7 +323,6 @@ run_test_cases()
// first bit on or off
bitset_type b( 1, 1ul );
Tests::find_first( b );
b.set( 0, false );
Tests::find_first( b, 0, false );
}
{
@@ -330,7 +330,6 @@ run_test_cases()
bitset_type b( 4 * bitset_type::bits_per_block - 1, 0ul );
b.set( b.size() - 1 );
Tests::find_first( b );
b.set( b.size() - 1, false );
Tests::find_first( b, 0, false );
}
//=====================================================================
@@ -480,11 +479,6 @@ run_test_cases()
bitset_type a, b;
Tests::operator_less_than( a, b );
}
{
bitset_type a;
bitset_type b( std::string( "1" ) );
Tests::operator_less_than( a, b );
}
{
bitset_type a( std::string( "0" ) ), b( std::string( "0" ) );
Tests::operator_less_than( a, b );
@@ -505,10 +499,6 @@ run_test_cases()
bitset_type a( std::string( "10" ) ), b( std::string( "111" ) );
Tests::operator_less_than( a, b );
}
{
bitset_type a( std::string( "11" ) ), b( std::string( "111" ) );
Tests::operator_less_than( a, b );
}
{
bitset_type a( long_string ), b( long_string );
Tests::operator_less_than( a, b );
@@ -834,8 +824,10 @@ main()
run_test_cases< unsigned int, small_vector< unsigned int > >();
run_test_cases< unsigned long >();
run_test_cases< unsigned long, small_vector< unsigned long > >();
run_test_cases< unsigned long long >();
run_test_cases< unsigned long long, small_vector< unsigned long long > >();
#ifdef BOOST_HAS_LONG_LONG
run_test_cases< ::boost::ulong_long_type >();
run_test_cases< ::boost::ulong_long_type, small_vector< ::boost::ulong_long_type > >();
#endif
return boost::report_errors();
}

View File

@@ -10,6 +10,7 @@
#include "bitset_test.hpp"
#include "boost/config.hpp"
#include "boost/config/workaround.hpp"
#include "boost/dynamic_bitset/dynamic_bitset.hpp"
#include <assert.h>
#include <cstddef>
@@ -21,7 +22,7 @@
# include <sstream>
#endif
#if defined BOOST_NO_STD_WSTRING
#if defined BOOST_NO_STD_WSTRING || defined BOOST_NO_STD_LOCALE
# define BOOST_DYNAMIC_BITSET_NO_WCHAR_T_TESTS
#endif
@@ -34,7 +35,7 @@ widen_string( const std::string & str, const std::locale & loc = std::locale() )
if ( len != 0 ) {
typedef std::ctype< wchar_t > ct_type;
typedef std::wstring::traits_type tr_type;
const ct_type & ct = std::use_facet< ct_type >( loc );
const ct_type & ct = BOOST_USE_FACET( ct_type, loc );
result.resize( len );
for ( std::size_t i = 0; i < len; ++i )
@@ -306,8 +307,10 @@ main()
run_test_cases< unsigned int, small_vector< unsigned int > >();
run_test_cases< unsigned long >();
run_test_cases< unsigned long, small_vector< unsigned long > >();
run_test_cases< unsigned long long >();
run_test_cases< unsigned long long, small_vector< unsigned long long > >();
#ifdef BOOST_HAS_LONG_LONG
run_test_cases< ::boost::ulong_long_type >();
run_test_cases< ::boost::ulong_long_type, small_vector< ::boost::ulong_long_type > >();
#endif
return boost::report_errors();
}

View File

@@ -16,6 +16,7 @@
#include "boost/archive/xml_iarchive.hpp"
#include "boost/archive/xml_oarchive.hpp"
#include "boost/config.hpp"
#include "boost/config/workaround.hpp"
#include "boost/dynamic_bitset/serialization.hpp"
#include "boost/serialization/vector.hpp"
@@ -23,7 +24,7 @@
# include <sstream>
#endif
#if defined BOOST_NO_STD_WSTRING
#if defined BOOST_NO_STD_WSTRING || defined BOOST_NO_STD_LOCALE
# define BOOST_DYNAMIC_BITSET_NO_WCHAR_T_TESTS
#endif
@@ -104,7 +105,9 @@ main()
run_test_cases< unsigned short >();
run_test_cases< unsigned int >();
run_test_cases< unsigned long >();
run_test_cases< unsigned long long >();
#ifdef BOOST_HAS_LONG_LONG
run_test_cases< ::boost::ulong_long_type >();
#endif
return boost::report_errors();
}

View File

@@ -1,6 +1,5 @@
//
// Copyright (C) 2019 James E. King III
// Copyright (C) 2025 Gennaro Prota
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
@@ -18,23 +17,16 @@ main( int, char *[] )
const std::string long_string =
"01001110101110110101011010000000000011110101101111111111";
// Some bitsets with the same size but different underlying vectors.
const bitset_type zeroes( long_string.size(), 0 );
const bitset_type stuff( long_string );
const bitset_type one( long_string.size(), 1 );
// Some bitsets with different sizes but equal underlying vectors.
const bitset_type zeroes2( 2, 0 );
const bitset_type zeroes3( 3, 0 );
std::unordered_set< bitset_type > bitsets;
bitsets.insert( zeroes );
bitsets.insert( stuff );
bitsets.insert( one );
bitsets.insert( zeroes2 );
bitsets.insert( zeroes3 );
BOOST_TEST_EQ( bitsets.size(), 5 );
BOOST_TEST_EQ( bitsets.size(), 3 );
return boost::report_errors();
}