diff --git a/README.md b/README.md index bd88d389..5744051c 100644 --- a/README.md +++ b/README.md @@ -380,13 +380,21 @@ std::vector words(matcher.find.begin(), matcher.find.end()); Use C++11 range-based loops with RE/flex iterators: ```{.cpp} -#include // reflex::StdMatcher, reflex::Input, std::regex -// use a StdMatcher with std::regex to search for words in a sentence -reflex::StdMatcher matcher("\\w+", "How now brown cow."); +#include // reflex::PCRE2TFMatcher, reflex::Input, std::regex +// use a PCRE2UTFMatcher to search for words in a sentence +reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow."); for (auto& match : matcher.find) std::cout << "Found " << match.text() << std::endl; ``` +Note that we cannot generally simplify this loop to the following, because the +temporary matcher object is destroyed (some compilers handle this in C++23): + +```{.cpp} +for (auto& match : reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow.").find); + std::cout << "Found " << match.text() << std::endl; +``` + RE/flex also allows you to convert expressive regex syntax forms such as `\p` Unicode classes, character class set operations such as `[a-z--[aeiou]]`, escapes such as `\X`, and `(?x)` mode modifiers, to a regex string that the @@ -394,6 +402,7 @@ underlying regex library understands and will be able to use: - `std::string reflex::Matcher::convert(const std::string& regex, reflex::convert_flag_type flags)` - `std::string reflex::PCRE2Matcher::convert(const std::string& regex, reflex::convert_flag_type flags)` +- `std::string reflex::PCRE2UTFMatcher::convert(const std::string& regex, reflex::convert_flag_type flags)` - `std::string reflex::BoostMatcher::convert(const std::string& regex, reflex::convert_flag_type flags)` - `std::string reflex::StdMatcher::convert(const std::string& regex, reflex::convert_flag_type flags)` @@ -595,6 +604,7 @@ Changelog - Apr 10, 2024: 4.2.1 minor update to adjust the current input pointer by one when not matching anything. - May 12, 2024: 4.3.0 faster `Matcher::find()` with refactored SIMD (SSE2/AVX2/AVX512BW/NEON/AArch64) code; larger default 256KB buffer (from 128KB). - Jun 6, 2024: 4.4.0 upgraded `reflex::Matcher` and `reflex::FuzzyMatcher` to respect Unicode word boundaries instead of only ASCII `\<`, `\>`, `\b`, `\B`; upgraded regex Unicode converters to Unicode `[::]` character classes instead of only ASCII `[[:alpha:]]` etc.; improved FSM code generation without local c0. +- Aug 1, 2024: 4.5.0 minor speed improvements. [logo-url]: https://www.genivia.com/images/reflex-logo.png [reflex-url]: https://www.genivia.com/reflex.html diff --git a/bin/win32/reflex.exe b/bin/win32/reflex.exe index 02058453..99de246d 100755 Binary files a/bin/win32/reflex.exe and b/bin/win32/reflex.exe differ diff --git a/bin/win64/reflex.exe b/bin/win64/reflex.exe index 6eac8bc0..b81fae0f 100755 Binary files a/bin/win64/reflex.exe and b/bin/win64/reflex.exe differ diff --git a/configure b/configure index 08a40c84..95a04691 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for re-flex 4.4.0. +# Generated by GNU Autoconf 2.72 for re-flex 4.5.0. # # Report bugs to . # @@ -605,8 +605,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='re-flex' PACKAGE_TARNAME='reflex' -PACKAGE_VERSION='4.4.0' -PACKAGE_STRING='re-flex 4.4.0' +PACKAGE_VERSION='4.5.0' +PACKAGE_STRING='re-flex 4.5.0' PACKAGE_BUGREPORT='https://github.com/Genivia/RE-flex/issues' PACKAGE_URL='' @@ -1332,7 +1332,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures re-flex 4.4.0 to adapt to many kinds of systems. +'configure' configures re-flex 4.5.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1403,7 +1403,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of re-flex 4.4.0:";; + short | recursive ) echo "Configuration of re-flex 4.5.0:";; esac cat <<\_ACEOF @@ -1506,7 +1506,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -re-flex configure 4.4.0 +re-flex configure 4.5.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1857,7 +1857,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by re-flex $as_me 4.4.0, which was +It was created by re-flex $as_me 4.5.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -3365,7 +3365,7 @@ fi # Define the identity of the package. PACKAGE='reflex' - VERSION='4.4.0' + VERSION='4.5.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -6944,7 +6944,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by re-flex $as_me 4.4.0, which was +This file was extended by re-flex $as_me 4.5.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7012,7 +7012,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -re-flex config.status 4.4.0 +re-flex config.status 4.5.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 893ab346..bea0455b 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([re-flex],[4.4.0],[https://github.com/Genivia/RE-flex/issues],[reflex]) +AC_INIT([re-flex],[4.5.0],[https://github.com/Genivia/RE-flex/issues],[reflex]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AC_CONFIG_HEADERS([config.h]) AC_COPYRIGHT([Copyright (C) 2016-2024 Robert van Engelen, Genivia Inc.]) diff --git a/doc/html/abslexer_8h.html b/doc/html/abslexer_8h.html index 388c051a..b7606d78 100644 --- a/doc/html/abslexer_8h.html +++ b/doc/html/abslexer_8h.html @@ -21,7 +21,7 @@
abslexer.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -110,7 +110,7 @@ +Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/absmatcher_8h.html b/doc/html/absmatcher_8h.html index f3625a66..e4c1566b 100644 --- a/doc/html/absmatcher_8h.html +++ b/doc/html/absmatcher_8h.html @@ -21,7 +21,7 @@
absmatcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -284,7 +284,7 @@

Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/annotated.html b/doc/html/annotated.html index c50be880..6615b654 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -21,7 +21,7 @@
Class List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -123,7 +123,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/bits_8h.html b/doc/html/bits_8h.html index a71fbc07..356720e1 100644 --- a/doc/html/bits_8h.html +++ b/doc/html/bits_8h.html @@ -21,7 +21,7 @@
bits.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/boostmatcher_8h.html b/doc/html/boostmatcher_8h.html index 9d2abe12..9beac023 100644 --- a/doc/html/boostmatcher_8h.html +++ b/doc/html/boostmatcher_8h.html @@ -21,7 +21,7 @@
boostmatcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex-members.html b/doc/html/class_reflex-members.html index 3a58b275..d95e469f 100644 --- a/doc/html/class_reflex-members.html +++ b/doc/html/class_reflex-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -151,7 +151,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex.html b/doc/html/class_reflex.html index 72e3d451..c8de6234 100644 --- a/doc/html/class_reflex.html +++ b/doc/html/class_reflex.html @@ -21,7 +21,7 @@
Reflex Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -2755,7 +2755,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classes.html b/doc/html/classes.html index 1516df3a..0fee3622 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -21,7 +21,7 @@
Class Index

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -98,7 +98,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer-members.html b/doc/html/classreflex_1_1_abstract_lexer-members.html index a9cfc117..2bb691e3 100644 --- a/doc/html/classreflex_1_1_abstract_lexer-members.html +++ b/doc/html/classreflex_1_1_abstract_lexer-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -114,7 +114,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer.html b/doc/html/classreflex_1_1_abstract_lexer.html index 11532a07..cb07f3c0 100644 --- a/doc/html/classreflex_1_1_abstract_lexer.html +++ b/doc/html/classreflex_1_1_abstract_lexer.html @@ -21,7 +21,7 @@
reflex::AbstractLexer< M > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1874,7 +1874,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html index 930cea6c..3807dfdf 100644 --- a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html index 7bfdab3e..e0edac3d 100644 --- a/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html +++ b/doc/html/classreflex_1_1_abstract_lexer_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::AbstractLexer< M >::Matcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -296,7 +296,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher-members.html b/doc/html/classreflex_1_1_abstract_matcher-members.html index c883abca..b21a88fa 100644 --- a/doc/html/classreflex_1_1_abstract_matcher-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -184,7 +184,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher.html b/doc/html/classreflex_1_1_abstract_matcher.html index 8f920e0c..984b2ebc 100644 --- a/doc/html/classreflex_1_1_abstract_matcher.html +++ b/doc/html/classreflex_1_1_abstract_matcher.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -3842,7 +3842,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html index 0ec0fab7..91c5f08e 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -81,7 +81,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html index 1e422e3b..a12ff1dc 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_iterator.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Iterator< T > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -657,7 +657,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html index da6c5992..81537cb7 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html index 4e0fe662..c1e943ba 100644 --- a/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html +++ b/doc/html/classreflex_1_1_abstract_matcher_1_1_operation.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Operation Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -381,7 +381,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_bits-members.html b/doc/html/classreflex_1_1_bits-members.html index d0ea0799..ad8b80ac 100644 --- a/doc/html/classreflex_1_1_bits-members.html +++ b/doc/html/classreflex_1_1_bits-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -107,7 +107,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_bits.html b/doc/html/classreflex_1_1_bits.html index 86f5fe22..02a77915 100644 --- a/doc/html/classreflex_1_1_bits.html +++ b/doc/html/classreflex_1_1_bits.html @@ -21,7 +21,7 @@
reflex::Bits Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1718,7 +1718,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_matcher-members.html b/doc/html/classreflex_1_1_boost_matcher-members.html index 1506d32b..f6a403fd 100644 --- a/doc/html/classreflex_1_1_boost_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -215,7 +215,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_matcher.html b/doc/html/classreflex_1_1_boost_matcher.html index 3be95273..773a8a9d 100644 --- a/doc/html/classreflex_1_1_boost_matcher.html +++ b/doc/html/classreflex_1_1_boost_matcher.html @@ -21,7 +21,7 @@
reflex::BoostMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1329,7 +1329,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_perl_matcher-members.html b/doc/html/classreflex_1_1_boost_perl_matcher-members.html index e32b3b41..d089c3b6 100644 --- a/doc/html/classreflex_1_1_boost_perl_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_perl_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -218,7 +218,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_perl_matcher.html b/doc/html/classreflex_1_1_boost_perl_matcher.html index 27a67db8..aefd06d3 100644 --- a/doc/html/classreflex_1_1_boost_perl_matcher.html +++ b/doc/html/classreflex_1_1_boost_perl_matcher.html @@ -21,7 +21,7 @@
reflex::BoostPerlMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -753,7 +753,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_posix_matcher-members.html b/doc/html/classreflex_1_1_boost_posix_matcher-members.html index 77173813..99eb486b 100644 --- a/doc/html/classreflex_1_1_boost_posix_matcher-members.html +++ b/doc/html/classreflex_1_1_boost_posix_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -218,7 +218,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_boost_posix_matcher.html b/doc/html/classreflex_1_1_boost_posix_matcher.html index c8ff7970..797a70cc 100644 --- a/doc/html/classreflex_1_1_boost_posix_matcher.html +++ b/doc/html/classreflex_1_1_boost_posix_matcher.html @@ -21,7 +21,7 @@
reflex::BoostPosixMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -806,7 +806,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input-members.html b/doc/html/classreflex_1_1_buffered_input-members.html index 2d1cc69c..f14b35e3 100644 --- a/doc/html/classreflex_1_1_buffered_input-members.html +++ b/doc/html/classreflex_1_1_buffered_input-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -124,7 +124,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input.html b/doc/html/classreflex_1_1_buffered_input.html index adc48f76..5a7c39b1 100644 --- a/doc/html/classreflex_1_1_buffered_input.html +++ b/doc/html/classreflex_1_1_buffered_input.html @@ -21,7 +21,7 @@
reflex::BufferedInput Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -775,7 +775,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html index f4b22e67..5f9403cb 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html index 48f50fb5..bbf9308a 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1dos__streambuf.html @@ -21,7 +21,7 @@
reflex::BufferedInput::dos_streambuf Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -358,7 +358,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html b/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html index 2610284f..bb79dbae 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html b/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html index f45cba74..7b4821ad 100644 --- a/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html +++ b/doc/html/classreflex_1_1_buffered_input_1_1streambuf.html @@ -21,7 +21,7 @@
reflex::BufferedInput::streambuf Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -289,7 +289,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer-members.html b/doc/html/classreflex_1_1_flex_lexer-members.html index e48c20be..3773d626 100644 --- a/doc/html/classreflex_1_1_flex_lexer-members.html +++ b/doc/html/classreflex_1_1_flex_lexer-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -130,7 +130,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer.html b/doc/html/classreflex_1_1_flex_lexer.html index b8f1059f..58b3627a 100644 --- a/doc/html/classreflex_1_1_flex_lexer.html +++ b/doc/html/classreflex_1_1_flex_lexer.html @@ -21,7 +21,7 @@
reflex::FlexLexer< M > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -872,7 +872,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html index c920adb4..6d3b1519 100644 --- a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html index 95c4805c..95685708 100644 --- a/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html +++ b/doc/html/classreflex_1_1_flex_lexer_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::FlexLexer< M >::Matcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -320,7 +320,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_fuzzy_matcher-members.html b/doc/html/classreflex_1_1_fuzzy_matcher-members.html index 6beaca6f..675f8c95 100644 --- a/doc/html/classreflex_1_1_fuzzy_matcher-members.html +++ b/doc/html/classreflex_1_1_fuzzy_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -380,7 +380,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_fuzzy_matcher.html b/doc/html/classreflex_1_1_fuzzy_matcher.html index 21b980c1..62d18d36 100644 --- a/doc/html/classreflex_1_1_fuzzy_matcher.html +++ b/doc/html/classreflex_1_1_fuzzy_matcher.html @@ -21,7 +21,7 @@
reflex::FuzzyMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -916,7 +916,7 @@  local state for FSM code More...
  bool(Matcher::* adv_ )(size_t loc) - advance FIND More...
+ advance FIND function pointer More...
  bool mrk_  indent or dedent in pattern found: should check and update indent stops More...
@@ -1870,7 +1870,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input-members.html b/doc/html/classreflex_1_1_input-members.html index 27fd4a5a..33b2fa1d 100644 --- a/doc/html/classreflex_1_1_input-members.html +++ b/doc/html/classreflex_1_1_input-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -111,7 +111,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input.html b/doc/html/classreflex_1_1_input.html index cfeb2dc2..128a3f7b 100644 --- a/doc/html/classreflex_1_1_input.html +++ b/doc/html/classreflex_1_1_input.html @@ -21,7 +21,7 @@
reflex::Input Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1674,7 +1674,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html b/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html index d68d5838..e2fa6901 100644 --- a/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html +++ b/doc/html/classreflex_1_1_input_1_1dos__streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1dos__streambuf.html b/doc/html/classreflex_1_1_input_1_1dos__streambuf.html index d8c14ec9..7379a8c9 100644 --- a/doc/html/classreflex_1_1_input_1_1dos__streambuf.html +++ b/doc/html/classreflex_1_1_input_1_1dos__streambuf.html @@ -21,7 +21,7 @@
reflex::Input::dos_streambuf Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -331,7 +331,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1streambuf-members.html b/doc/html/classreflex_1_1_input_1_1streambuf-members.html index e10f4cad..4ce1f437 100644 --- a/doc/html/classreflex_1_1_input_1_1streambuf-members.html +++ b/doc/html/classreflex_1_1_input_1_1streambuf-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input_1_1streambuf.html b/doc/html/classreflex_1_1_input_1_1streambuf.html index 63b8be82..7165de6a 100644 --- a/doc/html/classreflex_1_1_input_1_1streambuf.html +++ b/doc/html/classreflex_1_1_input_1_1streambuf.html @@ -21,7 +21,7 @@
reflex::Input::streambuf Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -284,7 +284,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_line_matcher-members.html b/doc/html/classreflex_1_1_line_matcher-members.html index 26da5414..881572fe 100644 --- a/doc/html/classreflex_1_1_line_matcher-members.html +++ b/doc/html/classreflex_1_1_line_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -189,7 +189,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_line_matcher.html b/doc/html/classreflex_1_1_line_matcher.html index 33b03f18..427c27d9 100644 --- a/doc/html/classreflex_1_1_line_matcher.html +++ b/doc/html/classreflex_1_1_line_matcher.html @@ -21,7 +21,7 @@
reflex::LineMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -839,7 +839,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_matcher-members.html b/doc/html/classreflex_1_1_matcher-members.html index ee1b0a09..38568dc3 100644 --- a/doc/html/classreflex_1_1_matcher-members.html +++ b/doc/html/classreflex_1_1_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -358,7 +358,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_matcher.html b/doc/html/classreflex_1_1_matcher.html index 3133f36c..bd7995e8 100644 --- a/doc/html/classreflex_1_1_matcher.html +++ b/doc/html/classreflex_1_1_matcher.html @@ -21,7 +21,7 @@
reflex::Matcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -857,7 +857,7 @@  local state for FSM code More...
  bool(Matcher::* adv_ )(size_t loc) - advance FIND More...
+ advance FIND function pointer More...
  bool mrk_  indent or dedent in pattern found: should check and update indent stops More...
@@ -5224,7 +5224,7 @@

Member Data Documentation

-

advance FIND

+

advance FIND function pointer

@@ -5410,7 +5410,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_o_ranges-members.html b/doc/html/classreflex_1_1_o_ranges-members.html index 5004f51e..427b456f 100644 --- a/doc/html/classreflex_1_1_o_ranges-members.html +++ b/doc/html/classreflex_1_1_o_ranges-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -106,7 +106,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_o_ranges.html b/doc/html/classreflex_1_1_o_ranges.html index f7c00734..d1df7dc3 100644 --- a/doc/html/classreflex_1_1_o_ranges.html +++ b/doc/html/classreflex_1_1_o_ranges.html @@ -21,7 +21,7 @@
reflex::ORanges< T > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1127,7 +1127,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_p_c_r_e2_matcher-members.html b/doc/html/classreflex_1_1_p_c_r_e2_matcher-members.html index 683b6e60..f4036e28 100644 --- a/doc/html/classreflex_1_1_p_c_r_e2_matcher-members.html +++ b/doc/html/classreflex_1_1_p_c_r_e2_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -218,7 +218,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_p_c_r_e2_matcher.html b/doc/html/classreflex_1_1_p_c_r_e2_matcher.html index 47adfe73..af25feda 100644 --- a/doc/html/classreflex_1_1_p_c_r_e2_matcher.html +++ b/doc/html/classreflex_1_1_p_c_r_e2_matcher.html @@ -21,7 +21,7 @@
reflex::PCRE2Matcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1479,7 +1479,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher-members.html b/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher-members.html index d398ebf7..e24255ae 100644 --- a/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher-members.html +++ b/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -221,7 +221,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher.html b/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher.html index 3202f209..4f333054 100644 --- a/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher.html +++ b/doc/html/classreflex_1_1_p_c_r_e2_u_t_f_matcher.html @@ -21,7 +21,7 @@
reflex::PCRE2UTFMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -809,7 +809,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern-members.html b/doc/html/classreflex_1_1_pattern-members.html index 1694251c..a50eac39 100644 --- a/doc/html/classreflex_1_1_pattern-members.html +++ b/doc/html/classreflex_1_1_pattern-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -108,157 +108,160 @@ gen_match_hfa(DFA::State *start)reflex::Patternprivate gen_match_hfa_start(DFA::State *start, HFA::State &index, HFA::StateHashes &hashes)reflex::Patternprivate gen_match_hfa_transitions(size_t level, size_t &max_level, DFA::State *state, const HFA::HashRanges &previous, HFA::State &index, HFA::StateHashes &hashes)reflex::Patternprivate - gen_predict_match(std::set< DFA::State * > states)reflex::Patternprivate - gen_predict_match_start(std::set< DFA::State * > states, std::map< DFA::State *, ORanges< Hash > > &hashes)reflex::Patternprivate - gen_predict_match_transitions(size_t level, DFA::State *state, const ORanges< Hash > &labels, std::map< DFA::State *, ORanges< Hash > > &hashes)reflex::Patternprivate - gencode_dfa(const DFA::State *start) const reflex::Patternprivate - gencode_dfa_closure(FILE *fd, const DFA::State *start, int nest, bool peek) const reflex::Patternprivate - graph_dfa(const DFA::State *start) const reflex::Patternprivate - greedy(Positions &pos) const reflex::Patternprivate - has_hfa() const reflex::Patterninline - Hash typedefreflex::Pattern - hash(Hash h, uint8_t b)reflex::Patterninlineprivatestatic - hash_pos(const Positions *pos)reflex::Patterninlineprivatestatic - hashes() const reflex::Patterninline - hfa_reflex::Patternprivate - hi_of(Opcode opcode)reflex::Patterninlineprivatestatic - hno_reflex::Patternprivate - Index typedefreflex::Pattern - index_of(Opcode opcode)reflex::Patterninlineprivatestatic - indexhash(Hash h, uint8_t b)reflex::Patterninlineprivatestatic - init(const char *options, const uint8_t *pred=NULL)reflex::Patternprivate - init_options(const char *options)reflex::Patternprivate - is_meta(Char c)reflex::Patterninlineprivatestatic - is_modified(Mod mod, const Mods modifiers, Location loc)reflex::Patterninlineprivatestatic - is_opcode_goto(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_goto(Opcode opcode, unsigned char c)reflex::Patterninlineprivatestatic - is_opcode_halt(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_head(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_long(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_meta(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_redo(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_tail(Opcode opcode)reflex::Patterninlineprivatestatic - is_opcode_take(Opcode opcode)reflex::Patterninlineprivatestatic - Iter typedefreflex::Patternprivate + gen_min(std::set< DFA::State * > &states)reflex::Patternprivate + gen_min_start(std::set< DFA::State * > &states, std::set< DFA::State * > &next)reflex::Patternprivate + gen_min_transitions(size_t level, std::set< DFA::State * > &next)reflex::Patternprivate + gen_predict_match(std::set< DFA::State * > &states)reflex::Patternprivate + gen_predict_match_start(std::set< DFA::State * > &states, std::map< DFA::State *, ORanges< Hash > > &hashes)reflex::Patternprivate + gen_predict_match_transitions(size_t level, DFA::State *state, const ORanges< Hash > &labels, std::map< DFA::State *, ORanges< Hash > > &hashes)reflex::Patternprivate + gencode_dfa(const DFA::State *start) const reflex::Patternprivate + gencode_dfa_closure(FILE *fd, const DFA::State *start, int nest, bool peek) const reflex::Patternprivate + graph_dfa(const DFA::State *start) const reflex::Patternprivate + greedy(Positions &pos) const reflex::Patternprivate + has_hfa() const reflex::Patterninline + Hash typedefreflex::Pattern + hash(Hash h, uint8_t b)reflex::Patterninlineprivatestatic + hash_pos(const Positions *pos)reflex::Patterninlineprivatestatic + hashes() const reflex::Patterninline + hfa_reflex::Patternprivate + hi_of(Opcode opcode)reflex::Patterninlineprivatestatic + hno_reflex::Patternprivate + Index typedefreflex::Pattern + index_of(Opcode opcode)reflex::Patterninlineprivatestatic + indexhash(Hash h, uint8_t b)reflex::Patterninlineprivatestatic + init(const char *options, const uint8_t *pred=NULL)reflex::Patternprivate + init_options(const char *options)reflex::Patternprivate + is_meta(Char c)reflex::Patterninlineprivatestatic + is_modified(Mod mod, const Mods modifiers, Location loc)reflex::Patterninlineprivatestatic + is_opcode_goto(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_goto(Opcode opcode, unsigned char c)reflex::Patterninlineprivatestatic + is_opcode_halt(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_head(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_long(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_meta(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_redo(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_tail(Opcode opcode)reflex::Patterninlineprivatestatic + is_opcode_take(Opcode opcode)reflex::Patterninlineprivatestatic + Iter typedefreflex::Patternprivate + Lazy typedefreflex::Patternprivate lazy(const Lazypos &lazypos, Positions &pos) const reflex::Patternprivate lazy(const Lazypos &lazypos, const Positions &pos, Positions &pos1) const reflex::Patternprivate - Lazy typedefreflex::Patternprivate - lazy_add(Lazypos &s, const Lazy i, Location p)reflex::Patterninlineprivatestatic - lazy_insert(Lazypos &s1, const Lazypos &s2)reflex::Patterninlineprivatestatic - Lazypos typedefreflex::Patternprivate - lbk_reflex::Patternprivate - lbm_reflex::Patternprivate - lcp_reflex::Patternprivate - lcs_reflex::Patternprivate - len_reflex::Patternprivate - lo_of(Opcode opcode)reflex::Patterninlineprivatestatic - Location typedefreflex::Patternprivate - Locations typedefreflex::Patternprivate - long_index_of(Opcode opcode)reflex::Patterninlineprivatestatic - Lookahead typedefreflex::Patternprivate - lookahead_of(Opcode opcode)reflex::Patterninlineprivatestatic - Lookaheads typedefreflex::Patternprivate - lowercase(Char c)reflex::Patterninlineprivatestatic - Map typedefreflex::Patternprivate - match_hfa(const uint8_t *indexed, size_t size) const reflex::Pattern - match_hfa_transitions(size_t level, const HFA::Hashes &hashes, const uint8_t *indexed, size_t size, HFA::VisitSet &visit, HFA::VisitSet &next_visit, bool &accept) const reflex::Patternprivate - Matcher classreflex::Patternfriend - Meta enum namereflex::Patternprivate - META_BOB enum valuereflex::Patternprivate - META_BOL enum valuereflex::Patternprivate - META_BWB enum valuereflex::Patternprivate - META_BWE enum valuereflex::Patternprivate - META_DED enum valuereflex::Patternprivate - META_EOB enum valuereflex::Patternprivate - META_EOL enum valuereflex::Patternprivate - META_EWB enum valuereflex::Patternprivate - META_EWE enum valuereflex::Patternprivate - META_IND enum valuereflex::Patternprivate - META_MAX enum valuereflex::Patternprivate - META_MIN enum valuereflex::Patternprivate - META_NWB enum valuereflex::Patternprivate - META_NWE enum valuereflex::Patternprivate - meta_of(Opcode opcode)reflex::Patterninlineprivatestatic - META_UND enum valuereflex::Patternprivate - META_WBB enum valuereflex::Patternprivate - META_WBE enum valuereflex::Patternprivate - min_reflex::Patternprivate - Mod typedefreflex::Patternprivate - Mods typedefreflex::Patternprivate - Move typedefreflex::Patternprivate - Moves typedefreflex::Patternprivate - nodes() const reflex::Patterninline - nodes_time() const reflex::Patterninline - nop_reflex::Patternprivate - npy_reflex::Patternprivate - one_reflex::Patternprivate - opc_reflex::Patternprivate - Opcode typedefreflex::Pattern - opcode_goto(Char lo, Char hi, Index index)reflex::Patterninlineprivatestatic - opcode_halt()reflex::Patterninlineprivatestatic - opcode_head(Index index)reflex::Patterninlineprivatestatic - opcode_long(Index index)reflex::Patterninlineprivatestatic - opcode_redo()reflex::Patterninlineprivatestatic - opcode_tail(Index index)reflex::Patterninlineprivatestatic - opcode_take(Index index)reflex::Patterninlineprivatestatic - operator=(const Pattern &pattern)reflex::Patterninline - operator=(const char *regex)reflex::Patterninline - operator=(const std::string &regex)reflex::Patterninline - operator=(const Opcode *code)reflex::Patterninline - operator=(FSM fsm)reflex::Patterninline - operator[](Accept choice) const reflex::Pattern - opt_reflex::Patternprivate - parse(Positions &startpos, Follow &followpos, Lazypos &lazypos, Mods modifiers, Map &lookahead)reflex::Patternprivate - parse1(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate - parse2(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate - parse3(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate - parse4(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate - parse_esc(Location &loc, Chars *chars=NULL) const reflex::Patternprivate - parse_time() const reflex::Patterninline - Pattern()reflex::Patterninline - Pattern(const char *regex, const char *options=NULL)reflex::Patterninlineexplicit - Pattern(const char *regex, const std::string &options)reflex::Patterninline - Pattern(const std::string &regex, const char *options=NULL)reflex::Patterninlineexplicit - Pattern(const std::string &regex, const std::string &options)reflex::Patterninline - Pattern(const Opcode *code, const uint8_t *pred=NULL)reflex::Patterninlineexplicit - Pattern(FSM fsm, const uint8_t *pred=NULL)reflex::Patterninlineexplicit - Pattern(const Pattern &pattern)reflex::Patterninline - pin_reflex::Patternprivate - pma_reflex::Patternprivate - pmh_reflex::Patternprivate - pms_reflex::Patternprivate - pos_add(Positions &s, const Position &e)reflex::Patterninlineprivatestatic - pos_insert(Positions &s1, const Positions &s2)reflex::Patterninlineprivatestatic - Positions typedefreflex::Patternprivate - posix(size_t index, Chars &chars) const reflex::Patternprivate - Pred typedefreflex::Pattern - predict_match(const Pred pmh[], const char *s, size_t n)reflex::Patterninlinestatic - predict_match(const Pred pma[], const char *s)reflex::Patterninlinestatic - reachable(Accept choice) const reflex::Patterninline - rex_reflex::Patternprivate - size() const reflex::Patterninline - tfa_reflex::Patternprivate - transition(Moves &moves, Chars &chars, const Positions &follow) const reflex::Patternprivate - trim_anchors(Positions &follow, const Position p) const reflex::Patternprivate - trim_lazy(Positions *pos, const Lazypos &lazypos) const reflex::Patternprivate - update_modified(Mod mod, Mods modifiers, Location from, Location to)reflex::Patterninlineprivatestatic - uppercase(Char c)reflex::Patterninlineprivatestatic - valid_goto_index(Index index)reflex::Patterninlineprivatestatic - valid_lookahead_index(Index index)reflex::Patterninlineprivatestatic - valid_take_index(Index index)reflex::Patterninlineprivatestatic - vms_reflex::Patternprivate - vno_reflex::Patternprivate - wms_reflex::Patternprivate - words() const reflex::Patterninline - words_time() const reflex::Patterninline - write_namespace_close(FILE *fd) const reflex::Patternprivate - write_namespace_open(FILE *fd) const reflex::Patternprivate - write_predictor(FILE *fd) const reflex::Patternprivate - ~Pattern()reflex::Patterninlinevirtual + lazy_add(Lazypos &s, const Lazy i, Location p)reflex::Patterninlineprivatestatic + lazy_insert(Lazypos &s1, const Lazypos &s2)reflex::Patterninlineprivatestatic + Lazypos typedefreflex::Patternprivate + lbk_reflex::Patternprivate + lbm_reflex::Patternprivate + lcp_reflex::Patternprivate + lcs_reflex::Patternprivate + len_reflex::Patternprivate + lo_of(Opcode opcode)reflex::Patterninlineprivatestatic + Location typedefreflex::Patternprivate + Locations typedefreflex::Patternprivate + long_index_of(Opcode opcode)reflex::Patterninlineprivatestatic + Lookahead typedefreflex::Patternprivate + lookahead_of(Opcode opcode)reflex::Patterninlineprivatestatic + Lookaheads typedefreflex::Patternprivate + lowercase(Char c)reflex::Patterninlineprivatestatic + Map typedefreflex::Patternprivate + match_hfa(const uint8_t *indexed, size_t size) const reflex::Pattern + match_hfa_transitions(size_t level, const HFA::Hashes &hashes, const uint8_t *indexed, size_t size, HFA::VisitSet &visit, HFA::VisitSet &next_visit, bool &accept) const reflex::Patternprivate + Matcher classreflex::Patternfriend + Meta enum namereflex::Patternprivate + META_BOB enum valuereflex::Patternprivate + META_BOL enum valuereflex::Patternprivate + META_BWB enum valuereflex::Patternprivate + META_BWE enum valuereflex::Patternprivate + META_DED enum valuereflex::Patternprivate + META_EOB enum valuereflex::Patternprivate + META_EOL enum valuereflex::Patternprivate + META_EWB enum valuereflex::Patternprivate + META_EWE enum valuereflex::Patternprivate + META_IND enum valuereflex::Patternprivate + META_MAX enum valuereflex::Patternprivate + META_MIN enum valuereflex::Patternprivate + META_NWB enum valuereflex::Patternprivate + META_NWE enum valuereflex::Patternprivate + meta_of(Opcode opcode)reflex::Patterninlineprivatestatic + META_UND enum valuereflex::Patternprivate + META_WBB enum valuereflex::Patternprivate + META_WBE enum valuereflex::Patternprivate + min_reflex::Patternprivate + Mod typedefreflex::Patternprivate + Mods typedefreflex::Patternprivate + Move typedefreflex::Patternprivate + Moves typedefreflex::Patternprivate + nodes() const reflex::Patterninline + nodes_time() const reflex::Patterninline + nop_reflex::Patternprivate + npy_reflex::Patternprivate + one_reflex::Patternprivate + opc_reflex::Patternprivate + Opcode typedefreflex::Pattern + opcode_goto(Char lo, Char hi, Index index)reflex::Patterninlineprivatestatic + opcode_halt()reflex::Patterninlineprivatestatic + opcode_head(Index index)reflex::Patterninlineprivatestatic + opcode_long(Index index)reflex::Patterninlineprivatestatic + opcode_redo()reflex::Patterninlineprivatestatic + opcode_tail(Index index)reflex::Patterninlineprivatestatic + opcode_take(Index index)reflex::Patterninlineprivatestatic + operator=(const Pattern &pattern)reflex::Patterninline + operator=(const char *regex)reflex::Patterninline + operator=(const std::string &regex)reflex::Patterninline + operator=(const Opcode *code)reflex::Patterninline + operator=(FSM fsm)reflex::Patterninline + operator[](Accept choice) const reflex::Pattern + opt_reflex::Patternprivate + parse(Positions &startpos, Follow &followpos, Lazypos &lazypos, Mods modifiers, Map &lookahead)reflex::Patternprivate + parse1(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate + parse2(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate + parse3(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate + parse4(bool begin, Location &loc, Positions &firstpos, Positions &lastpos, bool &nullable, Follow &followpos, Lazy &lazyidx, Lazypos &lazypos, Mods modifiers, Locations &lookahead, Iter &iter)reflex::Patternprivate + parse_esc(Location &loc, Chars *chars=NULL) const reflex::Patternprivate + parse_time() const reflex::Patterninline + Pattern()reflex::Patterninline + Pattern(const char *regex, const char *options=NULL)reflex::Patterninlineexplicit + Pattern(const char *regex, const std::string &options)reflex::Patterninline + Pattern(const std::string &regex, const char *options=NULL)reflex::Patterninlineexplicit + Pattern(const std::string &regex, const std::string &options)reflex::Patterninline + Pattern(const Opcode *code, const uint8_t *pred=NULL)reflex::Patterninlineexplicit + Pattern(FSM fsm, const uint8_t *pred=NULL)reflex::Patterninlineexplicit + Pattern(const Pattern &pattern)reflex::Patterninline + pin_reflex::Patternprivate + pma_reflex::Patternprivate + pmh_reflex::Patternprivate + pms_reflex::Patternprivate + pos_add(Positions &s, const Position &e)reflex::Patterninlineprivatestatic + pos_insert(Positions &s1, const Positions &s2)reflex::Patterninlineprivatestatic + Positions typedefreflex::Patternprivate + posix(size_t index, Chars &chars) const reflex::Patternprivate + Pred typedefreflex::Pattern + predict_match(const char *s, size_t n) const reflex::Patterninline + predict_match(const char *s) const reflex::Patterninline + reachable(Accept choice) const reflex::Patterninline + rex_reflex::Patternprivate + size() const reflex::Patterninline + tfa_reflex::Patternprivate + transition(Moves &moves, Chars &chars, const Positions &follow) const reflex::Patternprivate + trim_anchors(Positions &follow, const Position p) const reflex::Patternprivate + trim_lazy(Positions *pos, const Lazypos &lazypos) const reflex::Patternprivate + update_modified(Mod mod, Mods modifiers, Location from, Location to)reflex::Patterninlineprivatestatic + uppercase(Char c)reflex::Patterninlineprivatestatic + valid_goto_index(Index index)reflex::Patterninlineprivatestatic + valid_lookahead_index(Index index)reflex::Patterninlineprivatestatic + valid_take_index(Index index)reflex::Patterninlineprivatestatic + vms_reflex::Patternprivate + vno_reflex::Patternprivate + wms_reflex::Patternprivate + words() const reflex::Patterninline + words_time() const reflex::Patterninline + write_namespace_close(FILE *fd) const reflex::Patternprivate + write_namespace_open(FILE *fd) const reflex::Patternprivate + write_predictor(FILE *fd) const reflex::Patternprivate + ~Pattern()reflex::Patterninlinevirtual
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern.html b/doc/html/classreflex_1_1_pattern.html index ba0c69c9..9141b7ef 100644 --- a/doc/html/classreflex_1_1_pattern.html +++ b/doc/html/classreflex_1_1_pattern.html @@ -21,7 +21,7 @@
reflex::Pattern Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -130,9 +130,9 @@ typedef uint8_t Pred  predict match bits More...
  -typedef uint16_t Hash - hash value type, max value is Const::HASH More...
-  +typedef uint32_t Hash + hash value type, max value is Const::HASH More...
+  typedef uint32_t Index  index into opcodes array Pattern::opc_ and subpattern indexing More...
  @@ -249,6 +249,12 @@ float analysis_time () const  Get elapsed time of DFA analysis to predict matches and construct an optional HFA. More...
  +bool predict_match (const char *s, size_t n) const + Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). More...
+  +bool predict_match (const char *s) const + Returns true when match is predicted using my PM4 logic. More...
+  bool has_hfa () const   bool match_hfa (const uint8_t *indexed, size_t size) const @@ -256,12 +262,6 @@ - - - - - - @@ -390,11 +390,17 @@ - - - - - + + + + + + + + + + + @@ -495,10 +501,10 @@ - + - +

Static Public Member Functions

static bool predict_match (const Pred pmh[], const char *s, size_t n)
 Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). More...
 
static size_t predict_match (const Pred pma[], const char *s)
 Returns zero when match is predicted (removed shift distance return, now just returns 0 or 1). More...
 
static uint8_t frequency (uint8_t c)
 Relative frequency of English letters with upper/lower-case ratio = 0.0563, punctuation and UTF-8 bytes. More...
 
 
void analyze_dfa (DFA::State *start)
 
void gen_predict_match (std::set< DFA::State * > states)
 
void gen_predict_match_start (std::set< DFA::State * > states, std::map< DFA::State *, ORanges< Hash > > &hashes)
 
void gen_predict_match_transitions (size_t level, DFA::State *state, const ORanges< Hash > &labels, std::map< DFA::State *, ORanges< Hash > > &hashes)
void gen_min (std::set< DFA::State * > &states)
 
void gen_min_start (std::set< DFA::State * > &states, std::set< DFA::State * > &next)
 
void gen_min_transitions (size_t level, std::set< DFA::State * > &next)
 
void gen_predict_match (std::set< DFA::State * > &states)
 
void gen_predict_match_start (std::set< DFA::State * > &states, std::map< DFA::State *, ORanges< Hash > > &hashes)
 
void gen_predict_match_transitions (size_t level, DFA::State *state, const ORanges< Hash > &labels, std::map< DFA::State *, ORanges< Hash > > &hashes)
 
void gen_match_hfa (DFA::State *start)
 
static Char uppercase (Char c)
 convert to upper case if c is a letter a-z, A-Z. More...
 
static Hash hash (Hash h, uint8_t b)
static Hash hash (Hash h, uint8_t b)
 predict match hash 0 <= hash() < Const::HASH. More...
 
static Hash indexhash (Hash h, uint8_t b)
static Hash indexhash (Hash h, uint8_t b)
 file indexing hash 0 <= indexhash() < 65536, must be additive: indexhash(x,b+1) = indexhash(x,b)+1 modulo 2^16. More...
 
@@ -696,12 +702,12 @@ - +
- +
typedef uint16_t reflex::Pattern::Hashtypedef uint32_t reflex::Pattern::Hash
@@ -2406,7 +2412,99 @@

Member Function Documentation

- + +
+
+ + + + + +
+ + + + + + + + +
void reflex::Pattern::gen_min (std::set< DFA::State * > & states)
+
+private
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void reflex::Pattern::gen_min_start (std::set< DFA::State * > & states,
std::set< DFA::State * > & next 
)
+
+private
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void reflex::Pattern::gen_min_transitions (size_t level,
std::set< DFA::State * > & next 
)
+
+private
+
+ +
+
+
@@ -2416,7 +2514,7 @@

Member Function Documentation

- + @@ -2430,7 +2528,7 @@

Member Function Documentation

- +
void reflex::Pattern::gen_predict_match (std::set< DFA::State * > std::set< DFA::State * > &  states)
@@ -2440,13 +2538,13 @@

Member Function Documentation

- + - + @@ -2486,13 +2584,13 @@

Member Function Documentation

- + - + @@ -2659,9 +2757,9 @@

Member Function Documentation

@@ -1195,7 +1195,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4-members.html b/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4-members.html index 5e1bee41..e746dc03 100644 --- a/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4-members.html +++ b/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4-members.html @@ -21,7 +21,7 @@
@@ -199,7 +199,7 @@
void reflex::Pattern::gen_predict_match_start (std::set< DFA::State * > std::set< DFA::State * > &  states,
std::map< DFA::State *, ORanges< Hash > > & std::map< DFA::State *, ORanges< Hash > > &  hashes 
const ORanges< Hash > & const ORanges< Hash > &  labels,
std::map< DFA::State *, ORanges< Hash > > & std::map< DFA::State *, ORanges< Hash > > &  hashes 
- + - + @@ -2793,9 +2891,9 @@

Member Function Documentation

@@ -201,7 +201,7 @@
static Hash reflex::Pattern::hash static Hash reflex::Pattern::hash (Hash Hash  h,
- + - + @@ -4480,7 +4578,7 @@

Member Function Documentation

- +
static Hash reflex::Pattern::indexhash static Hash reflex::Pattern::indexhash (Hash Hash  h,
@@ -4488,14 +4586,8 @@

Member Function Documentation

+inline
- + - - - - - - @@ -4508,12 +4600,12 @@

Member Function Documentation

- +
static bool reflex::Pattern::predict_match bool reflex::Pattern::predict_match (const Pred pmh[],
const char *  s,
) const
-inlinestatic
@@ -4522,7 +4614,7 @@

Member Function Documentation

- +
@@ -4530,31 +4622,21 @@

Member Function Documentation

+inline
- + - - - - - - - - - - - - + +
static size_t reflex::Pattern::predict_match bool reflex::Pattern::predict_match (const Pred pma[],
const char * s 
)s) const
-inlinestatic
-

Returns zero when match is predicted (removed shift distance return, now just returns 0 or 1).

+

Returns true when match is predicted using my PM4 logic.

@@ -5854,7 +5936,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher-members.html b/doc/html/classreflex_1_1_pattern_matcher-members.html index 3d583f57..c611e805 100644 --- a/doc/html/classreflex_1_1_pattern_matcher-members.html +++ b/doc/html/classreflex_1_1_pattern_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
 
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher.html b/doc/html/classreflex_1_1_pattern_matcher.html index 9a4ba1ce..6355f722 100644 --- a/doc/html/classreflex_1_1_pattern_matcher.html +++ b/doc/html/classreflex_1_1_pattern_matcher.html @@ -21,7 +21,7 @@
reflex::PatternMatcher< P > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
 
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
 
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4.html b/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4.html index cd897576..a8ee833b 100644 --- a/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4.html +++ b/doc/html/classreflex_1_1_pattern_matcher_3_01std_1_1string_01_4.html @@ -21,7 +21,7 @@
reflex::PatternMatcher< std::string > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1064,7 +1064,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_posix_1_1_tables-members.html b/doc/html/classreflex_1_1_posix_1_1_tables-members.html index 6ff0b1ab..237599de 100644 --- a/doc/html/classreflex_1_1_posix_1_1_tables-members.html +++ b/doc/html/classreflex_1_1_posix_1_1_tables-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_posix_1_1_tables.html b/doc/html/classreflex_1_1_posix_1_1_tables.html index 05a10d28..97d79c87 100644 --- a/doc/html/classreflex_1_1_posix_1_1_tables.html +++ b/doc/html/classreflex_1_1_posix_1_1_tables.html @@ -21,7 +21,7 @@
reflex::Posix::Tables Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -144,7 +144,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_ranges-members.html b/doc/html/classreflex_1_1_ranges-members.html index d57f700f..1190872f 100644 --- a/doc/html/classreflex_1_1_ranges-members.html +++ b/doc/html/classreflex_1_1_ranges-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -91,7 +91,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_ranges.html b/doc/html/classreflex_1_1_ranges.html index 6c501c01..6406ed43 100644 --- a/doc/html/classreflex_1_1_ranges.html +++ b/doc/html/classreflex_1_1_ranges.html @@ -21,7 +21,7 @@
reflex::Ranges< T > Class Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1168,7 +1168,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_ecma_matcher-members.html b/doc/html/classreflex_1_1_std_ecma_matcher-members.html index 00faa0ff..6512fa7c 100644 --- a/doc/html/classreflex_1_1_std_ecma_matcher-members.html +++ b/doc/html/classreflex_1_1_std_ecma_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -219,7 +219,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_ecma_matcher.html b/doc/html/classreflex_1_1_std_ecma_matcher.html index 7679af11..fe7410d4 100644 --- a/doc/html/classreflex_1_1_std_ecma_matcher.html +++ b/doc/html/classreflex_1_1_std_ecma_matcher.html @@ -21,7 +21,7 @@
reflex::StdEcmaMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -935,7 +935,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_matcher-members.html b/doc/html/classreflex_1_1_std_matcher-members.html index 55aae085..fe4b241b 100644 --- a/doc/html/classreflex_1_1_std_matcher-members.html +++ b/doc/html/classreflex_1_1_std_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -215,7 +215,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_matcher.html b/doc/html/classreflex_1_1_std_matcher.html index d9db0eec..05f0eaa3 100644 --- a/doc/html/classreflex_1_1_std_matcher.html +++ b/doc/html/classreflex_1_1_std_matcher.html @@ -21,7 +21,7 @@
reflex::StdMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1327,7 +1327,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_posix_matcher-members.html b/doc/html/classreflex_1_1_std_posix_matcher-members.html index c3364397..2b60f4ba 100644 --- a/doc/html/classreflex_1_1_std_posix_matcher-members.html +++ b/doc/html/classreflex_1_1_std_posix_matcher-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -219,7 +219,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_std_posix_matcher.html b/doc/html/classreflex_1_1_std_posix_matcher.html index ee094adb..3b8b670b 100644 --- a/doc/html/classreflex_1_1_std_posix_matcher.html +++ b/doc/html/classreflex_1_1_std_posix_matcher.html @@ -21,7 +21,7 @@
reflex::StdPosixMatcher Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -987,7 +987,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_unicode_1_1_tables-members.html b/doc/html/classreflex_1_1_unicode_1_1_tables-members.html index 454c944f..517d0cc1 100644 --- a/doc/html/classreflex_1_1_unicode_1_1_tables-members.html +++ b/doc/html/classreflex_1_1_unicode_1_1_tables-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_unicode_1_1_tables.html b/doc/html/classreflex_1_1_unicode_1_1_tables.html index 6eda9ac5..cfd5f2d2 100644 --- a/doc/html/classreflex_1_1_unicode_1_1_tables.html +++ b/doc/html/classreflex_1_1_unicode_1_1_tables.html @@ -21,7 +21,7 @@
reflex::Unicode::Tables Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -255,7 +255,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1regex__error-members.html b/doc/html/classreflex_1_1regex__error-members.html index 30e0ed11..3fc2685f 100644 --- a/doc/html/classreflex_1_1regex__error-members.html +++ b/doc/html/classreflex_1_1regex__error-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -92,7 +92,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1regex__error.html b/doc/html/classreflex_1_1regex__error.html index 2262f43b..6672b319 100644 --- a/doc/html/classreflex_1_1regex__error.html +++ b/doc/html/classreflex_1_1regex__error.html @@ -21,7 +21,7 @@
reflex::regex_error Class Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1041,7 +1041,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/convert_8h.html b/doc/html/convert_8h.html index 9f0f1ee9..f3506374 100644 --- a/doc/html/convert_8h.html +++ b/doc/html/convert_8h.html @@ -21,7 +21,7 @@
convert.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -168,7 +168,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/debug_8h.html b/doc/html/debug_8h.html index 16d1d2b7..1028b43f 100644 --- a/doc/html/debug_8h.html +++ b/doc/html/debug_8h.html @@ -21,7 +21,7 @@
debug.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -403,7 +403,7 @@

Variable Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/dir_000002_000000.html b/doc/html/dir_000002_000000.html index 4e6a667c..6f8bc911 100644 --- a/doc/html/dir_000002_000000.html +++ b/doc/html/dir_000002_000000.html @@ -21,7 +21,7 @@
src -> include Relation

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -46,7 +46,7 @@

src → include Relation

File in srcIncludes file in include
reflex.hreflex / convert.h
reflex.hreflex / error.h
reflex.hreflex / input.h
reflex.hreflex / pattern.h
reflex.hreflex / utf8.h
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 5fdd3ace..43994c12 100644 --- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -21,7 +21,7 @@
src Directory Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html index 7c62292c..c70c8a5b 100644 --- a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html +++ b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html @@ -21,7 +21,7 @@
reflex Directory Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -129,7 +129,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html index f20020ff..06cc719e 100644 --- a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -21,7 +21,7 @@
include Directory Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/error_8h.html b/doc/html/error_8h.html index 3ada2550..eeedeefe 100644 --- a/doc/html/error_8h.html +++ b/doc/html/error_8h.html @@ -21,7 +21,7 @@
error.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -121,7 +121,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/files.html b/doc/html/files.html index bfc3e90e..91349e0e 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -21,7 +21,7 @@
File List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -81,7 +81,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/flexlexer_8h.html b/doc/html/flexlexer_8h.html index 7b72fb6d..9ce47cac 100644 --- a/doc/html/flexlexer_8h.html +++ b/doc/html/flexlexer_8h.html @@ -21,7 +21,7 @@
flexlexer.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1171,7 +1171,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/functions.html b/doc/html/functions.html index 971eab50..c9926c7a 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -371,7 +371,7 @@

- a -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html index d6f0b7d5..f4e702aa 100644 --- a/doc/html/functions_0x7e.html +++ b/doc/html/functions_0x7e.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -124,7 +124,7 @@

- ~ -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html index a48f515d..3b0ee213 100644 --- a/doc/html/functions_b.html +++ b/doc/html/functions_b.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -203,7 +203,7 @@

- b -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html index 855b8ce2..2abb99b1 100644 --- a/doc/html/functions_c.html +++ b/doc/html/functions_c.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -330,7 +330,7 @@

- c -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html index 5c1c1ad1..e2cf048b 100644 --- a/doc/html/functions_d.html +++ b/doc/html/functions_d.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -156,7 +156,7 @@

- d -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html index ba9b21ec..522b3592 100644 --- a/doc/html/functions_e.html +++ b/doc/html/functions_e.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -208,7 +208,7 @@

- e -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index 95d63b2a..86b228b1 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -21,7 +21,7 @@
Class Members - Enumerations

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index fffdb9a7..dcec301f 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -21,7 +21,7 @@
Class Members - Enumerator

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -113,7 +113,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_f.html b/doc/html/functions_f.html index b87a8927..8ae28c5e 100644 --- a/doc/html/functions_f.html +++ b/doc/html/functions_f.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -269,7 +269,7 @@

- f -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index f6e1295d..3ae53e9f 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -325,7 +325,7 @@

- a -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html index 2b1b048d..08689b0a 100644 --- a/doc/html/functions_func_0x7e.html +++ b/doc/html/functions_func_0x7e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -120,7 +120,7 @@

- ~ -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_b.html b/doc/html/functions_func_b.html index 2c94ead8..ddd18f8b 100644 --- a/doc/html/functions_func_b.html +++ b/doc/html/functions_func_b.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -143,7 +143,7 @@

- b -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_c.html b/doc/html/functions_func_c.html index 965c7eee..727f4883 100644 --- a/doc/html/functions_func_c.html +++ b/doc/html/functions_func_c.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -184,7 +184,7 @@

- c -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_d.html b/doc/html/functions_func_d.html index f19dfde1..228f93b0 100644 --- a/doc/html/functions_func_d.html +++ b/doc/html/functions_func_d.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -119,7 +119,7 @@

- d -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_e.html b/doc/html/functions_func_e.html index fa726dd7..3f577bdd 100644 --- a/doc/html/functions_func_e.html +++ b/doc/html/functions_func_e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -148,7 +148,7 @@

- e -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_f.html b/doc/html/functions_func_f.html index 080b61f6..5939f647 100644 --- a/doc/html/functions_func_f.html +++ b/doc/html/functions_func_f.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -228,7 +228,7 @@

- f -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_g.html b/doc/html/functions_func_g.html index ba89902b..e68bcce3 100644 --- a/doc/html/functions_func_g.html +++ b/doc/html/functions_func_g.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -96,11 +96,20 @@

- g -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_h.html b/doc/html/functions_func_h.html index f8a8cc3c..9df2da37 100644 --- a/doc/html/functions_func_h.html +++ b/doc/html/functions_func_h.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -124,7 +124,7 @@

- h -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_i.html b/doc/html/functions_func_i.html index aa026f2d..e3ea6e45 100644 --- a/doc/html/functions_func_i.html +++ b/doc/html/functions_func_i.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -216,7 +216,7 @@

- i -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_l.html b/doc/html/functions_func_l.html index aa1333d9..069a4d33 100644 --- a/doc/html/functions_func_l.html +++ b/doc/html/functions_func_l.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -177,7 +177,7 @@

- l -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_m.html b/doc/html/functions_func_m.html index 3a714788..cb54e22a 100644 --- a/doc/html/functions_func_m.html +++ b/doc/html/functions_func_m.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -126,7 +126,7 @@

- m -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_n.html b/doc/html/functions_func_n.html index 09c2baa0..57abc8e7 100644 --- a/doc/html/functions_func_n.html +++ b/doc/html/functions_func_n.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -126,7 +126,7 @@

- n -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_o.html b/doc/html/functions_func_o.html index a0aee190..08bd5476 100644 --- a/doc/html/functions_func_o.html +++ b/doc/html/functions_func_o.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -308,7 +308,7 @@

- o -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_p.html b/doc/html/functions_func_p.html index 93a33465..fa71ab00 100644 --- a/doc/html/functions_func_p.html +++ b/doc/html/functions_func_p.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -126,14 +126,14 @@

- p -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_r.html b/doc/html/functions_func_r.html index 2dfa9fc9..0d772132 100644 --- a/doc/html/functions_func_r.html +++ b/doc/html/functions_func_r.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -132,7 +132,7 @@

- r -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_s.html b/doc/html/functions_func_s.html index f17ed996..bb580c56 100644 --- a/doc/html/functions_func_s.html +++ b/doc/html/functions_func_s.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -323,7 +323,7 @@

- s -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_t.html b/doc/html/functions_func_t.html index f72116b6..8fac8567 100644 --- a/doc/html/functions_func_t.html +++ b/doc/html/functions_func_t.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -117,7 +117,7 @@

- t -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_u.html b/doc/html/functions_func_u.html index 334cf140..a291ac86 100644 --- a/doc/html/functions_func_u.html +++ b/doc/html/functions_func_u.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -119,7 +119,7 @@

- u -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_v.html b/doc/html/functions_func_v.html index a4de62c6..bf629966 100644 --- a/doc/html/functions_func_v.html +++ b/doc/html/functions_func_v.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,7 +103,7 @@

- v -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_w.html b/doc/html/functions_func_w.html index 12b1130e..a8b5e1ef 100644 --- a/doc/html/functions_func_w.html +++ b/doc/html/functions_func_w.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -214,7 +214,7 @@

- w -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_x.html b/doc/html/functions_func_x.html index ae609a1d..ba4302a9 100644 --- a/doc/html/functions_func_x.html +++ b/doc/html/functions_func_x.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -97,7 +97,7 @@

- x -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_y.html b/doc/html/functions_func_y.html index b4128a1b..b2610bce 100644 --- a/doc/html/functions_func_y.html +++ b/doc/html/functions_func_y.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,7 +103,7 @@

- y -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html index 58101b52..59156613 100644 --- a/doc/html/functions_g.html +++ b/doc/html/functions_g.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,11 +103,20 @@

- g -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html index 44469612..582c5b37 100644 --- a/doc/html/functions_h.html +++ b/doc/html/functions_h.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -114,7 +114,7 @@

- h -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html index 33a84edf..ff21911f 100644 --- a/doc/html/functions_i.html +++ b/doc/html/functions_i.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -379,7 +379,7 @@

- i -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_j.html b/doc/html/functions_j.html index 6fe76ded..726bcd51 100644 --- a/doc/html/functions_j.html +++ b/doc/html/functions_j.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -98,7 +98,7 @@

- j -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_k.html b/doc/html/functions_k.html index 7ecea793..dec8fcff 100644 --- a/doc/html/functions_k.html +++ b/doc/html/functions_k.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -114,7 +114,7 @@

- k -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html index bd3a5836..0d227ebf 100644 --- a/doc/html/functions_l.html +++ b/doc/html/functions_l.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -113,7 +113,7 @@

- l -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html index 6d22d93d..6c44f4aa 100644 --- a/doc/html/functions_m.html +++ b/doc/html/functions_m.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -280,7 +280,7 @@

- m -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html index 493fd579..f9f63045 100644 --- a/doc/html/functions_n.html +++ b/doc/html/functions_n.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -175,7 +175,7 @@

- n -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html index 4f92b271..83e34bbb 100644 --- a/doc/html/functions_o.html +++ b/doc/html/functions_o.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -341,7 +341,7 @@

- o -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html index 7359fa59..a7234a1e 100644 --- a/doc/html/functions_p.html +++ b/doc/html/functions_p.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -145,17 +145,16 @@

- p -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_q.html b/doc/html/functions_q.html index db3e7cc4..05351f85 100644 --- a/doc/html/functions_q.html +++ b/doc/html/functions_q.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -91,18 +91,20 @@
Here is a list of all class members with links to the classes they belong to:

- q -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html index 96bba7b5..b0345357 100644 --- a/doc/html/functions_r.html +++ b/doc/html/functions_r.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -94,12 +94,12 @@

- r -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html index 6417f17c..37ca1856 100644 --- a/doc/html/functions_rela.html +++ b/doc/html/functions_rela.html @@ -21,7 +21,7 @@
Class Members - Related Functions

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -77,7 +77,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html index 3da02ba4..0819ebfc 100644 --- a/doc/html/functions_s.html +++ b/doc/html/functions_s.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -374,12 +374,12 @@

- s -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html index df6a92e0..1a56d62e 100644 --- a/doc/html/functions_t.html +++ b/doc/html/functions_t.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -114,12 +114,12 @@

- t -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html index 0f42c1c9..dd4f29d0 100644 --- a/doc/html/functions_type.html +++ b/doc/html/functions_type.html @@ -21,7 +21,7 @@
Class Members - Typedefs

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -168,7 +168,7 @@

- f -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html index 639a79dc..f9f1c85a 100644 --- a/doc/html/functions_u.html +++ b/doc/html/functions_u.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -91,12 +91,12 @@
Here is a list of all class members with links to the classes they belong to:

- u -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html index c28debda..eece453c 100644 --- a/doc/html/functions_v.html +++ b/doc/html/functions_v.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -129,7 +129,7 @@

- v -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index b71fb925..619cf00b 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -126,7 +126,7 @@

- a -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_b.html b/doc/html/functions_vars_b.html index ffd610db..357c1cbf 100644 --- a/doc/html/functions_vars_b.html +++ b/doc/html/functions_vars_b.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -147,7 +147,7 @@

- b -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_c.html b/doc/html/functions_vars_c.html index 71b1ea4b..dde3af97 100644 --- a/doc/html/functions_vars_c.html +++ b/doc/html/functions_vars_c.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -207,7 +207,7 @@

- c -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_d.html b/doc/html/functions_vars_d.html index 2fbade6e..be831789 100644 --- a/doc/html/functions_vars_d.html +++ b/doc/html/functions_vars_d.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -120,7 +120,7 @@

- d -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_e.html b/doc/html/functions_vars_e.html index fd2310a9..36d480f0 100644 --- a/doc/html/functions_vars_e.html +++ b/doc/html/functions_vars_e.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -143,7 +143,7 @@

- e -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_f.html b/doc/html/functions_vars_f.html index 9a67f6e9..a44026c6 100644 --- a/doc/html/functions_vars_f.html +++ b/doc/html/functions_vars_f.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -128,7 +128,7 @@

- f -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_g.html b/doc/html/functions_vars_g.html index 0d05458e..d5163ddf 100644 --- a/doc/html/functions_vars_g.html +++ b/doc/html/functions_vars_g.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -107,7 +107,7 @@

- g -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_h.html b/doc/html/functions_vars_h.html index ea27c078..7e28e576 100644 --- a/doc/html/functions_vars_h.html +++ b/doc/html/functions_vars_h.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -117,7 +117,7 @@

- h -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_i.html b/doc/html/functions_vars_i.html index 0c43702c..09c7c4b0 100644 --- a/doc/html/functions_vars_i.html +++ b/doc/html/functions_vars_i.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -234,7 +234,7 @@

- i -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_j.html b/doc/html/functions_vars_j.html index 261e1de8..55befadb 100644 --- a/doc/html/functions_vars_j.html +++ b/doc/html/functions_vars_j.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -96,7 +96,7 @@

- j -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_k.html b/doc/html/functions_vars_k.html index c504e7a5..36389dae 100644 --- a/doc/html/functions_vars_k.html +++ b/doc/html/functions_vars_k.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -108,7 +108,7 @@

- k -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_l.html b/doc/html/functions_vars_l.html index f5d307aa..346e85c5 100644 --- a/doc/html/functions_vars_l.html +++ b/doc/html/functions_vars_l.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -169,7 +169,7 @@

- l -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_m.html b/doc/html/functions_vars_m.html index 84761e5f..cba3fecd 100644 --- a/doc/html/functions_vars_m.html +++ b/doc/html/functions_vars_m.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -168,7 +168,7 @@

- m -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_n.html b/doc/html/functions_vars_n.html index 3f115591..02985536 100644 --- a/doc/html/functions_vars_n.html +++ b/doc/html/functions_vars_n.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -133,7 +133,7 @@

- n -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_o.html b/doc/html/functions_vars_o.html index 3a0720d5..a45ee309 100644 --- a/doc/html/functions_vars_o.html +++ b/doc/html/functions_vars_o.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -121,7 +121,7 @@

- o -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_p.html b/doc/html/functions_vars_p.html index 0e3cee5c..bf1eff97 100644 --- a/doc/html/functions_vars_p.html +++ b/doc/html/functions_vars_p.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -140,7 +140,7 @@

- p -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_q.html b/doc/html/functions_vars_q.html index 2a412937..f9a91bb6 100644 --- a/doc/html/functions_vars_q.html +++ b/doc/html/functions_vars_q.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -89,18 +89,20 @@  

- q -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_r.html b/doc/html/functions_vars_r.html index c1dba5ff..98916ea5 100644 --- a/doc/html/functions_vars_r.html +++ b/doc/html/functions_vars_r.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -129,7 +129,7 @@

- r -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_s.html b/doc/html/functions_vars_s.html index 05e819ff..56deec37 100644 --- a/doc/html/functions_vars_s.html +++ b/doc/html/functions_vars_s.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -181,7 +181,7 @@

- s -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_t.html b/doc/html/functions_vars_t.html index a4a47828..5dbbe02b 100644 --- a/doc/html/functions_vars_t.html +++ b/doc/html/functions_vars_t.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -117,7 +117,7 @@

- t -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_u.html b/doc/html/functions_vars_u.html index f64b675f..b71e4b6e 100644 --- a/doc/html/functions_vars_u.html +++ b/doc/html/functions_vars_u.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -89,12 +89,12 @@  

- u -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_v.html b/doc/html/functions_vars_v.html index 428ef876..d25c586b 100644 --- a/doc/html/functions_vars_v.html +++ b/doc/html/functions_vars_v.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -102,7 +102,7 @@

- v -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_w.html b/doc/html/functions_vars_w.html index 100168f8..396b9a91 100644 --- a/doc/html/functions_vars_w.html +++ b/doc/html/functions_vars_w.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -105,7 +105,7 @@

- w -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_x.html b/doc/html/functions_vars_x.html index 76753067..d21e66f1 100644 --- a/doc/html/functions_vars_x.html +++ b/doc/html/functions_vars_x.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -99,7 +99,7 @@

- x -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_z.html b/doc/html/functions_vars_z.html index a66ad69e..645853bf 100644 --- a/doc/html/functions_vars_z.html +++ b/doc/html/functions_vars_z.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -96,7 +96,7 @@

- z -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_w.html b/doc/html/functions_w.html index eac66b78..2c9106d3 100644 --- a/doc/html/functions_w.html +++ b/doc/html/functions_w.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -230,7 +230,7 @@

- w -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_x.html b/doc/html/functions_x.html index 609d041f..f1a28495 100644 --- a/doc/html/functions_x.html +++ b/doc/html/functions_x.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -107,7 +107,7 @@

- x -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_y.html b/doc/html/functions_y.html index 8c5ad131..e1ab48e5 100644 --- a/doc/html/functions_y.html +++ b/doc/html/functions_y.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -107,7 +107,7 @@

- y -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/functions_z.html b/doc/html/functions_z.html index a21e863b..f482e48c 100644 --- a/doc/html/functions_z.html +++ b/doc/html/functions_z.html @@ -21,7 +21,7 @@
Class Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -98,7 +98,7 @@

- z -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/fuzzymatcher_8h.html b/doc/html/fuzzymatcher_8h.html index d8ee94ea..3b34ad6a 100644 --- a/doc/html/fuzzymatcher_8h.html +++ b/doc/html/fuzzymatcher_8h.html @@ -21,7 +21,7 @@
fuzzymatcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -108,7 +108,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/globals.html b/doc/html/globals.html index 0b929a7e..d2e9bd27 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -21,7 +21,7 @@
File Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -394,7 +394,7 @@

- y -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html index 8f427fee..d8257f19 100644 --- a/doc/html/globals_defs.html +++ b/doc/html/globals_defs.html @@ -21,7 +21,7 @@
File Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -339,7 +339,7 @@

- y -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index 852558f2..32cc920f 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -21,7 +21,7 @@
File Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -79,7 +79,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html index 9833e7d6..e6591498 100644 --- a/doc/html/globals_vars.html +++ b/doc/html/globals_vars.html @@ -21,7 +21,7 @@
File Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html index 56b205c4..1244e84d 100644 --- a/doc/html/graph_legend.html +++ b/doc/html/graph_legend.html @@ -21,7 +21,7 @@
Graph Legend

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html index 48436677..9c80312d 100644 --- a/doc/html/hierarchy.html +++ b/doc/html/hierarchy.html @@ -21,7 +21,7 @@
Class Hierarchy

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -131,7 +131,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/index.html b/doc/html/index.html index b7ba334f..94d9c3b3 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -21,7 +21,7 @@
RE/flex user guide

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -266,7 +266,7 @@

The RE/flex reflex::Matcher class compiles regex patterns to efficient finite state machines (FSMs) when instantiated. These deterministic automata speed up matching considerably, at the cost of the initial FSM construction (see further below for hints on how to avoid this run time overhead). RE/flex matchers only support POSIX mode matching, see POSIX versus Perl matching .

The reflex::BoostMatcher and reflex::BoostPosixMatcher classes are for Perl mode and POSIX mode matching, respectively.

-

The reflex::PCRE2Matcher and reflex::PCRE2UTFMatcher classes are for Perl mode matching only, where the latter uses native PCRE2 Unicode matching with PCRE2_UTF+PCRE2_UCP. The PCRE2 matchers use JIT optimizations to speed up matching, which comes at a cost of extra processing when the matcher is instantiated. The benefit outweighs the cost when many matches are processed.

+

The reflex::PCRE2Matcher and reflex::PCRE2UTFMatcher classes are for Perl mode matching, where the latter uses native PCRE2 Unicode matching with PCRE2_UTF+PCRE2_UCP. The PCRE2 matchers use JIT optimizations to speed up matching, which comes at a cost of extra processing when the matcher is instantiated. The benefit outweighs the cost when many matches are processed.

C++11 std::regex supports ECMAScript and AWK POSIX syntax with the StdMatcher and reflex::StdPosixMatcher classes respectively. The std::regex syntax is therefore a lot more limited compared to Boost.Regex, PCRE2, and RE/flex.

The RE/flex regex common interface API is implemented in an abstract base class template reflex::AbstractMatcher from which regex matchers are derived. This regex API offers a common interface that is used in the generated scanner. You can also use this API in your C++ application for pattern matching.

The RE/flex abstract matcher offers four operations for matching with the regex engines that are derived from this base abstract class:

@@ -366,14 +366,14 @@

The type reflex::AbstractMatcher::Operation is a functor that defines find, scan, and split. The functor operation returns true upon success. The use of an iterator is simply supported by invoking begin() and end() methods of the functor, which return reflex::AbstractMatcher::iterator. Likewise, there are also cbegin() and cend() methods that return a const_iterator.

We can use these RE/flex iterators in C++ for many tasks, including to populate containers by stuffing the iterator's text matches into it:

-
#include <reflex/pcre2matcher.h> // reflex::PCRE2Matcher, reflex::Input
#include <vector> // std::vector
// use a PCRE2Matcher to convert words of a sentence into a string vector
reflex::PCRE2Matcher matcher("\\w+", "How now brown cow.");
std::vector<std::string> words(matcher.find.begin(), matcher.find.end());

As a result, the words vector contains "How", "now", "brown", "cow".

+
#include <reflex/pcre2matcher.h> // reflex::PCRE2UTFMatcher, reflex::Input
#include <vector> // std::vector
// use a PCRE2UTFMatcher to convert words of a sentence into a string vector
reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow.");
std::vector<std::string> words(matcher.find.begin(), matcher.find.end());

As a result, the words vector contains "How", "now", "brown", "cow".

Casting a matcher object to std::string is the same as converting text() to a string with std::string(text(), size()), which in the example above is done to construct the words vector. Casting a matcher object to std::wstring is similar, but also converts the UTF-8 text() match to a wide string.

RE/flex iterators are useful in C++11 range-based loops. For example:

// Requires C++11, compile with: cc -std=c++11
#include <reflex/stdmatcher.h> // reflex::StdMatcher, reflex::Input, std::regex
// use a StdMatcher to search for words in a sentence using an iterator
reflex::StdMatcher matcher("\\w+", "How now brown cow.");
for (auto& match : matcher.find)
std::cout << "Found " << match.text() << std::endl;

When executed this code prints:

Found How
 Found now
 Found brown
 Found cow
-

And RE/flex iterators are also useful with STL algorithms and lambdas, for example to compute a histogram of word frequencies:

+

And RE/flex iterators are also useful with algorithms and lambdas, for example to compute a histogram of word frequencies:

// Requires C++11, compile with: cc -std=c++11
#include <reflex/stdmatcher.h> // reflex::StdMatcher, reflex::Input, std::regex
#include <algorithm> // std::for_each
// use a StdMatcher to create a frequency histogram of group captures
reflex::StdMatcher matcher("(now)|(cow)|(ow)", "How now brown cow.");
size_t freq[4] = { 0, 0, 0, 0 };
std::for_each(matcher.find.begin(), matcher.find.end(), [&](size_t n){ ++freq[n]; });

As a result, the freq array contains 0, 1, 1, and 2.

Casting the matcher object to a size_t returns the group capture index, which is used in the example shown above. We also us it in the example below that is capturing all regex pattern groupings into a vector:

#include <reflex/pcre2matcher.h> // reflex::PCRE2Matcher, reflex::Input
#include <vector> // std::vector
// use a PCRE2Matcher to convert captured groups into a numeric vector
reflex::PCRE2Matcher matcher("(now)|(cow)|(ow)", "How now brown cow.");
std::vector<size_t> captures(matcher.find.begin(), matcher.find.end());

As a result, the vector contains the group captures 3, 1, 3, and 2.

@@ -2908,7 +2908,7 @@

-

where the RE/flex reflex::Pattern class represents a regex pattern. Patterns as regex texts are internally compiled into deterministic finite state machines by the reflex::Pattern class. The machines are used by the reflex::Matcher for fast matching of regex patterns on some given input. The reflex::Matcher is faster than the Boost.Regex and PCRE2 matchers. The reflex::FuzzyMatcher subclass is included with RE/flex and performs approximate pattern matching, see the FuzzyMatcher readme.

+

where the RE/flex reflex::Pattern class represents a regex pattern. Patterns as regex texts are internally compiled into deterministic finite state machines by the reflex::Pattern class. The machines are used by the reflex::Matcher for fast matching of regex patterns on some given input. The reflex::Matcher is faster than the Boost.Regex and PCRE2 matchers. The reflex::FuzzyMatcher subclass is included and performs approximate pattern matching, see the FuzzyMatcher readme.

A reflex::Matcher engine is constructed from a reflex::Pattern object, or a string regex, and some given input:

#include <reflex/matcher.h>
reflex::Matcher matcher( reflex::Pattern or string, reflex::Input [, "options"] )

The regex is specified as a string or a reflex::Pattern object, see The reflex::Pattern class below.

We use option "N" to permit empty matches when searching input with reflex::Matcher::find. Option "T=8" sets the tab size to 8 for Indent/nodent/dedent matching. Option "W" makes patterns match as words, i.e. a non-word Unicode character precedes and follows the pattern (only applies to reflex::Matcher and reflex::FuzzyMatcher.)

@@ -3081,14 +3081,15 @@

find

The find() method and find.begin()...find.end() iterator range are used to search for a match in the given input.

The find() method returns a nonzero "accept" value (the size_t accept() group capture index value or the value 1 if no groups are used) for a match and zero otherwise.

-

For example, to find all words in a string with PCRE2:

-
#include <reflex/pcre2matcher.h> // reflex::PCRE2Matcher, reflex::Input
reflex::PCRE2Matcher matcher("\\w+", "How now brown cow.");
while (matcher.find() != 0)
std::cout << matcher.text() << std::endl;

When executed this code prints:

How
+

For example, to find all words in a string with PCRE2 on UTF-8 input using reflex::PCRE2UTFMatcher:

+
#include <reflex/pcre2matcher.h> // reflex::PCRE2UTFMatcher, reflex::Input
reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow.");
while (matcher.find() != 0)
std::cout << matcher.text() << std::endl;

When executed this code prints:

How
 now
 brown
 cow
 

The iterator range find.begin()...find.end() serves as an input filter.

For example, in C++11 we can use a range-based loop to loop over matches using the find iterator:

-
#include <reflex/pcre2matcher.h> // reflex::PCRE2Matcher, reflex::Input
for (auto& match : reflex::PCRE2Matcher("\\w+", "How now brown cow.").find)
std::cout << match.text() << std::endl;

Iterators can be used with STL algorithms and other iterator functions. For example to count words in a string:

+
#include <reflex/pcre2matcher.h> // reflex::PCRE2UTFMatcher, reflex::Input
for (auto& match : reflex::PCRE2UTFMatcher("\\w+", "How now brown cow.").find)
std::cout << match.text() << std::endl;
Note
: we cannot generally simplify this loop to the following, because the temporary matcher object is destroyed (some compilers handle this in C++23):
+
for (auto& match : reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow.").find);
std::cout << "Found " << match.text() << std::endl;

Iterators can be used with algorithms and other iterator functions. For example to count words in a string:

#include <reflex/pcre2matcher.h> // reflex::PCRE2Matcher, reflex::Input
reflex::PCRE2Matcher matcher("\\w+", "How now brown cow.");
std::cout << std::distance(matcher.find.begin(), matcher.find.end()) << std::endl;

When executed this code prints:

4
 

The find() method returns the group capture index that can be used as a selector.

See also Properties of a match.

@@ -3759,11 +3760,11 @@

The Free Software Foundation maintains a BSD-3 License Wiki.

🔝 Back to table of contents

-

Copyright (c) 2016-2020, Robert van Engelen, Genivia Inc. All rights reserved.

+

Copyright (c) 2016,2024, Robert van Engelen. All rights reserved.

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/index_8md.html b/doc/html/index_8md.html index d1e776a1..e1c82a4c 100644 --- a/doc/html/index_8md.html +++ b/doc/html/index_8md.html @@ -21,7 +21,7 @@
index.md File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -52,7 +52,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/inherits.html b/doc/html/inherits.html index 86afc4c6..55fbcf55 100644 --- a/doc/html/inherits.html +++ b/doc/html/inherits.html @@ -21,7 +21,7 @@
Class Hierarchy

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -295,7 +295,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/input_8h.html b/doc/html/input_8h.html index 720843f7..62c5461a 100644 --- a/doc/html/input_8h.html +++ b/doc/html/input_8h.html @@ -21,7 +21,7 @@
input.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -140,7 +140,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/linematcher_8h.html b/doc/html/linematcher_8h.html index e1baf049..3bf8c71c 100644 --- a/doc/html/linematcher_8h.html +++ b/doc/html/linematcher_8h.html @@ -21,7 +21,7 @@
linematcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/matcher_8h.html b/doc/html/matcher_8h.html index 26493efb..e4e3769d 100644 --- a/doc/html/matcher_8h.html +++ b/doc/html/matcher_8h.html @@ -21,7 +21,7 @@
matcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -135,7 +135,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html index 715a5917..c4ceac54 100644 --- a/doc/html/namespacemembers.html +++ b/doc/html/namespacemembers.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -252,7 +252,7 @@

- z -

+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html index 724eb51c..62eb08fa 100644 --- a/doc/html/namespacemembers_func.html +++ b/doc/html/namespacemembers_func.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -119,7 +119,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html index 8cc42fe7..5f733ba3 100644 --- a/doc/html/namespacemembers_type.html +++ b/doc/html/namespacemembers_type.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html index f5b01c26..b441c50c 100644 --- a/doc/html/namespacemembers_vars.html +++ b/doc/html/namespacemembers_vars.html @@ -21,7 +21,7 @@
Namespace Members

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -100,7 +100,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex.html b/doc/html/namespacereflex.html index 4d1a9f51..f2267c85 100644 --- a/doc/html/namespacereflex.html +++ b/doc/html/namespacereflex.html @@ -21,7 +21,7 @@
reflex Namespace Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1203,7 +1203,7 @@

Variable Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_posix.html b/doc/html/namespacereflex_1_1_posix.html index 0b3367ea..65350ded 100644 --- a/doc/html/namespacereflex_1_1_posix.html +++ b/doc/html/namespacereflex_1_1_posix.html @@ -21,7 +21,7 @@
reflex::Posix Namespace Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -87,7 +87,7 @@

Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_unicode.html b/doc/html/namespacereflex_1_1_unicode.html index ae053c86..62fade69 100644 --- a/doc/html/namespacereflex_1_1_unicode.html +++ b/doc/html/namespacereflex_1_1_unicode.html @@ -21,7 +21,7 @@
reflex::Unicode Namespace Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -115,7 +115,7 @@

Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1convert__flag.html b/doc/html/namespacereflex_1_1convert__flag.html index 8933e74a..1df5a310 100644 --- a/doc/html/namespacereflex_1_1convert__flag.html +++ b/doc/html/namespacereflex_1_1convert__flag.html @@ -21,7 +21,7 @@
reflex::convert_flag Namespace Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -284,7 +284,7 @@

Variable Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html index fd33fa31..005eb212 100644 --- a/doc/html/namespaces.html +++ b/doc/html/namespaces.html @@ -21,7 +21,7 @@
Namespace List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -60,7 +60,7 @@
+Converted on Thu Aug 1 2024 11:49:39 by Doxygen 1.8.11
diff --git a/doc/html/pattern_8h.html b/doc/html/pattern_8h.html index 2d09c900..068c4a52 100644 --- a/doc/html/pattern_8h.html +++ b/doc/html/pattern_8h.html @@ -21,7 +21,7 @@
pattern.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -163,7 +163,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/pcre2matcher_8h.html b/doc/html/pcre2matcher_8h.html index 0e97b16b..ff649af3 100644 --- a/doc/html/pcre2matcher_8h.html +++ b/doc/html/pcre2matcher_8h.html @@ -21,7 +21,7 @@
pcre2matcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -119,7 +119,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/posix_8h.html b/doc/html/posix_8h.html index 85b0113a..8f995852 100644 --- a/doc/html/posix_8h.html +++ b/doc/html/posix_8h.html @@ -21,7 +21,7 @@
posix.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -104,7 +104,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/ranges_8h.html b/doc/html/ranges_8h.html index 9e93a9d1..3be8528d 100644 --- a/doc/html/ranges_8h.html +++ b/doc/html/ranges_8h.html @@ -21,7 +21,7 @@
ranges.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -106,7 +106,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8cpp.html b/doc/html/reflex_8cpp.html index e8c91006..2c2c62db 100644 --- a/doc/html/reflex_8cpp.html +++ b/doc/html/reflex_8cpp.html @@ -21,7 +21,7 @@
reflex.cpp File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -386,7 +386,7 @@

Variable Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8h.html b/doc/html/reflex_8h.html index 1a58262e..081e20e9 100644 --- a/doc/html/reflex_8h.html +++ b/doc/html/reflex_8h.html @@ -21,7 +21,7 @@
reflex.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -156,7 +156,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/setop_8h.html b/doc/html/setop_8h.html index cee5a12a..31e8feb3 100644 --- a/doc/html/setop_8h.html +++ b/doc/html/setop_8h.html @@ -21,7 +21,7 @@
setop.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -143,7 +143,7 @@

Example

std::set<int> s1;
s1.insert(1);
assert(reflex::is_in_set(1, s1) == true);
std::set<int> s2;
s2.insert(1);
s2.insert(2);
assert(reflex::is_disjoint(s1, s2) == false);
assert(reflex::is_subset(s1, s2) == true);
reflex::lazy_union< std::set<int>,std::set<int> > U(s1, s2);
for (reflex::lazy_union< std::set<int>,std::set<int> >::iterator i = U.begin(); i != U.end(); ++i)
std::cout << *i << std::endl; // prints 1 and 2
reflex::lazy_intersection< std::set<int>,std::set<int> > I(s1, s2);
for (reflex::lazy_intersection< std::set<int>,std::set<int> >::iterator i = I.begin(); i != I.end(); ++i)
std::cout << *i << std::endl; // prints 1
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/simd_8h.html b/doc/html/simd_8h.html index 6bc64452..1146ad06 100644 --- a/doc/html/simd_8h.html +++ b/doc/html/simd_8h.html @@ -21,7 +21,7 @@
simd.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/stdmatcher_8h.html b/doc/html/stdmatcher_8h.html index 205869be..0ba94ea4 100644 --- a/doc/html/stdmatcher_8h.html +++ b/doc/html/stdmatcher_8h.html @@ -21,7 +21,7 @@
stdmatcher.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_code-members.html b/doc/html/struct_reflex_1_1_code-members.html index 3e40c8d2..80b39d0d 100644 --- a/doc/html/struct_reflex_1_1_code-members.html +++ b/doc/html/struct_reflex_1_1_code-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_code.html b/doc/html/struct_reflex_1_1_code.html index 265d9612..d1f66f2d 100644 --- a/doc/html/struct_reflex_1_1_code.html +++ b/doc/html/struct_reflex_1_1_code.html @@ -21,7 +21,7 @@
Reflex::Code Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -182,7 +182,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_library-members.html b/doc/html/struct_reflex_1_1_library-members.html index 3ae0ef1b..6010cc06 100644 --- a/doc/html/struct_reflex_1_1_library-members.html +++ b/doc/html/struct_reflex_1_1_library-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_library.html b/doc/html/struct_reflex_1_1_library.html index 0d97d1d1..b922915a 100644 --- a/doc/html/struct_reflex_1_1_library.html +++ b/doc/html/struct_reflex_1_1_library.html @@ -21,7 +21,7 @@
Reflex::Library Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -160,7 +160,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_rule-members.html b/doc/html/struct_reflex_1_1_rule-members.html index fd4dafe8..3b6160dd 100644 --- a/doc/html/struct_reflex_1_1_rule-members.html +++ b/doc/html/struct_reflex_1_1_rule-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/struct_reflex_1_1_rule.html b/doc/html/struct_reflex_1_1_rule.html index 37bcb4b7..719cc708 100644 --- a/doc/html/struct_reflex_1_1_rule.html +++ b/doc/html/struct_reflex_1_1_rule.html @@ -21,7 +21,7 @@
Reflex::Rule Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -183,7 +183,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html index 66820ba1..b3aa0f02 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_const-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -73,7 +73,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html index 51ffb857..3bb0dec5 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_const.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Const Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -400,7 +400,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_context-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_context-members.html index 5f1dd419..4cd66c0c 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_context-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_context-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_context.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_context.html index 6c366a3f..933ac57b 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_context.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_context.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Context Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -198,7 +198,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_handler-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_handler-members.html index 8267a6fa..769347ce 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_handler-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_handler-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_handler.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_handler.html index 26e96377..2a37c3ee 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_handler.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_handler.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Handler Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -149,7 +149,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html index fd5d01a8..f9673ff4 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_option-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html b/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html index 7f7a2282..520b2440 100644 --- a/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html +++ b/doc/html/structreflex_1_1_abstract_matcher_1_1_option.html @@ -21,7 +21,7 @@
reflex::AbstractMatcher::Option Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -190,7 +190,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_bits_1_1_bitref-members.html b/doc/html/structreflex_1_1_bits_1_1_bitref-members.html index 320b170a..2734add1 100644 --- a/doc/html/structreflex_1_1_bits_1_1_bitref-members.html +++ b/doc/html/structreflex_1_1_bits_1_1_bitref-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -68,7 +68,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_bits_1_1_bitref.html b/doc/html/structreflex_1_1_bits_1_1_bitref.html index 8762b16d..1bc459b3 100644 --- a/doc/html/structreflex_1_1_bits_1_1_bitref.html +++ b/doc/html/structreflex_1_1_bits_1_1_bitref.html @@ -21,7 +21,7 @@
reflex::Bits::Bitref Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -329,7 +329,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point-members.html b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point-members.html index 0456725b..04ba4521 100644 --- a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point-members.html +++ b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point.html b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point.html index 1a96dbaf..ee51e1a0 100644 --- a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point.html +++ b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_backtrack_point.html @@ -21,7 +21,7 @@
reflex::FuzzyMatcher::BacktrackPoint Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -207,7 +207,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state-members.html b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state-members.html index 5e5b9b54..d8bc2876 100644 --- a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state-members.html +++ b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state.html b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state.html index ca1402ea..bc79f4eb 100644 --- a/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state.html +++ b/doc/html/structreflex_1_1_fuzzy_matcher_1_1_save_state.html @@ -21,7 +21,7 @@
reflex::FuzzyMatcher::SaveState Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -232,7 +232,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1_handler-members.html b/doc/html/structreflex_1_1_input_1_1_handler-members.html index ff739db9..bda8afa1 100644 --- a/doc/html/structreflex_1_1_input_1_1_handler-members.html +++ b/doc/html/structreflex_1_1_input_1_1_handler-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1_handler.html b/doc/html/structreflex_1_1_input_1_1_handler.html index 77df9bcf..7d6db2ec 100644 --- a/doc/html/structreflex_1_1_input_1_1_handler.html +++ b/doc/html/structreflex_1_1_input_1_1_handler.html @@ -21,7 +21,7 @@
reflex::Input::Handler Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -127,7 +127,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1file__encoding-members.html b/doc/html/structreflex_1_1_input_1_1file__encoding-members.html index 5ceb3079..41d0edd4 100644 --- a/doc/html/structreflex_1_1_input_1_1file__encoding-members.html +++ b/doc/html/structreflex_1_1_input_1_1file__encoding-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -99,7 +99,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_input_1_1file__encoding.html b/doc/html/structreflex_1_1_input_1_1file__encoding.html index f952da8f..94b0ccd4 100644 --- a/doc/html/structreflex_1_1_input_1_1file__encoding.html +++ b/doc/html/structreflex_1_1_input_1_1file__encoding.html @@ -21,7 +21,7 @@
reflex::Input::file_encoding Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -1050,7 +1050,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html b/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html index 6540aef5..2f9f4e91 100644 --- a/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html +++ b/doc/html/structreflex_1_1_matcher_1_1_f_s_m-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html b/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html index 777875ed..6eddf627 100644 --- a/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html +++ b/doc/html/structreflex_1_1_matcher_1_1_f_s_m.html @@ -21,7 +21,7 @@
reflex::Matcher::FSM Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -147,7 +147,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_chars-members.html b/doc/html/structreflex_1_1_pattern_1_1_chars-members.html index d4b1b92c..19f84e96 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_chars-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_chars-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -95,7 +95,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_chars.html b/doc/html/structreflex_1_1_pattern_1_1_chars.html index e9b9fffa..f7687150 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_chars.html +++ b/doc/html/structreflex_1_1_pattern_1_1_chars.html @@ -21,7 +21,7 @@
reflex::Pattern::Chars Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -981,7 +981,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_const-members.html b/doc/html/structreflex_1_1_pattern_1_1_const-members.html index 8a6c94b3..e6d8eb20 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_const-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_const-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_const.html b/doc/html/structreflex_1_1_pattern_1_1_const.html index a3c5e651..47bacbe9 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_const.html +++ b/doc/html/structreflex_1_1_pattern_1_1_const.html @@ -21,7 +21,7 @@
reflex::Pattern::Const Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -83,7 +83,7 @@ static const Index HALT = 0xFFFF  HALT marker for GOTO opcodes, must be 16 bit max. More...
  -static const Hash HASH = 0x1000 +static const Hash HASH = 0x1000  size of the predict match array More...
  @@ -164,7 +164,7 @@ - +
const Hash reflex::Pattern::Const::HASH = 0x1000const Hash reflex::Pattern::Const::HASH = 0x1000
@@ -250,7 +250,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_d_f_a-members.html b/doc/html/structreflex_1_1_pattern_1_1_d_f_a-members.html index ef402287..d0194a0a 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_d_f_a-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_d_f_a-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -77,7 +77,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_d_f_a.html b/doc/html/structreflex_1_1_pattern_1_1_d_f_a.html index 970677ba..da52a29d 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_d_f_a.html +++ b/doc/html/structreflex_1_1_pattern_1_1_d_f_a.html @@ -21,7 +21,7 @@
reflex::Pattern::DFA Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -535,7 +535,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state-members.html b/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state-members.html index 40caa520..56debcbf 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state.html b/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state.html index fa727c26..fd0aefef 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state.html +++ b/doc/html/structreflex_1_1_pattern_1_1_d_f_a_1_1_state.html @@ -21,7 +21,7 @@
reflex::Pattern::DFA::State Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -342,7 +342,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_h_f_a-members.html b/doc/html/structreflex_1_1_pattern_1_1_h_f_a-members.html index 44fb4750..fa54a9a8 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_h_f_a-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_h_f_a-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_h_f_a.html b/doc/html/structreflex_1_1_pattern_1_1_h_f_a.html index 5bf0da17..b4dfa883 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_h_f_a.html +++ b/doc/html/structreflex_1_1_pattern_1_1_h_f_a.html @@ -21,7 +21,7 @@
reflex::Pattern::HFA Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -74,7 +74,7 @@ - + @@ -133,7 +133,7 @@

Public Types

typedef ORanges< HashHashRange
typedef ORanges< HashHashRange
 
typedef std::array< HashRange, MAX_DEPTHHashRanges
 
- +
typedef ORanges<Hash> reflex::Pattern::HFA::HashRangetypedef ORanges<Hash> reflex::Pattern::HFA::HashRange
@@ -331,7 +331,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_mod_const-members.html b/doc/html/structreflex_1_1_pattern_1_1_mod_const-members.html index 1efe113f..7f916272 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_mod_const-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_mod_const-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_mod_const.html b/doc/html/structreflex_1_1_pattern_1_1_mod_const.html index 4d7e62be..d2f11a73 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_mod_const.html +++ b/doc/html/structreflex_1_1_pattern_1_1_mod_const.html @@ -21,7 +21,7 @@
reflex::Pattern::ModConst Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -293,7 +293,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_option-members.html b/doc/html/structreflex_1_1_pattern_1_1_option-members.html index 842a8191..51a0f3ef 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_option-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_option-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -77,7 +77,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_option.html b/doc/html/structreflex_1_1_pattern_1_1_option.html index 337d675e..a847556b 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_option.html +++ b/doc/html/structreflex_1_1_pattern_1_1_option.html @@ -21,7 +21,7 @@
reflex::Pattern::Option Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -384,7 +384,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_position-members.html b/doc/html/structreflex_1_1_pattern_1_1_position-members.html index 63400648..62c78fb0 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_position-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_position-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -93,7 +93,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_position.html b/doc/html/structreflex_1_1_pattern_1_1_position.html index a1603332..d98ee54a 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_position.html +++ b/doc/html/structreflex_1_1_pattern_1_1_position.html @@ -21,7 +21,7 @@
reflex::Pattern::Position Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -891,7 +891,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html index 71bf13e9..edd4384e 100644 --- a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html +++ b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html index cc68e030..42687635 100644 --- a/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html +++ b/doc/html/structreflex_1_1_posix_1_1_tables_1_1lt.html @@ -21,7 +21,7 @@
reflex::Posix::Tables::lt Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -106,7 +106,7 @@

Member Function Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op-members.html b/doc/html/structreflex_1_1_type_op-members.html index a1c9b13e..0c2f2f4b 100644 --- a/doc/html/structreflex_1_1_type_op-members.html +++ b/doc/html/structreflex_1_1_type_op-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op.html b/doc/html/structreflex_1_1_type_op.html index 6142caa1..de2d07e8 100644 --- a/doc/html/structreflex_1_1_type_op.html +++ b/doc/html/structreflex_1_1_type_op.html @@ -21,7 +21,7 @@
reflex::TypeOp< T > Struct Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -141,7 +141,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html index 9029ae11..63bb5aa6 100644 --- a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html +++ b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html index 59bd7beb..c6a74fcd 100644 --- a/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html +++ b/doc/html/structreflex_1_1_type_op_3_01const_01_t_01_4.html @@ -21,7 +21,7 @@
reflex::TypeOp< const T > Struct Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -126,7 +126,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection-members.html b/doc/html/structreflex_1_1lazy__intersection-members.html index 2ffec261..a6e0b0e3 100644 --- a/doc/html/structreflex_1_1lazy__intersection-members.html +++ b/doc/html/structreflex_1_1lazy__intersection-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection.html b/doc/html/structreflex_1_1lazy__intersection.html index 8a85eaa3..e01bdf29 100644 --- a/doc/html/structreflex_1_1lazy__intersection.html +++ b/doc/html/structreflex_1_1lazy__intersection.html @@ -21,7 +21,7 @@
reflex::lazy_intersection< S1, S2 > Struct Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -236,7 +236,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html b/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html index 42fe8bfe..25a02ad5 100644 --- a/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html +++ b/doc/html/structreflex_1_1lazy__intersection_1_1iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html b/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html index 693b9153..fc0d8f49 100644 --- a/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html +++ b/doc/html/structreflex_1_1lazy__intersection_1_1iterator.html @@ -21,7 +21,7 @@
reflex::lazy_intersection< S1, S2 >::iterator Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -432,7 +432,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union-members.html b/doc/html/structreflex_1_1lazy__union-members.html index c3b1a3c4..eeadf85d 100644 --- a/doc/html/structreflex_1_1lazy__union-members.html +++ b/doc/html/structreflex_1_1lazy__union-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union.html b/doc/html/structreflex_1_1lazy__union.html index 6f99e417..ea9e413b 100644 --- a/doc/html/structreflex_1_1lazy__union.html +++ b/doc/html/structreflex_1_1lazy__union.html @@ -21,7 +21,7 @@
reflex::lazy_union< S1, S2 > Struct Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -236,7 +236,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html b/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html index b54767cd..ed2443b3 100644 --- a/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html +++ b/doc/html/structreflex_1_1lazy__union_1_1iterator-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union_1_1iterator.html b/doc/html/structreflex_1_1lazy__union_1_1iterator.html index 46275eb3..57a920a8 100644 --- a/doc/html/structreflex_1_1lazy__union_1_1iterator.html +++ b/doc/html/structreflex_1_1lazy__union_1_1iterator.html @@ -21,7 +21,7 @@
reflex::lazy_union< S1, S2 >::iterator Struct Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -448,7 +448,7 @@

Member Data Documentation

+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1range__compare-members.html b/doc/html/structreflex_1_1range__compare-members.html index de69fb16..971b17a6 100644 --- a/doc/html/structreflex_1_1range__compare-members.html +++ b/doc/html/structreflex_1_1range__compare-members.html @@ -21,7 +21,7 @@
Member List

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1range__compare.html b/doc/html/structreflex_1_1range__compare.html index 9e726abb..2558afe6 100644 --- a/doc/html/structreflex_1_1range__compare.html +++ b/doc/html/structreflex_1_1range__compare.html @@ -21,7 +21,7 @@
reflex::range_compare< T > Struct Template Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -127,7 +127,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/timer_8h.html b/doc/html/timer_8h.html index aeacca97..65cd835c 100644 --- a/doc/html/timer_8h.html +++ b/doc/html/timer_8h.html @@ -21,7 +21,7 @@
timer.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/traits_8h.html b/doc/html/traits_8h.html index 0da52798..a2e4fb66 100644 --- a/doc/html/traits_8h.html +++ b/doc/html/traits_8h.html @@ -21,7 +21,7 @@
traits.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -99,7 +99,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/unicode_8h.html b/doc/html/unicode_8h.html index 9aa56869..789f966e 100644 --- a/doc/html/unicode_8h.html +++ b/doc/html/unicode_8h.html @@ -21,7 +21,7 @@
unicode.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -98,7 +98,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/html/utf8_8h.html b/doc/html/utf8_8h.html index a1a136cb..983417cf 100644 --- a/doc/html/utf8_8h.html +++ b/doc/html/utf8_8h.html @@ -21,7 +21,7 @@
utf8.h File Reference

-
updated Thu Jun 6 2024 by Robert van Engelen
+
updated Thu Aug 1 2024 by Robert van Engelen
  @@ -158,7 +158,7 @@
+Converted on Thu Aug 1 2024 11:49:37 by Doxygen 1.8.11
diff --git a/doc/index.md b/doc/index.md index 39c59575..7450e500 100644 --- a/doc/index.md +++ b/doc/index.md @@ -326,7 +326,7 @@ The `reflex::BoostMatcher` and `reflex::BoostPosixMatcher` classes are for Perl mode and POSIX mode matching, respectively. The `reflex::PCRE2Matcher` and `reflex::PCRE2UTFMatcher` classes are for Perl -mode matching only, where the latter uses native PCRE2 Unicode matching with +mode matching, where the latter uses native PCRE2 Unicode matching with `PCRE2_UTF+PCRE2_UCP`. The PCRE2 matchers use JIT optimizations to speed up matching, which comes at a cost of extra processing when the matcher is instantiated. The benefit outweighs the cost when many matches are processed. @@ -619,11 +619,11 @@ We can use these RE/flex iterators in C++ for many tasks, including to populate containers by stuffing the iterator's text matches into it: ~~~{.cpp} - #include // reflex::PCRE2Matcher, reflex::Input + #include // reflex::PCRE2UTFMatcher, reflex::Input #include // std::vector - // use a PCRE2Matcher to convert words of a sentence into a string vector - reflex::PCRE2Matcher matcher("\\w+", "How now brown cow."); + // use a PCRE2UTFMatcher to convert words of a sentence into a string vector + reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow."); std::vector words(matcher.find.begin(), matcher.find.end()); ~~~ @@ -653,8 +653,8 @@ When executed this code prints: Found brown Found cow -And RE/flex iterators are also useful with STL algorithms and lambdas, for -example to compute a histogram of word frequencies: +And RE/flex iterators are also useful with algorithms and lambdas, for example +to compute a histogram of word frequencies: ~~~{.cpp} // Requires C++11, compile with: cc -std=c++11 @@ -7205,12 +7205,13 @@ The `find()` method returns a nonzero "accept" value (the `size_t accept()` group capture index value or the value 1 if no groups are used) for a match and zero otherwise. -For example, to find all words in a string with PCRE2: +For example, to find all words in a string with PCRE2 on UTF-8 input using +`reflex::PCRE2UTFMatcher`: ~~~{.cpp} - #include // reflex::PCRE2Matcher, reflex::Input + #include // reflex::PCRE2UTFMatcher, reflex::Input - reflex::PCRE2Matcher matcher("\\w+", "How now brown cow."); + reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow."); while (matcher.find() != 0) std::cout << matcher.text() << std::endl; ~~~ @@ -7228,13 +7229,21 @@ For example, in C++11 we can use a range-based loop to loop over matches using the `find` iterator: ~~~{.cpp} - #include // reflex::PCRE2Matcher, reflex::Input + #include // reflex::PCRE2UTFMatcher, reflex::Input - for (auto& match : reflex::PCRE2Matcher("\\w+", "How now brown cow.").find) + for (auto& match : reflex::PCRE2UTFMatcher("\\w+", "How now brown cow.").find) std::cout << match.text() << std::endl; ~~~ -Iterators can be used with STL algorithms and other iterator functions. For +@note: we cannot generally simplify this loop to the following, because the +temporary matcher object is destroyed (some compilers handle this in C++23): + +~~~{.cpp} + for (auto& match : reflex::PCRE2UTFMatcher matcher("\\w+", "How now brown cow.").find); + std::cout << "Found " << match.text() << std::endl; +~~~ + +Iterators can be used with algorithms and other iterator functions. For example to count words in a string: ~~~{.cpp} @@ -9615,4 +9624,4 @@ The Free Software Foundation maintains a 🔝 [Back to table of contents](#) -Copyright (c) 2016-2020, Robert van Engelen, Genivia Inc. All rights reserved. +Copyright (c) 2016,2024, Robert van Engelen. All rights reserved. diff --git a/doc/man/reflex.1 b/doc/man/reflex.1 index 0a1fa7cd..5f101a99 100644 --- a/doc/man/reflex.1 +++ b/doc/man/reflex.1 @@ -1,4 +1,4 @@ -.TH REFLEX "1" "June 06, 2024" "reflex 4.4.0" "User Commands" +.TH REFLEX "1" "August 01, 2024" "reflex 4.5.0" "User Commands" .SH NAME \fBreflex\fR -- regex\-centric, fast and flexible lexical analyzer generator .SH SYNOPSIS diff --git a/include/reflex/matcher.h b/include/reflex/matcher.h index e92766c3..410b6acd 100644 --- a/include/reflex/matcher.h +++ b/include/reflex/matcher.h @@ -1489,7 +1489,7 @@ class Matcher : public PatternMatcher { std::vector lap_; ///< lookahead position in input that heads a lookahead match (indexed by lookahead number) std::stack stk_; ///< stack to push/pop stops FSM fsm_; ///< local state for FSM code - bool (Matcher::* adv_)(size_t loc); ///< advance FIND + bool (Matcher::* adv_)(size_t loc); ///< advance FIND function pointer bool mrk_; ///< indent \i or dedent \j in pattern found: should check and update indent stops bool anc_; ///< match is anchored, advance slowly to retry when searching }; diff --git a/include/reflex/pattern.h b/include/reflex/pattern.h index 4d534885..df5fc4a1 100644 --- a/include/reflex/pattern.h +++ b/include/reflex/pattern.h @@ -71,7 +71,7 @@ class Pattern { friend class FuzzyMatcher; ///< permit access by the reflex::FuzzyMatcher engine public: typedef uint8_t Pred; ///< predict match bits - typedef uint16_t Hash; ///< hash value type, max value is Const::HASH + typedef uint32_t Hash; ///< hash value type, max value is Const::HASH typedef uint32_t Index; ///< index into opcodes array Pattern::opc_ and subpattern indexing typedef uint32_t Accept; ///< group capture index typedef uint32_t Opcode; ///< 32 bit opcode word @@ -355,28 +355,28 @@ class Pattern { return ams_; } /// Returns true when match is predicted, based on s[0..3..e-1] (e >= s + 4). - static inline bool predict_match(const Pred pmh[], const char *s, size_t n) + inline bool predict_match(const char *s, size_t n) const { Hash h = static_cast(*s); - Pred f = pmh[h] & 1; + Hash f = pmh_[h] & 1; h = hash(h, static_cast(*++s)); - f |= pmh[h] & 2; + f |= pmh_[h] & 2; h = hash(h, static_cast(*++s)); - f |= pmh[h] & 4; + f |= pmh_[h] & 4; h = hash(h, static_cast(*++s)); - f |= pmh[h] & 8; + f |= pmh_[h] & 8; const char *e = s + n - 3; - Pred m = 16; + Hash m = 16; while (f == 0 && ++s < e) { h = hash(h, static_cast(*s)); - f = pmh[h] & m; + f = pmh_[h] & m; m <<= 1; } return f == 0; } - /// Returns zero when match is predicted (removed shift distance return, now just returns 0 or 1). - static inline size_t predict_match(const Pred pma[], const char *s) + /// Returns true when match is predicted using my PM4 logic. + inline bool predict_match(const char *s) const { uint8_t b0 = s[0]; uint8_t b1 = s[1]; @@ -385,13 +385,9 @@ class Pattern { Hash h1 = hash(b0, b1); Hash h2 = hash(h1, b2); Hash h3 = hash(h2, b3); - Pred a0 = pma[b0]; - Pred a1 = pma[h1]; - Pred a2 = pma[h2]; - Pred a3 = pma[h3]; - Pred p = (a0 & 0xc0) | (a1 & 0x30) | (a2 & 0x0c) | (a3 & 0x03); + Pred p = (pma_[b0] & 0xc0) | (pma_[h1] & 0x30) | (pma_[h2] & 0x0c) | (pma_[h3] & 0x03); Pred m = ((((((p >> 2) | p) >> 2) | p) >> 1) | p); - return m == 0xff; + return m != 0xff; } /// Relative frequency of English letters with upper/lower-case ratio = 0.0563, punctuation and UTF-8 bytes. static uint8_t frequency(uint8_t c) @@ -950,11 +946,14 @@ class Pattern { void graph_dfa(const DFA::State *start) const; void export_code() const; void analyze_dfa(DFA::State *start); - void gen_predict_match(std::set states); - void gen_predict_match_start(std::set states, std::map >& hashes); + void gen_min(std::set& states); + void gen_min_start(std::set& states, std::set& next); + void gen_min_transitions(size_t level, std::set& next); + void gen_predict_match(std::set& states); + void gen_predict_match_start(std::set& states, std::map >& hashes); void gen_predict_match_transitions(size_t level, DFA::State *state, const ORanges& labels, std::map >& hashes); - void gen_match_hfa(DFA::State* start); - void gen_match_hfa_start(DFA::State* start, HFA::State& index, HFA::StateHashes& hashes); + void gen_match_hfa(DFA::State *start); + void gen_match_hfa_start(DFA::State *start, HFA::State& index, HFA::StateHashes& hashes); bool gen_match_hfa_transitions(size_t level, size_t& max_level, DFA::State *state, const HFA::HashRanges& previous, HFA::State& index, HFA::StateHashes& hashes); public: bool has_hfa() const @@ -965,8 +964,8 @@ class Pattern { private: bool match_hfa_transitions(size_t level, const HFA::Hashes& hashes, const uint8_t *indexed, size_t size, HFA::VisitSet& visit, HFA::VisitSet& next_visit, bool& accept) const; void write_predictor(FILE *fd) const; - void write_namespace_open(FILE* fd) const; - void write_namespace_close(FILE* fd) const; + void write_namespace_open(FILE *fd) const; + void write_namespace_close(FILE *fd) const; size_t find_at( Location loc, char c) const @@ -1149,7 +1148,7 @@ class Pattern { /// file indexing hash 0 <= indexhash() < 65536, must be additive: indexhash(x,b+1) = indexhash(x,b)+1 modulo 2^16. static inline Hash indexhash(Hash h, uint8_t b) { - return (h << 6) - h - h - h + b; + return static_cast((h << 6) - h - h - h + b); } Option opt_; ///< pattern compiler options HFA hfa_; ///< indexing hash finite state automaton diff --git a/include/reflex/pcre2matcher.h b/include/reflex/pcre2matcher.h index 6eebd5a8..5f870c17 100644 --- a/include/reflex/pcre2matcher.h +++ b/include/reflex/pcre2matcher.h @@ -50,7 +50,7 @@ class PCRE2Matcher : public PatternMatcher { template static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL) { - return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghnrstvwxzABCDGHKNQRSVWXZ0123456789?+", flags, multiline); + return reflex::convert(regex, "iJmnPRsUx!#<>=&|'(0123456789*:abcdefghnrstvwxzABCDGHKNQRSVWXZ0123456789?+", flags, multiline); } /// Default constructor. PCRE2Matcher() @@ -465,7 +465,7 @@ class PCRE2UTFMatcher : public PCRE2Matcher { template static std::string convert(T regex, convert_flag_type flags = convert_flag::none, bool *multiline = NULL) { - return reflex::convert(regex, "imPRsx!#<>=&|'(0123456789*:abcdefghknprstvwxzABCDGHKNPQRSVWXZ0123456789?+", flags, multiline); + return reflex::convert(regex, "iJmnPRsUx!#<>=&|'(0123456789*:abcdefghknprstvwxzABCDGHKNPQRSVWXZ0123456789?+", flags, multiline); } /// Default constructor. PCRE2UTFMatcher() : PCRE2Matcher() diff --git a/include/reflex/simd.h b/include/reflex/simd.h index f5c805bf..982c7707 100644 --- a/include/reflex/simd.h +++ b/include/reflex/simd.h @@ -60,7 +60,9 @@ #ifdef _MSC_VER # define cpuidex __cpuidex #else -# include +# ifndef __cpuid_count +# include +# endif # define cpuidex(CPUInfo, id, subid) __cpuid_count(id, subid, CPUInfo[0], CPUInfo[1], CPUInfo[2], CPUInfo[3]) #endif diff --git a/lib/error.cpp b/lib/error.cpp index 6e9fafcc..9eddfd45 100644 --- a/lib/error.cpp +++ b/lib/error.cpp @@ -69,13 +69,16 @@ std::string regex_error::regex_error_message_code(regex_error_type code, const c std::string regex_error::regex_error_message(const char *message, const char *pattern, size_t pos) { + const char *p = strrchr(pattern, '\n'); + if (p != NULL) + pattern = p + 1; size_t l = strlen(pattern); if (pos > l) pos = l; l = strlen(message); size_t n = pos / 40; size_t k = pos % 40 + (n == 0 ? 0 : 20); - const char *p = n == 0 ? pattern : pattern + 40 * n - 20; + p = n == 0 ? pattern : pattern + 40 * n - 20; while (p > pattern && (*p & 0xc0) == 0x80) { --p; diff --git a/lib/matcher.cpp b/lib/matcher.cpp index 87358f25..71645e29 100644 --- a/lib/matcher.cpp +++ b/lib/matcher.cpp @@ -886,7 +886,6 @@ bool Matcher::advance_none(size_t) /// My "needle search" method when pin=1 bool Matcher::advance_pattern_pin1_pma(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t min = pat_->min_; uint16_t lcp = pat_->lcp_; @@ -909,7 +908,7 @@ bool Matcher::advance_pattern_pin1_pma(size_t loc) { uint32_t offset = ctz(mask); loc = s - lcp + offset - buf_; - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) { set_current(loc); return true; @@ -949,7 +948,7 @@ bool Matcher::advance_pattern_pin1_pma(size_t loc) if ((mask & 0xff)) { loc = s - lcp + i - buf_; - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) { set_current(loc); return true; @@ -966,7 +965,7 @@ bool Matcher::advance_pattern_pin1_pma(size_t loc) if ((mask & 0xff)) { loc = s - lcp + i - buf_; - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) { set_current(loc); return true; @@ -997,7 +996,7 @@ bool Matcher::advance_pattern_pin1_pma(size_t loc) { s -= lcp; loc = s - buf_; - if (s > e - 4 || (s[lcs] == chr1 && Pattern::predict_match(pma, s) == 0)) + if (s > e - 4 || (s[lcs] == chr1 && pat_->predict_match(s))) { set_current(loc); return true; @@ -1018,7 +1017,6 @@ bool Matcher::advance_pattern_pin1_pma(size_t loc) /// My "needle search" method when pin=1 bool Matcher::advance_pattern_pin1_pmh(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t min = pat_->min_; uint16_t lcp = pat_->lcp_; @@ -1041,7 +1039,7 @@ bool Matcher::advance_pattern_pin1_pmh(size_t loc) { uint32_t offset = ctz(mask); loc = s - lcp + offset - buf_; - if (Pattern::predict_match(pmh, &buf_[loc], min)) + if (pat_->predict_match(&buf_[loc], min)) { set_current(loc); return true; @@ -1081,7 +1079,7 @@ bool Matcher::advance_pattern_pin1_pmh(size_t loc) if ((mask & 0xff)) { loc = s - lcp + i - buf_; - if (Pattern::predict_match(pmh, &buf_[loc], min)) + if (pat_->predict_match(&buf_[loc], min)) { set_current(loc); return true; @@ -1098,7 +1096,7 @@ bool Matcher::advance_pattern_pin1_pmh(size_t loc) if ((mask & 0xff)) { loc = s - lcp + i - buf_; - if (Pattern::predict_match(pmh, &buf_[loc], min)) + if (pat_->predict_match(&buf_[loc], min)) { set_current(loc); return true; @@ -1129,7 +1127,7 @@ bool Matcher::advance_pattern_pin1_pmh(size_t loc) { s -= lcp; loc = s - buf_; - if (s + min > e || (s[lcs] == chr1 && Pattern::predict_match(pmh, s, min))) + if (s + min > e || (s[lcs] == chr1 && pat_->predict_match(s, min))) { set_current(loc); return true; @@ -1153,7 +1151,6 @@ bool Matcher::advance_pattern_pin1_pmh(size_t loc) #define ADV_PAT_PIN_ONE(N, INIT, COMP) \ bool Matcher::advance_pattern_pin##N##_one(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ INIT \ while (true) \ @@ -1170,7 +1167,7 @@ bool Matcher::advance_pattern_pin##N##_one(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s + offset - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1285,7 +1282,6 @@ ADV_PAT_PIN_ONE(8, \ #define ADV_PAT_PIN(N, INIT, COMP) \ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -1307,7 +1303,7 @@ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s - lcp + offset - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1330,7 +1326,6 @@ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ \ bool Matcher::advance_pattern_pin##N##_pmh(size_t loc) \ { \ - const Pattern::Pred *pmh = pat_->pmh_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -1352,7 +1347,7 @@ bool Matcher::advance_pattern_pin##N##_pmh(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s - lcp + offset - buf_; \ - if (Pattern::predict_match(pmh, &buf_[loc], min)) \ + if (pat_->predict_match(&buf_[loc], min)) \ { \ set_current(loc); \ return true; \ @@ -1533,7 +1528,6 @@ ADV_PAT_PIN(8, \ #define ADV_PAT_PIN_ONE(N, INIT, COMP) \ bool Matcher::advance_pattern_pin##N##_one(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ INIT \ while (true) \ @@ -1553,7 +1547,7 @@ bool Matcher::advance_pattern_pin##N##_one(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s + i - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1570,7 +1564,7 @@ bool Matcher::advance_pattern_pin##N##_one(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s + i - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1726,7 +1720,6 @@ ADV_PAT_PIN_ONE(8, \ #define ADV_PAT_PIN(N, INIT, COMP) \ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -1750,7 +1743,7 @@ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s - lcp + i - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1767,7 +1760,7 @@ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s - lcp + i - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -1792,7 +1785,6 @@ bool Matcher::advance_pattern_pin##N##_pma(size_t loc) \ \ bool Matcher::advance_pattern_pin##N##_pmh(size_t loc) \ { \ - const Pattern::Pred *pmh = pat_->pmh_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -1816,7 +1808,7 @@ bool Matcher::advance_pattern_pin##N##_pmh(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s - lcp + i - buf_; \ - if (Pattern::predict_match(pmh, &buf_[loc], min)) \ + if (pat_->predict_match(&buf_[loc], min)) \ { \ set_current(loc); \ return true; \ @@ -1833,7 +1825,7 @@ bool Matcher::advance_pattern_pin##N##_pmh(size_t loc) \ if ((mask & 0xff)) \ { \ loc = s - lcp + i - buf_; \ - if (Pattern::predict_match(pmh, &buf_[loc], min)) \ + if (pat_->predict_match(&buf_[loc], min)) \ { \ set_current(loc); \ return true; \ @@ -2090,10 +2082,9 @@ ADV_PAT_PIN(8, \ #endif -/// Minimal 1 char pattern using bitap and PM4 +/// Minimal 1 char pattern usign the bitap first bit and PM4 bool Matcher::advance_pattern_min1(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const Pattern::Pred *bit = pat_->bit_; while (true) { @@ -2101,17 +2092,24 @@ bool Matcher::advance_pattern_min1(size_t loc) const char *e = buf_ + end_ - 3; bool f = true; while (s < e && - (f = ((bit[static_cast(*s)] & 1) && - (bit[static_cast(*++s)] & 1) && - (bit[static_cast(*++s)] & 1) && - (bit[static_cast(*++s)] & 1)))) + (f = (bit[static_cast(s[0])] & + bit[static_cast(s[1])] & + bit[static_cast(s[2])] & + bit[static_cast(s[3])] & 1))) { - ++s; + s += 4; } loc = s - buf_; if (!f) { - if (s < e && Pattern::predict_match(pma, s) != 0) + if ((bit[static_cast(*s)] & 1)) + { + if ((bit[static_cast(*++s)] & 1)) + if ((bit[static_cast(*++s)] & 1)) + ++s; + loc = s - buf_; + } + if (s < e && !pat_->predict_match(s)) { ++loc; continue; @@ -2129,12 +2127,11 @@ bool Matcher::advance_pattern_min1(size_t loc) } } -/// Minimal 2 char pattern using bitam and PM4 +/// Minimal 2 char pattern using bitap and PM4 bool Matcher::advance_pattern_min2(size_t loc) { const Pattern::Pred *bit = pat_->bit_; - const Pattern::Pred *pma = pat_->pma_; - Pattern::Pred state = ~0; + uint32_t state = ~0; while (true) { const char *s = buf_ + loc; @@ -2142,38 +2139,27 @@ bool Matcher::advance_pattern_min2(size_t loc) while (s < e) { state = (state << 1) | bit[static_cast(*s)]; - if ((state & 2) == 0) - break; ++s; - } - if (s < e) - { - s -= 1; - loc = s - buf_; - if (s > e - 4 || Pattern::predict_match(pma, s) == 0) + if ((state & 2) == 0 && (s > e - 2 || pat_->predict_match(s - 2))) { + loc = s - buf_ - 2; set_current(loc); return true; } - loc += 2; - } - else - { - loc = s - buf_; - set_current_and_peek_more(loc - 1); - loc = cur_ + 1; - if (loc + 2 > end_) - return false; } + loc = s - buf_; + set_current_and_peek_more(loc - 1); + loc = cur_ + 1; + if (loc + 2 > end_) + return false; } } -/// Minimal 3 char pattern using bitam and PM4 +/// Minimal 3 char pattern using bitap and PM4 bool Matcher::advance_pattern_min3(size_t loc) { const Pattern::Pred *bit = pat_->bit_; - const Pattern::Pred *pma = pat_->pma_; - Pattern::Pred state = ~0; + uint32_t state = ~0; while (true) { const char *s = buf_ + loc; @@ -2181,103 +2167,75 @@ bool Matcher::advance_pattern_min3(size_t loc) while (s < e) { state = (state << 1) | bit[static_cast(*s)]; - if ((state & 4) == 0) - break; ++s; - } - if (s < e) - { - s -= 2; - loc = s - buf_; - if (s > e - 4 || Pattern::predict_match(pma, s) == 0) + if ((state & 4) == 0 && (s > e - 1 || pat_->predict_match(s - 3))) { + loc = s - buf_ - 3; set_current(loc); return true; } - loc += 3; - } - else - { - loc = s - buf_; - set_current_and_peek_more(loc - 1); - loc = cur_ + 1; - if (loc + 3 > end_) - return false; } + loc = s - buf_; + set_current_and_peek_more(loc - 1); + loc = cur_ + 1; + if (loc + 3 > end_) + return false; } } -/// Minimal 4 char pattern using bitam and PM hashing +/// Minimal 4 char pattern using bitap and PM hashing bool Matcher::advance_pattern_min4(size_t loc) { const Pattern::Pred *bit = pat_->bit_; - const Pattern::Pred *pmh = pat_->pmh_; size_t min = pat_->min_; - Pattern::Pred state1 = ~0; - Pattern::Pred state2 = ~0; - Pattern::Pred mask = (1 << (min - 1)); + uint32_t state1 = ~0; + uint32_t state2 = ~0; + uint32_t mask = 1 << (min - 1); while (true) { const char *s = buf_ + loc; - const char *e = buf_ + end_; - while (s < e - 1) + const char *e = buf_ + end_ - 1; + while (s < e) { - state2 = (state1 << 1) | bit[static_cast(*s)]; - ++s; - state1 = (state2 << 1) | bit[static_cast(*s)]; + state2 = (state1 << 1) | bit[static_cast(s[0])]; + state1 = (state2 << 1) | bit[static_cast(s[1])]; + s += 2; if ((state1 & state2 & mask) == 0) - break; - ++s; - } - if ((state2 & mask) == 0) - { - state1 = state2; - state2 = ~0; - --s; - } - else if ((state1 & mask) != 0 && s == e - 1) - { - state1 = (state1 << 1) | bit[static_cast(*s)]; - if ((state1 & mask) != 0) - ++s; - } - if (s < e) - { - s -= min - 1; - loc = s - buf_; - if (Pattern::predict_match(pmh, s, min)) { - set_current(loc); - return true; + if ((state2 & mask) == 0) + { + state1 = state2; + --s; + } + if (pat_->predict_match(s - min, min)) + { + loc = s - buf_ - min; + set_current(loc); + return true; + } } - loc += min; - } - else - { - loc = s - buf_; - set_current_and_peek_more(loc - 1); - loc = cur_ + 1; - if (loc + min > end_) - return false; } + loc = s - buf_; + set_current_and_peek_more(loc - 1); + loc = cur_ + 1; + if (loc + min > end_) + return false; } } /// Minimal 1 char pattern using PM4 bool Matcher::advance_pattern(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; - size_t min = pat_->min_; while (true) { const char *s = buf_ + loc; const char *e = buf_ + end_ - 6; bool f = true; while (s < e && - (f = (Pattern::predict_match(pma, s) != 0 && - Pattern::predict_match(pma, ++s) != 0 && - Pattern::predict_match(pma, ++s) != 0 && - Pattern::predict_match(pma, ++s) != 0))) + (f = (!pat_->predict_match(s) && + !pat_->predict_match(++s) && + !pat_->predict_match(++s) && + !pat_->predict_match(++s)))) { ++s; } @@ -2292,7 +2250,7 @@ bool Matcher::advance_pattern(size_t loc) if (loc + 6 >= end_) { set_current(loc); - return loc + min <= end_; + return loc + pat_->min_ <= end_; } } } @@ -2323,7 +2281,6 @@ bool Matcher::advance_char(size_t loc) /// One char followed by 1 to 3 minimal char pattern bool Matcher::advance_char_pma(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; char chr0 = pat_->chr_[0]; while (true) { @@ -2334,7 +2291,7 @@ bool Matcher::advance_char_pma(size_t loc) { loc = s - buf_; set_current(loc); - if (s > e - 5 || Pattern::predict_match(pma, s + 1) == 0) + if (s > e - 5 || pat_->predict_match(s + 1)) return true; ++loc; } @@ -2352,7 +2309,6 @@ bool Matcher::advance_char_pma(size_t loc) /// One char followed by 4 minimal char pattern bool Matcher::advance_char_pmh(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; char chr0 = pat_->chr_[0]; size_t min = pat_->min_; while (true) @@ -2363,7 +2319,7 @@ bool Matcher::advance_char_pmh(size_t loc) if (s != NULL) { loc = s - buf_; - if (s + 1 + min > e || Pattern::predict_match(pmh, s + 1, min)) + if (s + 1 + min > e || pat_->predict_match(s + 1, min)) { set_current(loc); return true; @@ -2521,7 +2477,6 @@ bool Matcher::advance_chars_pma(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t min = pat_->min_; #if defined(HAVE_AVX512BW) || defined(HAVE_AVX2) || defined(HAVE_SSE2) @@ -2545,7 +2500,7 @@ bool Matcher::advance_chars_pma(size_t loc) (LEN == 3 ? s[offset + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + offset, chr + 1, LEN - 2) == 0)) { loc = s - lcp + offset - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -2589,7 +2544,7 @@ bool Matcher::advance_chars_pma(size_t loc) (LEN == 3 ? s[i + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + i, chr + 1, LEN - 2) == 0))) { loc = s - lcp + i - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pat_->pma_, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -2608,7 +2563,7 @@ bool Matcher::advance_chars_pma(size_t loc) (LEN == 3 ? s[i + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + i, chr + 1, LEN - 2) == 0))) { loc = s - lcp + i - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pat_->pma_, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -2647,7 +2602,7 @@ bool Matcher::advance_chars_pma(size_t loc) (LEN == 3 ? s[1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp, chr + 1, LEN - 2) == 0)) { loc = s - lcp - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -2669,7 +2624,6 @@ bool Matcher::advance_chars_pmh(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t min = pat_->min_; #if defined(HAVE_AVX512BW) || defined(HAVE_AVX2) || defined(HAVE_SSE2) @@ -2693,7 +2647,7 @@ bool Matcher::advance_chars_pmh(size_t loc) (LEN == 3 ? s[offset + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + offset, chr + 1, LEN - 2) == 0)) { loc = s - lcp + offset - buf_; - if (loc + LEN + min > end_ || Pattern::predict_match(pmh, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) { set_current(loc); return true; @@ -2737,7 +2691,7 @@ bool Matcher::advance_chars_pmh(size_t loc) (LEN == 3 ? s[i + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + i, chr + 1, LEN - 2) == 0))) { size_t loc = s - lcp + i - buf_; - if (loc + LEN + min > end_ || Pattern::predict_match(pat_->pmh_, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) { set_current(loc); return true; @@ -2756,7 +2710,7 @@ bool Matcher::advance_chars_pmh(size_t loc) (LEN == 3 ? s[i + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + i, chr + 1, LEN - 2) == 0))) { size_t loc = s - lcp + i - buf_; - if (loc + LEN + min > end_ || Pattern::predict_match(pat_->pmh_, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) { set_current(loc); return true; @@ -2795,7 +2749,7 @@ bool Matcher::advance_chars_pmh(size_t loc) (LEN == 3 ? s[1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp, chr + 1, LEN - 2) == 0)) { loc = s - lcp - buf_; - if (loc + LEN + min > end_ || Pattern::predict_match(pmh, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) { set_current(loc); return true; @@ -2907,7 +2861,6 @@ bool Matcher::advance_string(size_t loc) /// String followed by 1 to 3 minimal char pattern bool Matcher::advance_string_pma(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -2934,7 +2887,7 @@ bool Matcher::advance_string_pma(size_t loc) if (std::memcmp(s - lcp + offset, chr, len) == 0) { loc = s - lcp + offset - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -2987,7 +2940,7 @@ bool Matcher::advance_string_pma(size_t loc) if (std::memcmp(s - lcp, chr, len) == 0) { loc = s - lcp - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -3006,7 +2959,6 @@ bool Matcher::advance_string_pma(size_t loc) /// String followed by 4 minimal char pattern bool Matcher::advance_string_pmh(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -3033,7 +2985,7 @@ bool Matcher::advance_string_pmh(size_t loc) if (std::memcmp(s - lcp + offset, chr, len) == 0) { loc = s - lcp + offset - buf_; - if (loc + len + min > end_ || Pattern::predict_match(pmh, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; @@ -3086,7 +3038,7 @@ bool Matcher::advance_string_pmh(size_t loc) if (std::memcmp(s - lcp, chr, len) == 0) { loc = s - lcp - buf_; - if (loc + len + min > end_ || Pattern::predict_match(pmh, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; @@ -3183,7 +3135,7 @@ bool Matcher::simd_advance_string_pma_neon(const char *&s, const char *e) if ((mask & 0xff) && std::memcmp(s - lcp + i, chr, len) == 0) { size_t loc = s - lcp + i - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pat_->pma_, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -3200,7 +3152,7 @@ bool Matcher::simd_advance_string_pma_neon(const char *&s, const char *e) if ((mask & 0xff) && std::memcmp(s - lcp + i, chr, len) == 0) { size_t loc = s - lcp + i - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pat_->pma_, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -3240,7 +3192,7 @@ bool Matcher::simd_advance_string_pmh_neon(const char *&s, const char *e) if ((mask & 0xff) && std::memcmp(s - lcp + i, chr, len) == 0) { size_t loc = s - lcp + i - buf_; - if (loc + len + min > end_ || Pattern::predict_match(pat_->pmh_, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; @@ -3257,7 +3209,7 @@ bool Matcher::simd_advance_string_pmh_neon(const char *&s, const char *e) if ((mask & 0xff) && std::memcmp(s - lcp + i, chr, len) == 0) { size_t loc = s - lcp + i - buf_; - if (loc + len + min > end_ || Pattern::predict_match(pat_->pmh_, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; @@ -3337,7 +3289,6 @@ bool Matcher::advance_string_bm(size_t loc) bool Matcher::advance_string_bm_pma(size_t loc) { const char *chr = pat_->chr_; - const Pattern::Pred *pma = pat_->pma_; const uint8_t *bms = pat_->bms_; size_t len = pat_->len_; size_t bmd = pat_->bmd_; @@ -3365,7 +3316,7 @@ bool Matcher::advance_string_bm_pma(size_t loc) if (p < chr) { loc = q - buf_ + 1; - if (loc + len + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -3393,11 +3344,10 @@ bool Matcher::advance_string_bm_pma(size_t loc) } } -/// My improved Boyer-Moore string search followed by a 4 minimal char pattern, using PM4 +/// My improved Boyer-Moore string search followed by a 4 minimal char pattern, using PM bool Matcher::advance_string_bm_pmh(size_t loc) { const char *chr = pat_->chr_; - const Pattern::Pred *pmh = pat_->pmh_; const uint8_t *bms = pat_->bms_; size_t bmd = pat_->bmd_; size_t len = pat_->len_; @@ -3426,7 +3376,7 @@ bool Matcher::advance_string_bm_pmh(size_t loc) if (p < chr) { loc = q - buf_ + 1; - if (loc + len + min > end_ || Pattern::predict_match(pmh, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; diff --git a/lib/matcher_avx2.cpp b/lib/matcher_avx2.cpp index 304b1683..e68ca3a9 100644 --- a/lib/matcher_avx2.cpp +++ b/lib/matcher_avx2.cpp @@ -163,7 +163,6 @@ void Matcher::simd_init_advance_avx2() // My "needle search" method when pin=1 bool Matcher::simd_advance_pattern_pin1_pma_avx2(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t min = pat_->min_; uint16_t lcp = pat_->lcp_; @@ -186,7 +185,7 @@ bool Matcher::simd_advance_pattern_pin1_pma_avx2(size_t loc) uint32_t offset = ctz(mask); loc = s - lcp + offset - buf_; set_current(loc); - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) return true; mask &= mask - 1; } @@ -207,7 +206,6 @@ bool Matcher::simd_advance_pattern_pin1_pma_avx2(size_t loc) // My "needle search" method when pin=1 bool Matcher::simd_advance_pattern_pin1_pmh_avx2(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t min = pat_->min_; uint16_t lcp = pat_->lcp_; @@ -230,7 +228,7 @@ bool Matcher::simd_advance_pattern_pin1_pmh_avx2(size_t loc) uint32_t offset = ctz(mask); loc = s - lcp + offset - buf_; set_current(loc); - if (Pattern::predict_match(pmh, &buf_[loc], min)) + if (pat_->predict_match(&buf_[loc], min)) return true; mask &= mask - 1; } @@ -252,7 +250,6 @@ bool Matcher::simd_advance_pattern_pin1_pmh_avx2(size_t loc) #define ADV_PAT_PIN_ONE(N, INIT, COMP) \ bool Matcher::simd_advance_pattern_pin##N##_one_avx2(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ INIT \ while (true) \ @@ -269,7 +266,7 @@ bool Matcher::simd_advance_pattern_pin##N##_one_avx2(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s + offset - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -419,7 +416,6 @@ ADV_PAT_PIN_ONE(16, \ #define ADV_PAT_PIN(N, INIT, COMP) \ bool Matcher::simd_advance_pattern_pin##N##_pma_avx2(size_t loc) \ { \ - const Pattern::Pred *pma = pat_->pma_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -441,7 +437,7 @@ bool Matcher::simd_advance_pattern_pin##N##_pma_avx2(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s - lcp + offset - buf_; \ - if (loc + 4 > end_ || Pattern::predict_match(pma, &buf_[loc]) == 0) \ + if (loc + 4 > end_ || pat_->predict_match(&buf_[loc])) \ { \ set_current(loc); \ return true; \ @@ -464,7 +460,6 @@ bool Matcher::simd_advance_pattern_pin##N##_pma_avx2(size_t loc) \ \ bool Matcher::simd_advance_pattern_pin##N##_pmh_avx2(size_t loc) \ { \ - const Pattern::Pred *pmh = pat_->pmh_; \ const char *chr = pat_->chr_; \ size_t min = pat_->min_; \ uint16_t lcp = pat_->lcp_; \ @@ -486,7 +481,7 @@ bool Matcher::simd_advance_pattern_pin##N##_pmh_avx2(size_t loc) \ { \ uint32_t offset = ctz(mask); \ loc = s - lcp + offset - buf_; \ - if (Pattern::predict_match(pmh, &buf_[loc], min)) \ + if (pat_->predict_match(&buf_[loc], min)) \ { \ set_current(loc); \ return true; \ @@ -779,7 +774,6 @@ bool Matcher::simd_advance_chars_pma_avx2(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t min = pat_->min_; while (true) @@ -802,7 +796,7 @@ bool Matcher::simd_advance_chars_pma_avx2(size_t loc) (LEN == 3 ? s[offset + 1 - lcp] : std::memcmp(s + 1 - lcp + offset, chr + 1, LEN - 2) == 0)) { loc = s - lcp + offset - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -830,7 +824,6 @@ bool Matcher::simd_advance_chars_pmh_avx2(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t min = pat_->min_; while (true) @@ -854,7 +847,7 @@ bool Matcher::simd_advance_chars_pmh_avx2(size_t loc) { loc = s - lcp + offset - buf_; set_current(loc); - if (loc + LEN + min > end_ || Pattern::predict_match(pmh, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) return true; } mask &= mask - 1; @@ -923,7 +916,6 @@ bool Matcher::simd_advance_string_avx2(size_t loc) /// Implements AVX2 string search scheme based on http://0x80.pl/articles/simd-friendly-karp-rabin.html bool Matcher::simd_advance_string_pma_avx2(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -948,7 +940,7 @@ bool Matcher::simd_advance_string_pma_avx2(size_t loc) if (std::memcmp(s - lcp + offset, chr, len) == 0) { loc = s - lcp + offset - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -973,7 +965,6 @@ bool Matcher::simd_advance_string_pma_avx2(size_t loc) /// Implements AVX2 string search scheme based on http://0x80.pl/articles/simd-friendly-karp-rabin.html bool Matcher::simd_advance_string_pmh_avx2(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -999,7 +990,7 @@ bool Matcher::simd_advance_string_pmh_avx2(size_t loc) { loc = s - lcp + offset - buf_; set_current(loc); - if (loc + len + min > end_ || Pattern::predict_match(pmh, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) return true; } mask &= mask - 1; diff --git a/lib/matcher_avx512bw.cpp b/lib/matcher_avx512bw.cpp index 4af50af8..37fcd6af 100644 --- a/lib/matcher_avx512bw.cpp +++ b/lib/matcher_avx512bw.cpp @@ -138,7 +138,6 @@ bool Matcher::simd_advance_chars_pma_avx512bw(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t min = pat_->min_; while (true) @@ -159,7 +158,7 @@ bool Matcher::simd_advance_chars_pma_avx512bw(size_t loc) (LEN == 3 ? s[offset + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + offset, chr + 1, LEN - 2) == 0)) { loc = s - lcp + offset - buf_; - if (loc + LEN + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + LEN]) == 0) + if (loc + LEN + 4 > end_ || pat_->predict_match(&buf_[loc + LEN])) { set_current(loc); return true; @@ -187,7 +186,6 @@ bool Matcher::simd_advance_chars_pmh_avx512bw(size_t loc) { static const uint16_t lcp = 0; static const uint16_t lcs = LEN - 1; - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t min = pat_->min_; while (true) @@ -208,7 +206,7 @@ bool Matcher::simd_advance_chars_pmh_avx512bw(size_t loc) (LEN == 3 ? s[offset + 1 - lcp] == chr[1] : std::memcmp(s + 1 - lcp + offset, chr + 1, LEN - 2) == 0)) { loc = s - lcp + offset - buf_; - if (loc + LEN + min > end_ || Pattern::predict_match(pmh, &buf_[loc + LEN], min)) + if (loc + LEN + min > end_ || pat_->predict_match(&buf_[loc + LEN], min)) { set_current(loc); return true; @@ -278,7 +276,6 @@ bool Matcher::simd_advance_string_avx512bw(size_t loc) /// Implements AVX512BW string search scheme based on http://0x80.pl/articles/simd-friendly-karp-rabin.html bool Matcher::simd_advance_string_pma_avx512bw(size_t loc) { - const Pattern::Pred *pma = pat_->pma_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -301,7 +298,7 @@ bool Matcher::simd_advance_string_pma_avx512bw(size_t loc) if (std::memcmp(s - lcp + offset, chr, len) == 0) { loc = s - lcp + offset - buf_; - if (loc + len + 4 > end_ || Pattern::predict_match(pma, &buf_[loc + len]) == 0) + if (loc + len + 4 > end_ || pat_->predict_match(&buf_[loc + len])) { set_current(loc); return true; @@ -326,7 +323,6 @@ bool Matcher::simd_advance_string_pma_avx512bw(size_t loc) /// Implements AVX512BW string search scheme based on http://0x80.pl/articles/simd-friendly-karp-rabin.html bool Matcher::simd_advance_string_pmh_avx512bw(size_t loc) { - const Pattern::Pred *pmh = pat_->pmh_; const char *chr = pat_->chr_; size_t len = pat_->len_; size_t min = pat_->min_; @@ -349,7 +345,7 @@ bool Matcher::simd_advance_string_pmh_avx512bw(size_t loc) if (std::memcmp(s - lcp + offset, chr, len) == 0) { loc = s - lcp + offset - buf_; - if (loc + len + min > end_ || Pattern::predict_match(pmh, &buf_[loc + len], min)) + if (loc + len + min > end_ || pat_->predict_match(&buf_[loc + len], min)) { set_current(loc); return true; diff --git a/lib/pattern.cpp b/lib/pattern.cpp index 100e1f56..2ccab7bd 100644 --- a/lib/pattern.cpp +++ b/lib/pattern.cpp @@ -319,7 +319,7 @@ void Pattern::init(const char *options, const uint8_t *pred) } // needle count and frequency thresholds to enable needle-based search uint16_t pinmax = 8; - uint8_t freqmax = 251; + uint16_t freqmax = 251; #if defined(HAVE_AVX512BW) || defined(HAVE_AVX2) || defined(HAVE_SSE2) if (have_HW_AVX512BW() || have_HW_AVX2()) pinmax = 16; @@ -338,16 +338,19 @@ void Pattern::init(const char *options, const uint8_t *pred) lcs_ = 0; uint16_t nlcp = 65535; // max and undefined uint16_t nlcs = 65535; // max and undefined - uint8_t freqlcp = 255; // max - uint8_t freqlcs = 255; // max + uint8_t freqlcp = 255; // max and undefined + uint8_t freqlcs = 255; // max and undefined size_t min = (min_ == 0 ? 1 : min_); - for (uint16_t k = 0; k < min; ++k) + uint8_t score[8][3]; // avg freq, unique position k < min, number of pins n <= pinmax + size_t scores = 0; + for (uint8_t k = 0; k < min; ++k) { Pred mask = 1 << k; - uint16_t n = 0; - uint8_t max = 0; - // at position k count the matching characters and find the max character frequency - for (uint16_t i = 0; i < 256; ++i) + uint8_t n = 0; + uint16_t max = 0; + uint16_t sum = 0; + // at position k count the matching characters and find the max and sum character frequency + for (uint16_t i = 0; i < 256 && n <= pinmax; ++i) { if ((bit_[i] & mask) == 0) { @@ -355,40 +358,63 @@ void Pattern::init(const char *options, const uint8_t *pred) uint8_t freq = frequency(static_cast(i)); if (freq > max) max = freq; + sum += freq; } } - if (n <= pinmax) + if (n > 0 && n <= pinmax && max <= freqmax) { - // pick the fewest and rarest (less frequently occurring) needles to search - if (max < freqlcp || (n < nlcp && max == freqlcp)) - { - lcs_ = lcp_; - nlcs = nlcp; - freqlcs = freqlcp; - lcp_ = static_cast(k); - nlcp = n; - freqlcp = max; - } - else if (n < nlcs || - (n == nlcs && - (max < freqlcs || - abs(static_cast(lcp_) - static_cast(lcs_)) < abs(static_cast(lcp_) - static_cast(k))))) + // score average frequency, twice penalize pins > 8 + uint8_t m = static_cast(std::min((sum + n - 1) / n * ((n > 8) + 1), 255)); + size_t i; + for (i = 0; i < scores; ++i) { - lcs_ = static_cast(k); - nlcs = n; - freqlcs = max; + // keep scores sorted by average (mean) frequency + if (score[i][0] > m || (score[i][0] == m && score[i][2] > n)) + { + memmove(score[i+1], score[i], static_cast(score[scores]) - static_cast(score[i])); + break; + } } + score[i][0] = m; + score[i][1] = k; + score[i][2] = n; + ++scores; } } - // one position to pin: make lcp and lcs equal to 0 (only one position at 0) - if (min == 1 || nlcs == 65535) + if (scores == 1) { - nlcs = nlcp; - lcs_ = lcp_; + freqlcp = freqlcs = score[0][0]; + lcp_ = lcs_ = score[0][1]; + nlcp = nlcs = score[0][2]; + } + else if (scores >= 2) + { + freqlcp = score[0][0]; + lcp_ = score[0][1]; + nlcp = score[0][2]; + freqlcs = score[1][0]; + lcs_ = score[1][1]; + nlcs = score[1][2]; + if (scores > 2) + { + if (lcp_ + 1 == lcs_ || lcs_ + 1 == lcp_ || nlcs > 8) + { + for (size_t i = 2; i < scores; ++i) + { + if (score[i][2] <= 8 && abs(lcp_ - lcs_) < abs(lcp_ - score[i][1])) + { + freqlcs = score[i][0]; + lcs_ = score[i][1]; + nlcs = score[i][2]; + break; + } + } + } + } } // number of needles required - uint16_t n = nlcp > nlcs ? nlcp : nlcs; - DBGLOG("min=%zu lcp=%hu(%hu) pin=%hu nlcp=%hu(%hu) freq=%hu(%hu) freqsum=%hu npy=%zu", min, lcp_, lcs_, n, nlcp, nlcs, freqlcp, freqlcs, freqsum, npy_); + uint16_t n = std::max(nlcp, nlcs); + DBGLOG("min=%zu lcp=%hu(%hu) pin=%hu nlcp=%hu(%hu) freq=%hu(%hu) npy=%zu cut=%u", min, lcp_, lcs_, n, nlcp, nlcs, freqlcp, freqlcs, npy_, cut_); // determine if a needle-based search is worthwhile, below or meeting the thresholds if (n <= pinmax && freqlcp <= freqmax) { @@ -405,7 +431,7 @@ void Pattern::init(const char *options, const uint8_t *pred) if ((bit_[i] & masklcs) == 0) chr_[k++] = static_cast(i); } - // fill up the rest of the character tables with duplicates if necessary + // fill up the rest of the character tables with duplicates as necessary for (; j < n; ++j) chr_[j] = chr_[j - 1]; for (; k < 2*n; ++k) @@ -3820,16 +3846,9 @@ void Pattern::analyze_dfa(DFA::State *start) // make a cut? bool make_cut = false; if (has_backedge) - { make_cut = (max_count > 4 || max_freq > 251); - } - else if (cut_span >= 3 && prev_min_count < 0xffff) - { - make_cut = (prev_min_count > 2 * min_count || - (prev_min_count > 16 && min_count <= 16) || - (prev_min_count > 8 && min_count <= 8) || - (prev_min_count > 1 && min_count <= 1)); - } + else + make_cut = (cut_span >= 3 && prev_min_count < 0xffff && prev_min_count > 8 && prev_min_count >= 2 * min_count); if (make_cut) { // determine if this is a better cut than the last @@ -3915,8 +3934,7 @@ void Pattern::analyze_dfa(DFA::State *start) if (cut_span > best_cut_span) better = true; else if (cut_span >= 2 || cut_span == best_cut_span) - better = ((best_min_count > 16 && min_count <= 16) || - (best_min_count > 8 && min_count <= 8)); + better = (best_min_count > min_count); } if (better) { @@ -4201,23 +4219,23 @@ void Pattern::analyze_dfa(DFA::State *start) DBGLOG("END Pattern::analyze_dfa()"); } -void Pattern::gen_predict_match(std::set states) +void Pattern::gen_min(std::set& states) { + // find min between 0 and 8 min_ = 8; - std::map > hashes[8]; - gen_predict_match_start(states, hashes[0]); - for (int level = 1; level < 8; ++level) - for (std::map >::iterator from = hashes[level - 1].begin(); from != hashes[level - 1].end(); ++from) - gen_predict_match_transitions(level, from->first, from->second, hashes[level]); + std::set next; + gen_min_start(states, next); + for (size_t level = 1; level < min_; ++level) + gen_min_transitions(level, next); } -void Pattern::gen_predict_match_start(std::set states, std::map >& hashes) +void Pattern::gen_min_start(std::set& states, std::set& next) { bool empty = true; for (std::set::iterator it = states.begin(); it != states.end(); ++it) { DFA::State *state = *it; - if (!state->edges.empty()) + if (empty && !state->edges.empty()) empty = false; for (DFA::State::Edges::iterator edge = state->edges.begin(); edge != state->edges.end(); ++edge) { @@ -4225,25 +4243,91 @@ void Pattern::gen_predict_match_start(std::set states, std::mapsecond.second; // ignore edges from a state to a state with breadth-first depth <= cut if (next_state != NULL && lbk_ > 0) if (next_state->first > 0 && next_state->first <= cut_) continue; - if (next_state != NULL && (next_state->edges.empty() || is_meta(next_state->edges.begin()->first))) + // don't visit next state if it is accepting or when any edges from it are meta + if (next_state != NULL && (next_state->accept > 0 || next_state->edges.empty() || is_meta(next_state->edges.rbegin()->first))) next_state = NULL; + if (next_state != NULL) + next.insert(next_state); + else + min_ = 1; + } + } + if (empty) + min_ = 0; +} + +void Pattern::gen_min_transitions(size_t level, std::set& next) +{ + std::set prev; + prev.swap(next); + for (std::set::iterator from = prev.begin(); from != prev.end(); ++from) + { + DFA::State *state = *from; + for (DFA::State::Edges::iterator edge = state->edges.begin(); edge != state->edges.end(); ++edge) + { + Char lo = edge->first; + if (is_meta(lo)) + { + min_ = level; + return; + } + DFA::State *next_state = level < 7 ? edge->second.second : NULL; + // ignore edges from a state to a state with breadth-first depth <= cut + if (next_state != NULL && lbk_ > 0) + if (next_state->first > 0 && next_state->first <= cut_) + continue; + // don't visit next state if it is accepting or when any edges from it are meta + if (next_state != NULL && (next_state->accept > 0 || next_state->edges.empty() || is_meta(next_state->edges.rbegin()->first))) + next_state = NULL; + if (next_state != NULL) + next.insert(next_state); + else if (min_ > level) + min_ = level + 1; + } + } +} + +void Pattern::gen_predict_match(std::set& states) +{ + // find min between 0 and 8 then populate bitap and PM hashes (bounded by min) + gen_min(states); + std::map > hashes[8]; + gen_predict_match_start(states, hashes[0]); + for (size_t level = 1; level < std::max(min_, 4); ++level) + for (std::map >::iterator from = hashes[level - 1].begin(); from != hashes[level - 1].end(); ++from) + gen_predict_match_transitions(level, from->first, from->second, hashes[level]); +} + +void Pattern::gen_predict_match_start(std::set& states, std::map >& hashes) +{ + for (std::set::iterator it = states.begin(); it != states.end(); ++it) + { + DFA::State *state = *it; // state at level 0 + for (DFA::State::Edges::iterator edge = state->edges.begin(); edge != state->edges.end(); ++edge) + { + Char lo = edge->first; + if (is_meta(lo)) + break; + // next level state to visit + DFA::State *next_state = edge->second.second; + // ignore states before the cut, since we don't use them for bitap and PM hashing + if (next_state != NULL && lbk_ > 0) + if (next_state->first > 0 && next_state->first <= cut_) + continue; bool accept = next_state == NULL || next_state->accept > 0 || is_meta(next_state->edges.rbegin()->first); Char hi = edge->second.first; if (next_state != NULL) hashes[next_state].insert(lo, hi); uint8_t mask = ~(1 << 6); if (accept) - { mask &= ~(1 << 7); - min_ = 1; - } for (Char ch = lo; ch <= hi; ++ch) { bit_[ch] &= ~1; @@ -4253,43 +4337,39 @@ void Pattern::gen_predict_match_start(std::set states, std::map %p", lo, hi, next_state); } } - if (empty) - min_ = 0; } -void Pattern::gen_predict_match_transitions(size_t level, DFA::State *state, const ORanges& previous, std::map >& hashes) +void Pattern::gen_predict_match_transitions(size_t level, DFA::State *state, const ORanges& previous, std::map >& level_hashes) { for (DFA::State::Edges::iterator edge = state->edges.begin(); edge != state->edges.end(); ++edge) { Char lo = edge->first; if (is_meta(lo)) - { - if (min_ > level) - min_ = level; break; - } - DFA::State *next_state = level < 7 ? edge->second.second : NULL; - // ignore edges from a state to a state with breadth-first depth <= cut + // next level state to visit + DFA::State *next_state = edge->second.second; + // ignore states before the cut, since we don't use them for bitap and PM hashing if (next_state != NULL && lbk_ > 0) if (next_state->first > 0 && next_state->first <= cut_) continue; - if (next_state != NULL && (next_state->edges.empty() || is_meta(next_state->edges.begin()->first))) - next_state = NULL; bool accept = next_state == NULL || next_state->accept > 0 || is_meta(next_state->edges.rbegin()->first); - ORanges *next_hashes = next_state != NULL ? &hashes[next_state] : NULL; - if (accept && min_ > level) - min_ = level + 1; + ORanges *next_hashes = next_state != NULL && level + 1 < std::max(min_, 4) ? &level_hashes[next_state] : NULL; + Char hi = edge->second.first; + if (level < min_) + { + // populate bitap + uint8_t mask = ~(1 << level); + for (Char ch = lo; ch <= hi; ++ch) + bit_[ch] &= mask; + DBGLOG("%zu bitap %p: %u..%u -> %p", level, state, lo, hi, next_state); + } if (level < 4) { + // populate PM4 uint8_t pmh_mask = ~(1 << level); uint8_t pma_mask = ~(1 << (6 - 2 * level)); if (level == 3 || accept) pma_mask &= ~(1 << (7 - 2 * level)); - Char hi = edge->second.first; - if (level <= min_) - for (Char ch = lo; ch <= hi; ++ch) - bit_[ch] &= pmh_mask; - DBGLOG("%zu bitap %p: %u..%u -> %p", level, state, lo, hi, next_state); if (next_hashes != NULL) { for (ORanges::iterator prev_range = previous.begin(); prev_range != previous.end(); ++prev_range) @@ -4326,13 +4406,9 @@ void Pattern::gen_predict_match_transitions(size_t level, DFA::State *state, con } } } - else if (level <= min_) + else if (level < min_) { uint8_t pmh_mask = ~(1 << level); - Char hi = edge->second.first; - for (Char ch = lo; ch <= hi; ++ch) - bit_[ch] &= pmh_mask; - DBGLOG("%zu bitap %p: %u..%u -> %p", level, state, lo, hi, next_state); if (next_hashes != NULL) { for (ORanges::iterator prev_range = previous.begin(); prev_range != previous.end(); ++prev_range) @@ -4370,7 +4446,7 @@ void Pattern::gen_predict_match_transitions(size_t level, DFA::State *state, con } } -void Pattern::gen_match_hfa(DFA::State* start) +void Pattern::gen_match_hfa(DFA::State *start) { size_t max_level = HFA::MAX_DEPTH - 1; // max level from start state(s) is reduced when hashes exponentially increase HFA::State index = 1; // DFA states are enumarated for breadth-first matching with the state visit set in match_hfa() @@ -4515,7 +4591,7 @@ bool Pattern::match_hfa_transitions(size_t level, const HFA::Hashes& hashes, con if (level == 0 || visit.test(next->first)) { bool all = true; - for (size_t offset = std::max(static_cast(7), level) - 7; offset <= level; ++offset) + for (size_t offset = std::max(7, level) - 7; offset <= level; ++offset) { uint8_t mask = 1 << (level - offset); bool flag = false; diff --git a/lib/simd_avx2.cpp b/lib/simd_avx2.cpp index 47c6751e..43dc525f 100644 --- a/lib/simd_avx2.cpp +++ b/lib/simd_avx2.cpp @@ -45,7 +45,7 @@ namespace reflex { // Partially count newlines in string b up to e, updates b close to e with uncounted part -size_t simd_nlcount_avx2(const char*& b, const char *e) +size_t simd_nlcount_avx2(const char *& b, const char *e) { #if defined(HAVE_AVX2) || defined(HAVE_AVX512BW) const char *s = b; diff --git a/lib/simd_avx512bw.cpp b/lib/simd_avx512bw.cpp index af9a47a7..81de108d 100644 --- a/lib/simd_avx512bw.cpp +++ b/lib/simd_avx512bw.cpp @@ -45,7 +45,7 @@ namespace reflex { // Partially count newlines in string b up to e, updates b close to e with uncounted part -size_t simd_nlcount_avx512bw(const char*& b, const char *e) +size_t simd_nlcount_avx512bw(const char *& b, const char *e) { #if defined(HAVE_AVX512BW) && (!defined(_MSC_VER) || defined(_WIN64)) const char *s = b; diff --git a/reflex.pc b/reflex.pc index 9b9d3f34..6e877c67 100644 --- a/reflex.pc +++ b/reflex.pc @@ -5,7 +5,7 @@ includedir=${prefix}/include Name: RE/flex Description: high-performance C++ regex library and lexical analyzer generator -Version: 4.4.0 +Version: 4.5.0 Requires: Libs: -L${libdir} -lreflex Cflags: -I${includedir} diff --git a/reflexmin.pc b/reflexmin.pc index 2f5569f7..ebcc9ceb 100644 --- a/reflexmin.pc +++ b/reflexmin.pc @@ -5,7 +5,7 @@ includedir=${prefix}/include Name: RE/flex Description: high-performance C++ regex library and lexical analyzer generator -Version: 4.4.0 +Version: 4.5.0 Requires: Libs: -L${libdir} -lreflexmin Cflags: -I${includedir} diff --git a/src/reflex.h b/src/reflex.h index 29017855..845763d2 100644 --- a/src/reflex.h +++ b/src/reflex.h @@ -75,7 +75,7 @@ #endif // DO NOT ALTER THIS LINE: the makemake.sh script updates the version -#define REFLEX_VERSION "4.4.0" +#define REFLEX_VERSION "4.5.0" /// RE/flex scanner generator class, a variation of the classic "lex" tool to generate scanners. /**