From 6142aaf870c7c1aa223f6e48654477254c94110d Mon Sep 17 00:00:00 2001 From: Robert van Engelen Date: Thu, 7 Mar 2019 09:52:54 -0500 Subject: [PATCH] released 1.1.2 fixed reflex tool handling of backslashes in file paths. --- README.md | 1 + bin/reflex.exe | Bin 602112 -> 603136 bytes doc/html/abslexer_8h.html | 4 +- doc/html/absmatcher_8h.html | 4 +- doc/html/annotated.html | 4 +- doc/html/bits_8h.html | 4 +- doc/html/boostmatcher_8h.html | 4 +- doc/html/class_reflex-members.html | 153 +++++++++--------- doc/html/class_reflex.html | 33 +++- doc/html/classes.html | 4 +- ...lassreflex_1_1_abstract_lexer-members.html | 4 +- doc/html/classreflex_1_1_abstract_lexer.html | 4 +- ..._1_abstract_lexer_1_1_matcher-members.html | 4 +- ...reflex_1_1_abstract_lexer_1_1_matcher.html | 4 +- ...ssreflex_1_1_abstract_matcher-members.html | 4 +- .../classreflex_1_1_abstract_matcher.html | 4 +- ...abstract_matcher_1_1_iterator-members.html | 4 +- ...lex_1_1_abstract_matcher_1_1_iterator.html | 4 +- ...bstract_matcher_1_1_operation-members.html | 4 +- ...ex_1_1_abstract_matcher_1_1_operation.html | 4 +- doc/html/classreflex_1_1_bits-members.html | 4 +- doc/html/classreflex_1_1_bits.html | 4 +- ...classreflex_1_1_boost_matcher-members.html | 4 +- doc/html/classreflex_1_1_boost_matcher.html | 4 +- ...reflex_1_1_boost_perl_matcher-members.html | 4 +- .../classreflex_1_1_boost_perl_matcher.html | 4 +- ...eflex_1_1_boost_posix_matcher-members.html | 4 +- .../classreflex_1_1_boost_posix_matcher.html | 4 +- .../classreflex_1_1_flex_lexer-members.html | 4 +- doc/html/classreflex_1_1_flex_lexer.html | 4 +- ...ex_1_1_flex_lexer_1_1_matcher-members.html | 4 +- ...lassreflex_1_1_flex_lexer_1_1_matcher.html | 4 +- doc/html/classreflex_1_1_input-members.html | 4 +- doc/html/classreflex_1_1_input.html | 4 +- doc/html/classreflex_1_1_matcher-members.html | 4 +- doc/html/classreflex_1_1_matcher.html | 4 +- .../classreflex_1_1_o_ranges-members.html | 4 +- doc/html/classreflex_1_1_o_ranges.html | 4 +- doc/html/classreflex_1_1_pattern-members.html | 4 +- doc/html/classreflex_1_1_pattern.html | 4 +- ...assreflex_1_1_pattern_matcher-members.html | 4 +- doc/html/classreflex_1_1_pattern_matcher.html | 4 +- ...ssreflex_1_1_posix_1_1_tables-members.html | 4 +- .../classreflex_1_1_posix_1_1_tables.html | 4 +- doc/html/classreflex_1_1_ranges-members.html | 4 +- doc/html/classreflex_1_1_ranges.html | 4 +- ...ssreflex_1_1_std_ecma_matcher-members.html | 4 +- .../classreflex_1_1_std_ecma_matcher.html | 4 +- .../classreflex_1_1_std_matcher-members.html | 4 +- doc/html/classreflex_1_1_std_matcher.html | 4 +- ...sreflex_1_1_std_posix_matcher-members.html | 4 +- .../classreflex_1_1_std_posix_matcher.html | 4 +- ...reflex_1_1_unicode_1_1_tables-members.html | 4 +- .../classreflex_1_1_unicode_1_1_tables.html | 4 +- .../classreflex_1_1regex__error-members.html | 4 +- doc/html/classreflex_1_1regex__error.html | 4 +- doc/html/convert_8h.html | 4 +- doc/html/debug_8h.html | 4 +- doc/html/dir_000002_000000.html | 4 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 4 +- .../dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html | 4 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 4 +- doc/html/error_8h.html | 4 +- doc/html/files.html | 4 +- doc/html/flexlexer_8h.html | 4 +- doc/html/functions.html | 4 +- doc/html/functions_0x7e.html | 4 +- doc/html/functions_b.html | 4 +- doc/html/functions_c.html | 4 +- doc/html/functions_d.html | 4 +- doc/html/functions_e.html | 9 +- doc/html/functions_enum.html | 4 +- doc/html/functions_eval.html | 4 +- doc/html/functions_f.html | 4 +- doc/html/functions_func.html | 4 +- doc/html/functions_func_0x7e.html | 4 +- doc/html/functions_func_b.html | 4 +- doc/html/functions_func_c.html | 4 +- doc/html/functions_func_d.html | 4 +- doc/html/functions_func_e.html | 7 +- doc/html/functions_func_f.html | 4 +- doc/html/functions_func_g.html | 4 +- doc/html/functions_func_h.html | 4 +- doc/html/functions_func_i.html | 4 +- doc/html/functions_func_l.html | 4 +- doc/html/functions_func_m.html | 4 +- doc/html/functions_func_n.html | 4 +- doc/html/functions_func_o.html | 4 +- doc/html/functions_func_p.html | 4 +- doc/html/functions_func_r.html | 4 +- doc/html/functions_func_s.html | 4 +- doc/html/functions_func_t.html | 4 +- doc/html/functions_func_u.html | 4 +- doc/html/functions_func_v.html | 4 +- doc/html/functions_func_w.html | 4 +- doc/html/functions_func_y.html | 4 +- doc/html/functions_g.html | 4 +- doc/html/functions_h.html | 4 +- doc/html/functions_i.html | 4 +- doc/html/functions_k.html | 4 +- doc/html/functions_l.html | 4 +- doc/html/functions_m.html | 4 +- doc/html/functions_n.html | 4 +- doc/html/functions_o.html | 4 +- doc/html/functions_p.html | 4 +- doc/html/functions_q.html | 4 +- doc/html/functions_r.html | 10 +- doc/html/functions_rela.html | 4 +- doc/html/functions_s.html | 4 +- doc/html/functions_t.html | 10 +- doc/html/functions_type.html | 4 +- doc/html/functions_u.html | 4 +- doc/html/functions_v.html | 4 +- doc/html/functions_vars.html | 4 +- doc/html/functions_vars_b.html | 4 +- doc/html/functions_vars_c.html | 4 +- doc/html/functions_vars_d.html | 4 +- doc/html/functions_vars_e.html | 4 +- doc/html/functions_vars_f.html | 4 +- doc/html/functions_vars_g.html | 4 +- doc/html/functions_vars_h.html | 4 +- doc/html/functions_vars_i.html | 4 +- doc/html/functions_vars_k.html | 4 +- doc/html/functions_vars_l.html | 4 +- doc/html/functions_vars_m.html | 4 +- doc/html/functions_vars_n.html | 4 +- doc/html/functions_vars_o.html | 4 +- doc/html/functions_vars_p.html | 4 +- doc/html/functions_vars_q.html | 4 +- doc/html/functions_vars_r.html | 4 +- doc/html/functions_vars_s.html | 4 +- doc/html/functions_vars_t.html | 4 +- doc/html/functions_vars_u.html | 4 +- doc/html/functions_vars_v.html | 4 +- doc/html/functions_vars_w.html | 4 +- doc/html/functions_vars_x.html | 4 +- doc/html/functions_vars_z.html | 4 +- doc/html/functions_w.html | 4 +- doc/html/functions_x.html | 4 +- doc/html/functions_y.html | 4 +- doc/html/functions_z.html | 4 +- doc/html/globals.html | 4 +- doc/html/globals_defs.html | 4 +- doc/html/globals_func.html | 4 +- doc/html/globals_vars.html | 4 +- doc/html/graph_legend.html | 4 +- doc/html/hierarchy.html | 4 +- doc/html/index.html | 39 +++-- doc/html/index_8md.html | 4 +- doc/html/inherits.html | 4 +- doc/html/input_8h.html | 4 +- doc/html/matcher_8h.html | 4 +- doc/html/namespacemembers.html | 4 +- doc/html/namespacemembers_func.html | 4 +- doc/html/namespacemembers_type.html | 4 +- doc/html/namespacemembers_vars.html | 4 +- doc/html/namespacereflex.html | 4 +- doc/html/namespacereflex_1_1_posix.html | 4 +- doc/html/namespacereflex_1_1_unicode.html | 4 +- .../namespacereflex_1_1convert__flag.html | 4 +- doc/html/namespaces.html | 4 +- doc/html/pattern_8h.html | 4 +- doc/html/posix_8h.html | 4 +- doc/html/ranges_8h.html | 4 +- doc/html/reflex_8cpp.html | 10 +- doc/html/reflex_8h.html | 8 +- doc/html/setop_8h.html | 4 +- doc/html/stdmatcher_8h.html | 4 +- doc/html/struct_reflex_1_1_code-members.html | 4 +- doc/html/struct_reflex_1_1_code.html | 4 +- .../struct_reflex_1_1_library-members.html | 4 +- doc/html/struct_reflex_1_1_library.html | 4 +- doc/html/struct_reflex_1_1_rule-members.html | 4 +- doc/html/struct_reflex_1_1_rule.html | 4 +- ..._1_abstract_matcher_1_1_const-members.html | 4 +- ...reflex_1_1_abstract_matcher_1_1_const.html | 4 +- ...1_abstract_matcher_1_1_option-members.html | 4 +- ...eflex_1_1_abstract_matcher_1_1_option.html | 4 +- ...uctreflex_1_1_bits_1_1_bitref-members.html | 4 +- .../structreflex_1_1_bits_1_1_bitref.html | 4 +- ...x_1_1_input_1_1file__encoding-members.html | 4 +- ...uctreflex_1_1_input_1_1file__encoding.html | 4 +- ...treflex_1_1_matcher_1_1_f_s_m-members.html | 4 +- .../structreflex_1_1_matcher_1_1_f_s_m.html | 4 +- ...reflex_1_1_pattern_1_1_option-members.html | 4 +- .../structreflex_1_1_pattern_1_1_option.html | 4 +- ...flex_1_1_pattern_1_1_position-members.html | 4 +- ...structreflex_1_1_pattern_1_1_position.html | 4 +- ...treflex_1_1_pattern_1_1_state-members.html | 4 +- .../structreflex_1_1_pattern_1_1_state.html | 4 +- ...ex_1_1_posix_1_1_tables_1_1lt-members.html | 4 +- ...ructreflex_1_1_posix_1_1_tables_1_1lt.html | 4 +- .../structreflex_1_1_type_op-members.html | 4 +- doc/html/structreflex_1_1_type_op.html | 4 +- ...1_type_op_3_01const_01_t_01_4-members.html | 4 +- ...eflex_1_1_type_op_3_01const_01_t_01_4.html | 4 +- ...treflex_1_1lazy__intersection-members.html | 4 +- .../structreflex_1_1lazy__intersection.html | 4 +- ...azy__intersection_1_1iterator-members.html | 4 +- ...lex_1_1lazy__intersection_1_1iterator.html | 4 +- .../structreflex_1_1lazy__union-members.html | 4 +- doc/html/structreflex_1_1lazy__union.html | 4 +- ...ex_1_1lazy__union_1_1iterator-members.html | 4 +- ...ructreflex_1_1lazy__union_1_1iterator.html | 4 +- ...tructreflex_1_1range__compare-members.html | 4 +- doc/html/structreflex_1_1range__compare.html | 4 +- doc/html/timer_8h.html | 4 +- doc/html/traits_8h.html | 4 +- doc/html/unicode_8h.html | 4 +- doc/html/utf8_8h.html | 4 +- doc/index.md | 87 +++++++--- doc/man/reflex.1 | 2 +- include/reflex/absmatcher.h | 2 +- src/reflex.cpp | 141 +++++++++------- src/reflex.h | 3 +- 215 files changed, 703 insertions(+), 608 deletions(-) diff --git a/README.md b/README.md index 67610286a..805870cba 100644 --- a/README.md +++ b/README.md @@ -425,6 +425,7 @@ Changelog - Jan 21, 2019: 1.0.12 the reflex tool now reads files using `reflex::Input`. - Feb 20, 2019: 1.1.0 code quality updates. - Mar 6, 2019: 1.1.1 fixed `configure` and `make install` header files, updated `--bison-locations` option. +- Mar 7, 2019: 1.1.2 fixed reflex tool handling of backslashes in file paths. [logo-url]: https://www.genivia.com/images/reflex-logo.png [reflex-url]: https://www.genivia.com/reflex.html diff --git a/bin/reflex.exe b/bin/reflex.exe index a94c706376e56c158271057d7d1d2c0c1b4a6289..568137814783bed330f4c7ca0ee86af1c6c8583f 100755 GIT binary patch delta 123730 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

1V?$!3aL|KN$UqBTCGfeQgkUq)wC}l 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'jr&o&ai28`NTKw8V6;p;9_ioQC&L)e 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 diff --git a/doc/html/abslexer_8h.html b/doc/html/abslexer_8h.html index d5f37069d..10fcef13b 100644 --- a/doc/html/abslexer_8h.html +++ b/doc/html/abslexer_8h.html @@ -21,7 +21,7 @@


-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/absmatcher_8h.html b/doc/html/absmatcher_8h.html index 8bc9f2a74..685ef5185 100644 --- a/doc/html/absmatcher_8h.html +++ b/doc/html/absmatcher_8h.html @@ -21,7 +21,7 @@
absmatcher.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -250,7 +250,7 @@

Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/annotated.html b/doc/html/annotated.html index 4ffe1e6a7..9f174f92d 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -21,7 +21,7 @@
Class List

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/bits_8h.html b/doc/html/bits_8h.html index 0f9d0f431..9da127da8 100644 --- a/doc/html/bits_8h.html +++ b/doc/html/bits_8h.html @@ -21,7 +21,7 @@
bits.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/boostmatcher_8h.html b/doc/html/boostmatcher_8h.html index 6514d776b..fb964d5d9 100644 --- a/doc/html/boostmatcher_8h.html +++ b/doc/html/boostmatcher_8h.html @@ -21,7 +21,7 @@
boostmatcher.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex-members.html b/doc/html/class_reflex-members.html index 2fd6dda48..5cd999f1d 100644 --- a/doc/html/class_reflex-members.html +++ b/doc/html/class_reflex-members.html @@ -21,7 +21,7 @@
Member List

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -64,84 +64,85 @@ dt(size_t &pos)Reflexprivate eq(size_t &pos)Reflexprivate error(const char *message, const char *arg=NULL, size_t at_lineno=0)Reflexprivate - get_code(size_t &pos)Reflexprivate - get_line()Reflexprivate - get_name(size_t &pos)Reflexprivate - get_namespace(size_t &pos)Reflexprivate - get_option(size_t &pos)Reflexprivate - get_regex(size_t &pos)Reflexprivate - get_start(size_t &pos)Reflexprivate - get_starts(size_t &pos)Reflexprivate - get_string(size_t &pos)Reflexprivate - help(const char *message=NULL, const char *arg=NULL)Reflexprivate - inReflexprotected - include(const std::string &filename)Reflexprivate - inclusiveReflexprotected - infileReflexprotected - init(int argc, char **argv)Reflexprivate - is_classcode()Reflexprivate - is_code()Reflexprivate - is_initcode()Reflexprivate - is_topcode()Reflexprivate - librariesReflexprotected - libraryReflexprotected - LibraryMap typedefReflex - lineReflexprotected - linelenReflexprotected - linenoReflexprotected - main(int argc, char **argv)Reflex - nl(size_t &pos)Reflexprivate - optionsReflexprotected - outReflexprotected - parse()Reflexprivate - parse_section_1()Reflexprivate - parse_section_2()Reflexprivate - parse_section_3()Reflexprivate - patternsReflexprotected - Rules typedefReflex - rulesReflexprotected - RulesMap typedefReflex - section_1Reflexprotected - section_2Reflexprotected - section_3Reflexprotected - section_classReflexprotected - section_initReflexprotected - section_topReflexprotected - set_library()Reflexprivate - SGR(const char *code)Reflexinlineprivate - skip_comment(size_t &pos)Reflexprivate - Start typedefReflex - Starts typedefReflex - stats()Reflexprivate - StringMap typedefReflex - Strings typedefReflex - undot_namespace(std::string &s)Reflexprivate - version()Reflexprivate - warning(const char *message, const char *arg=NULL, size_t at_lineno=0)Reflexprivate - write()Reflexprivate - write_banner(const char *title)Reflexprivate - write_class()Reflexprivate - write_code(const Codes &codes)Reflexprivate - write_code(const Code &code)Reflexprivate - write_defines()Reflexprivate - write_lexer()Reflexprivate - write_main()Reflexprivate - write_namespace_close()Reflexprivate - write_namespace_open()Reflexprivate - write_namespace_scope()Reflexprivate - write_perf_report()Reflexprivate - write_prelude()Reflexprivate - write_regex(const std::string &regex)Reflexprivate - write_section_1()Reflexprivate - write_section_3()Reflexprivate - write_section_class()Reflexprivate - write_section_init()Reflexprivate - write_section_top()Reflexprivate - ws(size_t &pos)Reflexprivate + escape_bs(const std::string &s)Reflexprivate + get_code(size_t &pos)Reflexprivate + get_line()Reflexprivate + get_name(size_t &pos)Reflexprivate + get_namespace(size_t &pos)Reflexprivate + get_option(size_t &pos)Reflexprivate + get_regex(size_t &pos)Reflexprivate + get_start(size_t &pos)Reflexprivate + get_starts(size_t &pos)Reflexprivate + get_string(size_t &pos)Reflexprivate + help(const char *message=NULL, const char *arg=NULL)Reflexprivate + inReflexprotected + include(const std::string &filename)Reflexprivate + inclusiveReflexprotected + infileReflexprotected + init(int argc, char **argv)Reflexprivate + is_classcode()Reflexprivate + is_code()Reflexprivate + is_initcode()Reflexprivate + is_topcode()Reflexprivate + librariesReflexprotected + libraryReflexprotected + LibraryMap typedefReflex + lineReflexprotected + linelenReflexprotected + linenoReflexprotected + main(int argc, char **argv)Reflex + nl(size_t &pos)Reflexprivate + optionsReflexprotected + outReflexprotected + parse()Reflexprivate + parse_section_1()Reflexprivate + parse_section_2()Reflexprivate + parse_section_3()Reflexprivate + patternsReflexprotected + Rules typedefReflex + rulesReflexprotected + RulesMap typedefReflex + section_1Reflexprotected + section_2Reflexprotected + section_3Reflexprotected + section_classReflexprotected + section_initReflexprotected + section_topReflexprotected + set_library()Reflexprivate + SGR(const char *code)Reflexinlineprivate + skip_comment(size_t &pos)Reflexprivate + Start typedefReflex + Starts typedefReflex + stats()Reflexprivate + StringMap typedefReflex + Strings typedefReflex + undot_namespace(std::string &s)Reflexprivate + version()Reflexprivate + warning(const char *message, const char *arg=NULL, size_t at_lineno=0)Reflexprivate + write()Reflexprivate + write_banner(const char *title)Reflexprivate + write_class()Reflexprivate + write_code(const Codes &codes)Reflexprivate + write_code(const Code &code)Reflexprivate + write_defines()Reflexprivate + write_lexer()Reflexprivate + write_main()Reflexprivate + write_namespace_close()Reflexprivate + write_namespace_open()Reflexprivate + write_namespace_scope()Reflexprivate + write_perf_report()Reflexprivate + write_prelude()Reflexprivate + write_regex(const std::string &regex)Reflexprivate + write_section_1()Reflexprivate + write_section_3()Reflexprivate + write_section_class()Reflexprivate + write_section_init()Reflexprivate + write_section_top()Reflexprivate + ws(size_t &pos)Reflexprivate
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/class_reflex.html b/doc/html/class_reflex.html index 21d1a33df..73179d0a6 100644 --- a/doc/html/class_reflex.html +++ b/doc/html/class_reflex.html @@ -21,7 +21,7 @@
Reflex Class Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -347,6 +347,9 @@ std::string get_code (size_t &pos)  Get line(s) of code, %{ %}, %top{ %}, %class{ %}, and %init{ %}. More...
  +std::string escape_bs (const std::string &s) + Returns string with all \ replaced by \ to stringify file paths. More...
+  void abort (const char *message, const char *arg=NULL)  Abort with an error message. More...
  @@ -667,6 +670,32 @@

Member Function Documentation

Report an error and exit.

+
+ + +
+
+ + + + + +
+ + + + + + + + +
std::string Reflex::escape_bs (const std::string & s)
+
+private
+
+ +

Returns string with all \ replaced by \ to stringify file paths.

+
@@ -2422,7 +2451,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classes.html b/doc/html/classes.html index b2ece053b..8a48780ef 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -21,7 +21,7 @@
Class Index

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -90,7 +90,7 @@
+Converted on Thu Mar 7 2019 09:47:33 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 12152d4ff..8f1707600 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -104,7 +104,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 d9e2605cb..74dd1ac10 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1521,7 +1521,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 965f4319e..7005c575a 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 855e34fa2..c8e708f14 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -295,7 +295,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 92e248161..7061febaa 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -149,7 +149,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 df2a1a673..0c135f942 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -2743,7 +2743,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 f786a82a3..719ac8143 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 9f09c140d..7d0018958 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -539,7 +539,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 cac0c64dd..84b64f57c 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -69,7 +69,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 0021dc0ce..5b1de35d5 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -367,7 +367,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 f46504c13..2e2b33d06 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -105,7 +105,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_bits.html b/doc/html/classreflex_1_1_bits.html index 877b339e8..98ac9a10c 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1659,7 +1659,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 dd48dc03d..37df87bf2 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -172,7 +172,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 aa1044993..067abdade 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1012,7 +1012,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 6c91567d6..84371e937 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -175,7 +175,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 2563098f3..c30786017 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -608,7 +608,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 8d6d7ddc3..0942b4273 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -175,7 +175,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 e0e462d64..87615c295 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -655,7 +655,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 ff38dd9e6..fc7804ac9 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 1b2135dfd..d9420bc86 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -855,7 +855,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 dfd81074a..9be795c9d 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 346d0d89c..1e12a56b5 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -319,7 +319,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 56ff9bbf3..781eedfd3 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -106,7 +106,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_input.html b/doc/html/classreflex_1_1_input.html index 8ea18a207..e416bd8ff 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1549,7 +1549,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 62f10a9ef..e61727f97 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -207,7 +207,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_matcher.html b/doc/html/classreflex_1_1_matcher.html index b8991fa5c..50fae70e7 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1915,7 +1915,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 945f84db7..320f0c293 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -103,7 +103,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 b4975af54..4a2bcb7b5 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1049,7 +1049,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 8de4e9e0b..89e0e1ef5 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -176,7 +176,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_pattern.html b/doc/html/classreflex_1_1_pattern.html index 68be66951..ddf88b360 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -3335,7 +3335,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 a2eadf4cf..6f0b1ee27 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -163,7 +163,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 79d638247..d222f044b 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1033,7 +1033,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 169cdf866..759c88209 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 fc8b22d65..4faf48eab 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -144,7 +144,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 8840de55f..75ac88881 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -89,7 +89,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1_ranges.html b/doc/html/classreflex_1_1_ranges.html index c40893bc4..83cf7cad6 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1104,7 +1104,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 f02675aac..d8f4eb52d 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -178,7 +178,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 8f2041649..8d5c2b022 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -796,7 +796,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 66db65740..8992d4ca0 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -174,7 +174,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 b9f022783..8526d4868 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1018,7 +1018,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 7189a6708..c02419e3a 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -178,7 +178,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 7cc5710bd..9be74851b 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -842,7 +842,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 76b22e3d5..295c7d687 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 5a9ec3c2a..904ef936c 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -198,7 +198,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 b3dacc8ad..89826a69d 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -82,7 +82,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/classreflex_1_1regex__error.html b/doc/html/classreflex_1_1regex__error.html index 62d399b96..813fb29cb 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -685,7 +685,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/convert_8h.html b/doc/html/convert_8h.html index 1d033997b..662a99f24 100644 --- a/doc/html/convert_8h.html +++ b/doc/html/convert_8h.html @@ -21,7 +21,7 @@
convert.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -146,7 +146,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/debug_8h.html b/doc/html/debug_8h.html index 160f1f8e5..b7a30565c 100644 --- a/doc/html/debug_8h.html +++ b/doc/html/debug_8h.html @@ -21,7 +21,7 @@
debug.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -223,7 +223,7 @@

Example

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/dir_000002_000000.html b/doc/html/dir_000002_000000.html index 49d0ea01c..bc9784d9e 100644 --- a/doc/html/dir_000002_000000.html +++ b/doc/html/dir_000002_000000.html @@ -21,7 +21,7 @@
src -> include Relation

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 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 Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index e5ba1f616..86b75343b 100644 --- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -21,7 +21,7 @@
src Directory Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html index 74ee4c372..d7481882b 100644 --- a/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html +++ b/doc/html/dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html @@ -21,7 +21,7 @@
reflex Directory Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html index 70a97a449..63525f57d 100644 --- a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -21,7 +21,7 @@
include Directory Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -62,7 +62,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/error_8h.html b/doc/html/error_8h.html index 8ee0a47b4..925a11d78 100644 --- a/doc/html/error_8h.html +++ b/doc/html/error_8h.html @@ -21,7 +21,7 @@
error.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/files.html b/doc/html/files.html index de7c125ad..965375f4e 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -21,7 +21,7 @@
File List

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -77,7 +77,7 @@
+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/flexlexer_8h.html b/doc/html/flexlexer_8h.html index 0c36274e7..7dba3f975 100644 --- a/doc/html/flexlexer_8h.html +++ b/doc/html/flexlexer_8h.html @@ -21,7 +21,7 @@
flexlexer.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -1079,7 +1079,7 @@

Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/functions.html b/doc/html/functions.html index 3d0136806..2c303bcfe 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -164,7 +164,7 @@

- a -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html index e17ecd88d..e2093d5be 100644 --- a/doc/html/functions_0x7e.html +++ b/doc/html/functions_0x7e.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -109,7 +109,7 @@

- ~ -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html index 078ce192d..cf53380d2 100644 --- a/doc/html/functions_b.html +++ b/doc/html/functions_b.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- b -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html index 60fbd8a20..f655fe7f6 100644 --- a/doc/html/functions_c.html +++ b/doc/html/functions_c.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -254,7 +254,7 @@

- c -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html index ade392594..a78e3aa0d 100644 --- a/doc/html/functions_d.html +++ b/doc/html/functions_d.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -124,7 +124,7 @@

- d -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html index 81e896cba..948ddf354 100644 --- a/doc/html/functions_e.html +++ b/doc/html/functions_e.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -156,7 +156,7 @@

- e -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index 66e87b0ef..05af04035 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -21,7 +21,7 @@
Class Members - Enumerations

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -68,7 +68,7 @@
+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index 0c2119f07..d33d0af26 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -21,7 +21,7 @@
Class Members - Enumerator

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@
+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/functions_f.html b/doc/html/functions_f.html index 3203bb554..4bd52e3c1 100644 --- a/doc/html/functions_f.html +++ b/doc/html/functions_f.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -239,7 +239,7 @@

- f -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index 0cf304326..0560c6582 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -140,7 +140,7 @@

- a -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html index 4b96fdf18..3915fe079 100644 --- a/doc/html/functions_func_0x7e.html +++ b/doc/html/functions_func_0x7e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -105,7 +105,7 @@

- ~ -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_b.html b/doc/html/functions_func_b.html index 6b476603d..454b33063 100644 --- a/doc/html/functions_func_b.html +++ b/doc/html/functions_func_b.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@

- b -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_c.html b/doc/html/functions_func_c.html index 9e6054ba3..bbddcfd84 100644 --- a/doc/html/functions_func_c.html +++ b/doc/html/functions_func_c.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -153,7 +153,7 @@

- c -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_d.html b/doc/html/functions_func_d.html index 1fd0f0518..52feb7689 100644 --- a/doc/html/functions_func_d.html +++ b/doc/html/functions_func_d.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -108,7 +108,7 @@

- d -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_e.html b/doc/html/functions_func_e.html index 4e1343017..2fa7b9337 100644 --- a/doc/html/functions_func_e.html +++ b/doc/html/functions_func_e.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -124,6 +124,9 @@

- e -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_f.html b/doc/html/functions_func_f.html index 200dbf614..85f6b900b 100644 --- a/doc/html/functions_func_f.html +++ b/doc/html/functions_func_f.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -205,7 +205,7 @@

- f -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_g.html b/doc/html/functions_func_g.html index f97da6982..7b48da262 100644 --- a/doc/html/functions_func_g.html +++ b/doc/html/functions_func_g.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -141,7 +141,7 @@

- g -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_h.html b/doc/html/functions_func_h.html index 4616b1575..4e62e9126 100644 --- a/doc/html/functions_func_h.html +++ b/doc/html/functions_func_h.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -105,7 +105,7 @@

- h -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_i.html b/doc/html/functions_func_i.html index e8188af55..bb05287c4 100644 --- a/doc/html/functions_func_i.html +++ b/doc/html/functions_func_i.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -186,7 +186,7 @@

- i -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_l.html b/doc/html/functions_func_l.html index b31d91341..b5b49adf5 100644 --- a/doc/html/functions_func_l.html +++ b/doc/html/functions_func_l.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -138,7 +138,7 @@

- l -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_m.html b/doc/html/functions_func_m.html index 8a7e415c2..5de508d6c 100644 --- a/doc/html/functions_func_m.html +++ b/doc/html/functions_func_m.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -116,7 +116,7 @@

- m -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_n.html b/doc/html/functions_func_n.html index f6c5cf0f4..da3bd9f40 100644 --- a/doc/html/functions_func_n.html +++ b/doc/html/functions_func_n.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -116,7 +116,7 @@

- n -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_o.html b/doc/html/functions_func_o.html index dc457ff2a..e0060d665 100644 --- a/doc/html/functions_func_o.html +++ b/doc/html/functions_func_o.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -265,7 +265,7 @@

- o -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_p.html b/doc/html/functions_func_p.html index 191c28457..e4924b73e 100644 --- a/doc/html/functions_func_p.html +++ b/doc/html/functions_func_p.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -179,7 +179,7 @@

- p -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_r.html b/doc/html/functions_func_r.html index 41f9f333a..2252acbe1 100644 --- a/doc/html/functions_func_r.html +++ b/doc/html/functions_func_r.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@

- r -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_s.html b/doc/html/functions_func_s.html index 995937c66..6459f438a 100644 --- a/doc/html/functions_func_s.html +++ b/doc/html/functions_func_s.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- s -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_t.html b/doc/html/functions_func_t.html index 8f7efcd05..6c3e6fe85 100644 --- a/doc/html/functions_func_t.html +++ b/doc/html/functions_func_t.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -110,7 +110,7 @@

- t -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_u.html b/doc/html/functions_func_u.html index 249ae443d..50efec871 100644 --- a/doc/html/functions_func_u.html +++ b/doc/html/functions_func_u.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -100,7 +100,7 @@

- u -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_v.html b/doc/html/functions_func_v.html index 7c3cb0892..74ec93cfa 100644 --- a/doc/html/functions_func_v.html +++ b/doc/html/functions_func_v.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -93,7 +93,7 @@

- v -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_w.html b/doc/html/functions_func_w.html index e8d13528b..272e91325 100644 --- a/doc/html/functions_func_w.html +++ b/doc/html/functions_func_w.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -185,7 +185,7 @@

- w -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_func_y.html b/doc/html/functions_func_y.html index 7bb35e9a6..62b4f82b6 100644 --- a/doc/html/functions_func_y.html +++ b/doc/html/functions_func_y.html @@ -21,7 +21,7 @@
Class Members - Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -111,7 +111,7 @@

- y -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html index 5f5d7ea48..892e980fe 100644 --- a/doc/html/functions_g.html +++ b/doc/html/functions_g.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -151,7 +151,7 @@

- g -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html index 0619f14f9..b0283a3aa 100644 --- a/doc/html/functions_h.html +++ b/doc/html/functions_h.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -112,7 +112,7 @@

- h -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html index a8b1b7059..2872c4674 100644 --- a/doc/html/functions_i.html +++ b/doc/html/functions_i.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -274,7 +274,7 @@

- i -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_k.html b/doc/html/functions_k.html index a4a4731b5..49ff89f2e 100644 --- a/doc/html/functions_k.html +++ b/doc/html/functions_k.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- k -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html index 43bbd12b7..bd6b19e3a 100644 --- a/doc/html/functions_l.html +++ b/doc/html/functions_l.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -189,7 +189,7 @@

- l -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html index 751c22607..5f9bc1a7b 100644 --- a/doc/html/functions_m.html +++ b/doc/html/functions_m.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -217,7 +217,7 @@

- m -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html index db46ae9af..4aa3a36ec 100644 --- a/doc/html/functions_n.html +++ b/doc/html/functions_n.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -152,7 +152,7 @@

- n -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html index 846f65de4..251e21d71 100644 --- a/doc/html/functions_o.html +++ b/doc/html/functions_o.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -292,7 +292,7 @@

- o -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html index a7e792b58..3725b0b1e 100644 --- a/doc/html/functions_p.html +++ b/doc/html/functions_p.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -215,7 +215,7 @@

- p -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_q.html b/doc/html/functions_q.html index 3676c21a1..adbb53b01 100644 --- a/doc/html/functions_q.html +++ b/doc/html/functions_q.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- q -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html index bad24f01c..3135fb791 100644 --- a/doc/html/functions_r.html +++ b/doc/html/functions_r.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -93,12 +93,12 @@

- r -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html index 3d776bfa1..5cb972361 100644 --- a/doc/html/functions_rela.html +++ b/doc/html/functions_rela.html @@ -21,7 +21,7 @@
Class Members - Related Functions

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html index 72eb8e084..b3a4981e7 100644 --- a/doc/html/functions_s.html +++ b/doc/html/functions_s.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -236,7 +236,7 @@

- s -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html index 1ec106245..563d318c7 100644 --- a/doc/html/functions_t.html +++ b/doc/html/functions_t.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -107,12 +107,12 @@

- t -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html index 93bfba346..f54f11571 100644 --- a/doc/html/functions_type.html +++ b/doc/html/functions_type.html @@ -21,7 +21,7 @@
Class Members - Typedefs

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -281,7 +281,7 @@

- v -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html index 25f2ebd34..5bd170e26 100644 --- a/doc/html/functions_u.html +++ b/doc/html/functions_u.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -134,7 +134,7 @@

- u -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html index 33d3d8fc4..106e716d6 100644 --- a/doc/html/functions_v.html +++ b/doc/html/functions_v.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -115,7 +115,7 @@

- v -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 9744301b6..b7afbc7d0 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@

- a -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_b.html b/doc/html/functions_vars_b.html index f68e5c6bc..825c6186d 100644 --- a/doc/html/functions_vars_b.html +++ b/doc/html/functions_vars_b.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -116,7 +116,7 @@

- b -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_c.html b/doc/html/functions_vars_c.html index 78179649a..69f6fe934 100644 --- a/doc/html/functions_vars_c.html +++ b/doc/html/functions_vars_c.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -161,7 +161,7 @@

- c -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_d.html b/doc/html/functions_vars_d.html index 50932710d..e8bdb744e 100644 --- a/doc/html/functions_vars_d.html +++ b/doc/html/functions_vars_d.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- d -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_e.html b/doc/html/functions_vars_e.html index 28fb717d4..487db3cb1 100644 --- a/doc/html/functions_vars_e.html +++ b/doc/html/functions_vars_e.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -132,7 +132,7 @@

- e -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_f.html b/doc/html/functions_vars_f.html index 34bd5b365..80b2adff6 100644 --- a/doc/html/functions_vars_f.html +++ b/doc/html/functions_vars_f.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -120,7 +120,7 @@

- f -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_g.html b/doc/html/functions_vars_g.html index c750110ef..acd60af26 100644 --- a/doc/html/functions_vars_g.html +++ b/doc/html/functions_vars_g.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -98,7 +98,7 @@

- g -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_h.html b/doc/html/functions_vars_h.html index 3419e6f2f..141b1eaaa 100644 --- a/doc/html/functions_vars_h.html +++ b/doc/html/functions_vars_h.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- h -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_i.html b/doc/html/functions_vars_i.html index be60107d0..f36d8d1fc 100644 --- a/doc/html/functions_vars_i.html +++ b/doc/html/functions_vars_i.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -161,7 +161,7 @@

- i -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_k.html b/doc/html/functions_vars_k.html index 942b67e75..d9c930dd1 100644 --- a/doc/html/functions_vars_k.html +++ b/doc/html/functions_vars_k.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- k -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_l.html b/doc/html/functions_vars_l.html index 7f18a8812..e31f78779 100644 --- a/doc/html/functions_vars_l.html +++ b/doc/html/functions_vars_l.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -135,7 +135,7 @@

- l -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_m.html b/doc/html/functions_vars_m.html index 653d49142..628274b15 100644 --- a/doc/html/functions_vars_m.html +++ b/doc/html/functions_vars_m.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -129,7 +129,7 @@

- m -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_n.html b/doc/html/functions_vars_n.html index bede9b84a..ef3ed14d8 100644 --- a/doc/html/functions_vars_n.html +++ b/doc/html/functions_vars_n.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -122,7 +122,7 @@

- n -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_o.html b/doc/html/functions_vars_o.html index 58e6f3590..560b91aa5 100644 --- a/doc/html/functions_vars_o.html +++ b/doc/html/functions_vars_o.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -114,7 +114,7 @@

- o -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_p.html b/doc/html/functions_vars_p.html index 103f1f71f..bb8dcc284 100644 --- a/doc/html/functions_vars_p.html +++ b/doc/html/functions_vars_p.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@

- p -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_q.html b/doc/html/functions_vars_q.html index 02ea758d7..b73371457 100644 --- a/doc/html/functions_vars_q.html +++ b/doc/html/functions_vars_q.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- q -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_r.html b/doc/html/functions_vars_r.html index 3bf4335f8..8965a564c 100644 --- a/doc/html/functions_vars_r.html +++ b/doc/html/functions_vars_r.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -113,7 +113,7 @@

- r -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_s.html b/doc/html/functions_vars_s.html index 43b2eb3e4..a1b1ec844 100644 --- a/doc/html/functions_vars_s.html +++ b/doc/html/functions_vars_s.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -154,7 +154,7 @@

- s -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_t.html b/doc/html/functions_vars_t.html index a8cae83b4..8223045a0 100644 --- a/doc/html/functions_vars_t.html +++ b/doc/html/functions_vars_t.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -107,7 +107,7 @@

- t -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_u.html b/doc/html/functions_vars_u.html index 3e6165e71..81d55621b 100644 --- a/doc/html/functions_vars_u.html +++ b/doc/html/functions_vars_u.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -122,7 +122,7 @@

- u -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_v.html b/doc/html/functions_vars_v.html index 095190fae..b4f710779 100644 --- a/doc/html/functions_vars_v.html +++ b/doc/html/functions_vars_v.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- v -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_w.html b/doc/html/functions_vars_w.html index a7732e25d..70d86e6dd 100644 --- a/doc/html/functions_vars_w.html +++ b/doc/html/functions_vars_w.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -101,7 +101,7 @@

- w -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_x.html b/doc/html/functions_vars_x.html index c3a7862c0..648372cad 100644 --- a/doc/html/functions_vars_x.html +++ b/doc/html/functions_vars_x.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- x -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_vars_z.html b/doc/html/functions_vars_z.html index 9a8b569e3..3d31648f3 100644 --- a/doc/html/functions_vars_z.html +++ b/doc/html/functions_vars_z.html @@ -21,7 +21,7 @@
Class Members - Variables

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@

- z -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_w.html b/doc/html/functions_w.html index fe49f9e55..8b42fd672 100644 --- a/doc/html/functions_w.html +++ b/doc/html/functions_w.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -198,7 +198,7 @@

- w -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_x.html b/doc/html/functions_x.html index 981173bf7..4bf7093e9 100644 --- a/doc/html/functions_x.html +++ b/doc/html/functions_x.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- x -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_y.html b/doc/html/functions_y.html index 41e2956f4..c2ee4953e 100644 --- a/doc/html/functions_y.html +++ b/doc/html/functions_y.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -115,7 +115,7 @@

- y -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/functions_z.html b/doc/html/functions_z.html index 9c76ee387..de4d8c4c1 100644 --- a/doc/html/functions_z.html +++ b/doc/html/functions_z.html @@ -21,7 +21,7 @@
Class Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -97,7 +97,7 @@

- z -

+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/globals.html b/doc/html/globals.html index 4c7ba53a1..bc255c62d 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -21,7 +21,7 @@
File Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -326,7 +326,7 @@

- y -

+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html index fb3646977..38a9ec034 100644 --- a/doc/html/globals_defs.html +++ b/doc/html/globals_defs.html @@ -21,7 +21,7 @@
File Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -274,7 +274,7 @@

- y -

+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index ddeadb79e..93b69832b 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -21,7 +21,7 @@
File Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -76,7 +76,7 @@
+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html index 41c74b450..22b05caf6 100644 --- a/doc/html/globals_vars.html +++ b/doc/html/globals_vars.html @@ -21,7 +21,7 @@
File Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Mar 7 2019 09:47:34 by Doxygen 1.8.11
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html index f72d53303..939617271 100644 --- a/doc/html/graph_legend.html +++ b/doc/html/graph_legend.html @@ -21,7 +21,7 @@
Graph Legend

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html index 36c267dc7..d5b4b5e73 100644 --- a/doc/html/hierarchy.html +++ b/doc/html/hierarchy.html @@ -21,7 +21,7 @@
Class Hierarchy

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -110,7 +110,7 @@
+Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/index.html b/doc/html/index.html index 9f3ed3c5e..be2994290 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -21,7 +21,7 @@
RE/flex user guide

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -352,9 +352,9 @@

wsize() returns the length of the match in number of wide characters -lines() returns the number of lines in the text match +lines() returns the number of lines in the text match (>=1) -columns() returns the number of columns of the text match +columns() returns the number of columns of the text match (>=1) begin() returns const char* to non-0-terminated text match begin @@ -677,10 +677,10 @@

🔝 Back to table of contents

The rules section

-

Each rule in the rules section consists of a pattern-action pair. For example, the following defines an action for a pattern:

-
{number} out() << "number " << text() << std::endl;

To add action code that spans multiple lines, indent the code or place the code within a { and } code block. When local variables are declared in an action then the code should always be placed in a code block.

-

In free space mode you MUST place actions in { and } blocks and other code in %{ and %} instead of indented.

-

Actions in The rules section can use predefined RE/flex variables and functions. With reflex option −−flex, the variables and functions are the classic Flex actions shown in the second column of this table:

+

Each rule in the rules section consists of a pattern-action pair separated by spacing after the pattern (unless free space mode is used). For example, the following defines an action for a pattern:

+
[0-9]+ out() << "number " << text() << std::endl;

To add action code that spans multiple lines, indent the code or place the code within a { and } code block. When local variables are declared in an action then the code should always be placed in a code block.

+

In free space mode you MUST place actions in { and } blocks and other code in %{ and %} instead of indented, see Free space mode.

+

Actions in the rules section can use predefined RE/flex variables and functions. With reflex option −−flex, the variables and functions are the classic Flex actions shown in the second column of this table:

@@ -699,9 +699,9 @@

- + - + @@ -798,6 +798,11 @@

When using reflex options −−flex, −−bison and −−reentrant, most Flex functions take a yyscan_t scanner as an extra last argument. See Reentrant Bison for details.

From the first couple of entries in the table shown above you may have guessed correctly that text() is just a shorthand for matcher().text(), since matcher() is the matcher object associated with the generated Lexer class. The same shorthands apply to str(), wstr(), size(), wsize(), lineno() and columno(). Use text() for fast access to the matched text. The str() method returns a string copy of the match and is less efficient. Likewise, wstr() returns a wide string copy of the match, converted from UTF-8.

The lineno() method returns the line number of the match, starting at line 1. The columno() method returns the column offset of a match, starting at column 0. This method takes tab spacing and wide characters into account, unless all of the RE/flex source code is compiled with WITH_BYTE_COLUMNO to count bytes instead of wide characters and tabs. A wide character is counted as one, thus not taking into account the character width of full-width and combining Unicode characters. It is recommended to use the wcwidth function or wcwidth.c to determine Unicode character widths.

+

The lines() and columns() methods return the number of lines and columns matched, where lines() and columns() return nonzero and columns() takes tab spacing and wide characters into account. That is, the starting line of a match is lineno() and the ending line number is given by lineno() + lines() - 1. The starting column of a match is columno() and the ending column number is given by columno() + columns() - 1.

+

The matcher().more() method is used to create longer matches from individual matches. When this method is invoked, the next match has the current matched text prepended to it. The matcher().more() operation is often used in lexers and was introduced in Lex.

+

The matcher().less(n) method reduces the size of the matched text to n bytes. This method has no effect if n is larger than size(). The value of n should not be 0. The matcher().less(n) operation is often used in lexers and was introduced in Lex.

+

The matcher().first() and matcher().last() methods return the position in the input stream of the match, counting in bytes from the start of the input at position 0. If the input stream is a wide character sequence, the UTF-8 positions are returned as a result of the internally-converted UTF-8 wide character input.

+

The matcher().rest() method terminates the matcher and returns the rest of the input character sequence as a string.

Because matcher() returns the current matcher object, the following Flex-like actions are also supported:

RE/flex action Flex action Result
wsize() n/a number of wide chars matched
lines() n/a number of lines matched
lines() n/a number of lines matched (>=1)
columns() n/a number of columns matched
columns() n/a number of columns matched (>=1)
lineno() yylineno line number of match (>=1)
@@ -1870,7 +1875,7 @@

Bison-cc & locations

The reflex option −−bison-cc with −−bison-locations expects a Bison 3.0 %skeleton "lalr1.cc" C++ parser that is declared as follows in a Yacc specification:

-
/* yacc grammar (.yxx file) for C++ */
%skeleton "lalr1.cc"
%require "3.0"
%code requires{
namespace yy {
class Lexer; // Generated by reflex with namespace=yy lexer=Lexer
}
}
%locations
%parse-param { yy::Lexer& lexer } // Construct parser object with lexer
%code{
#include "lex.yy.h"
#undef yylex
#define yylex lexer.yylex // Within bison's parse() we should invoke lexer.yylex(), not the global yylex()
}
%union { // yy::parser::semantic_type yylval is a union:
int num; // type of yylval.num is int
char* str; // type of yylval.str is char*
}
%token <num> CONST_NUMBER // This defines yy::parser::token::CONST_NUMBER
%token <str> CONST_STRING // This defines yy::parser::token::CONST_STRING
%%
... // grammar rules
%%
void yy::parser::error(const location_type& loc, const std::string& msg)
{
std::cerr << msg << " at " << loc << std::endl;
}

With the −−bison-cc and −−bison-locations options of reflex, the yylex() function takes yy::parser::semantic_type yylval as the first argument that makes the yylval visible in the lexer rules to assign semantic values to, and takes a second argument yy::location yylloc that is set automatically by the reflex scanner to the line and column if the token matched.

+
/* yacc grammar (.yxx file) for C++ */
%skeleton "lalr1.cc"
%require "3.0"
%code requires{
namespace yy {
class Lexer; // Generated by reflex with namespace=yy lexer=Lexer
}
}
%locations
%parse-param { yy::Lexer& lexer } // Construct parser object with lexer
%code{
#include "lex.yy.h"
#undef yylex
#define yylex lexer.yylex // Within bison's parse() we should invoke lexer.yylex(), not the global yylex()
}
%union { // yy::parser::semantic_type yylval is a union:
int num; // type of yylval.num is int
char* str; // type of yylval.str is char*
}
%token <num> CONST_NUMBER // This defines yy::parser::token::CONST_NUMBER
%token <str> CONST_STRING // This defines yy::parser::token::CONST_STRING
%%
... // grammar rules
%%
void yy::parser::error(const location_type& loc, const std::string& msg)
{
std::cerr << msg << " at " << loc << std::endl;
}

With the −−bison-cc and −−bison-locations options of reflex, the yylex() function takes yy::parser::semantic_type yylval as the first argument that makes the yylval visible in the lexer rules to assign semantic values to. The second argument yy::location yylloc is set automatically by by invoking the lexer's yylloc_update() in yylex() to update the line and column of the match. The virtual yylloc_update() method can be overriden by a user-defined lexer class that extends Lexer (or extends yyFlexLexer when option −−flex is used).

The scanner is generated with reflex options −−bison-cc, −−bison-locations, −−namespace=yy, −−lexer=Lexer and −−lex=yylex. The lexer specification should #include the Bison-generated header file to ensure that the yy::parser::token enums CONST_NUMBER and CONST_STRING are defined.

Using the code above, we can now initialize a Bison parser. We first should create a scanner and pass it to the parser constructor as follows:

yy::Lexer lexer(std::cin); // read from stdin (or a stream, string or FILE)
yy::parser parser(lexer);
if (parser.parse() != 0)
... // error

🔝 Back to table of contents

@@ -1883,13 +1888,13 @@

Bison-locations

The option −−bison-locations expects a Bison parser with the locations feature enabled. This feature provides line and column numbers of the matched text for error reporting. For example:

-
/* yacc grammar (.y file) for C or C++ */
%{
#include "lex.yy.h"
void yyerror(const char*);
%}
%locations
%union { // YYSTYPE yylval is a union:
int num; // type of yylval.num is int
char* str; // type of yylval.str is char*
}
%{
/* reflex option --bison-locations makes yylex() take yylval and yylloc */
extern int yylex(YYSTYPE*, YYLTYPE*);
#define YYLEX_PARAM &yylval, &yylloc
%}
/* add &yylval and &yyloc parameters to yylex() with a trick: use YYLEX_PARAM */
%lex-param { void *YYLEX_PARAM }
%token <num> CONST_NUMBER
%token <str> CONST_STRING
%%
... // grammar rules
%%
void yyerror(const char *msg)
{
fprintf(stderr, "%s at %d,%d to line %d,%d\n",
msg,
yylloc.first_line,
yylloc.first_column,
yylloc.last_line,
yylloc.last_column);
}

The yylval value is passed to the lex function. The yylloc structure is automatically set by the RE/flex scanner, so you do not need to define a YY_USER_ACTION macro as you have to with Flex.

+
/* yacc grammar (.y file) for C or C++ */
%{
#include "lex.yy.h"
void yyerror(const char*);
%}
%locations
%union { // YYSTYPE yylval is a union:
int num; // type of yylval.num is int
char* str; // type of yylval.str is char*
}
%{
/* reflex option --bison-locations makes yylex() take yylval and yylloc */
extern int yylex(YYSTYPE*, YYLTYPE*);
#define YYLEX_PARAM &yylval, &yylloc
%}
/* add &yylval and &yyloc parameters to yylex() with a trick: use YYLEX_PARAM */
%lex-param { void *YYLEX_PARAM }
%token <num> CONST_NUMBER
%token <str> CONST_STRING
%%
... // grammar rules
%%
void yyerror(const char *msg)
{
fprintf(stderr, "%s at %d,%d to line %d,%d\n",
msg,
yylloc.first_line,
yylloc.first_column,
yylloc.last_line,
yylloc.last_column);
}

The yylval value is passed to the lex function. The yylloc structure is automatically updated by the RE/flex scanner, so you do not need to define a YY_USER_ACTION macro as you have to with Flex. Instead, this is done automatically in yylex() by invoking the lexer's yylloc_update() to update the line and column of the match. The virtual yylloc_update() method can be overriden by a user-defined lexer class that extends Lexer (or extends yyFlexLexer when option −−flex is used).

Note that with the −−bison-location option, yylex() takes an additional YYLTYPE argument that a Bison parser provides. You can set YYLTYPE as an option %option YYLTYPE=type in a lexer specification.

🔝 Back to table of contents

Bison-bridge & locations

Here is a final example that combines options −−bison-locations and −−bison-bridge, The Bison parser should be a Bison pure-parser with locations enabled:

-
/* yacc grammar (.y file) for C or C++ */
%{
#include "lex.yy.h"
void yyerror(YYLTYPE*, yyscan_t, const char*);
#define YYPARSE_PARAM scanner
#define YYLEX_PARAM scanner
%}
%locations
%pure-parser
%lex-param { void *scanner }
%parse-param { void *scanner }
%union { // YYSTYPE yylval is a union:
int num; // yylval.num
char* str; // yylval.str
}
%token <num> CONST_NUMBER
%token <str> CONST_STRING
%%
... // grammar rules
%%
void yyerror(YYLTYPE *yylloc, yyscan_t scanner, const char *msg)
{
fprintf(stderr, "%s at %d,%d to line %d,%d\n",
msg,
yylloc.first_line,
yylloc.first_column,
yylloc.last_line,
yylloc.last_column);
}
Note
when Bison %locations with %define api.pure full is used, yyerror has the signature void yyerror(YYLTYPE *locp, char const *msg). This function signature is required to obtain the location information with Bison pure-parsers.
+
/* yacc grammar (.y file) for C or C++ */
%{
#include "lex.yy.h"
void yyerror(YYLTYPE*, yyscan_t, const char*);
#define YYPARSE_PARAM scanner
#define YYLEX_PARAM scanner
%}
%locations
%pure-parser
%lex-param { void *scanner }
%parse-param { void *scanner }
%union { // YYSTYPE yylval is a union:
int num; // yylval.num
char* str; // yylval.str
}
%token <num> CONST_NUMBER
%token <str> CONST_STRING
%%
... // grammar rules
%%
void yyerror(YYLTYPE *yylloc, yyscan_t scanner, const char *msg)
{
fprintf(stderr, "%s at %d,%d to line %d,%d\n",
msg,
yylloc->first_line,
yylloc->first_column,
yylloc->last_line,
yylloc->last_column);
}
Note
when Bison %locations with %define api.pure full is used, yyerror has the signature void yyerror(YYLTYPE *locp, char const *msg). This function signature is required to obtain the location information with Bison pure-parsers.
yylval is not a pointer argument but is always passed by reference and can be used as such in the scanner's rules.
@@ -2342,9 +2347,9 @@

- + - + @@ -2378,11 +2383,11 @@

The text(), str(), and wstr() methods return the matched text. To get the first character of a match, use chr() or wchr(). The chr() and wchr() methods are much more efficient than str()[0] (or text()[0]) and wstr()[0], respectively. Normally, a match cannot be empty unless option "N" is used to explicitly initialize a matcher, see Boost matcher classes and The RE/flex matcher class .

The begin(), operator[0], and operator[n] return non-0-terminated strings. You must use end() with begin() to determine the span of the match. Basically, text() is the 0-terminated version of the string spanned by begin() to end(), where end() points the next character after the match, which means that end() = begin() + size(). Use the size of the capture returned by operator[n] to determine the end of the captured match.

The lineno() method returns the line number of the match, starting at line 1. The columno() method returns the column offset of a match, starting at column 0. The columno() method takes tab spacing and wide characters into account, unless all of the RE/flex source code is compiled with WITH_BYTE_COLUMNO to count bytes.

-

The lines() and columns() methods return the number of lines and columns matched, where columns() takes tab spacing and wide characters into account. That is, the starting line of a match is lineno() and the ending line number is given by lineno() + lines(). Likewise, the starting column of a match is columno() and the ending line number is given by columno() + columns().

+

The lines() and columns() methods return the number of lines and columns matched, where lines() and columns() return nonzero and columns() takes tab spacing and wide characters into account. That is, the starting line of a match is lineno() and the ending line number is given by lineno() + lines() - 1. The starting column of a match is columno() and the ending column number is given by columno() + columns() - 1.

The rest() method terminates the matcher and returns the rest of the input character sequence as a string.

The more() method is used to create longer matches from individual matches. When this method is invoked, the next match has the current matched text prepended to it. The more() operation is often used in lexers and was introduced in Lex.

The less(n) method reduces the size of the matched text to n bytes. This method has no effect if n is larger than size(). The value of n should not be 0. The less(n) operation is often used in lexers and was introduced in Lex.

-

The first() and last() methods return the position in the input stream of the match, counting in bytes from the start of the input at byte 0. If the input stream is a wide character sequence, the UTF-8 positions are returned of the UTF-8-converted wide character input.

+

The first() and last() methods return the position in the input stream of the match, counting in bytes from the start of the input at position 0. If the input stream is a wide character sequence, the UTF-8 positions are returned as a result of the internally-converted UTF-8 wide character input.

All methods take constant time to execute except for str(), wstr(), pair(), wpair(), wsize(), lines(), columns(), lineno(), and columno() that require an extra pass over the matched text.

In addition, the following type casts of matcher objects and iterators can be used for convenience:

    @@ -2720,7 +2725,7 @@

    +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
    diff --git a/doc/html/index_8md.html b/doc/html/index_8md.html index 25b764e2e..a44e77741 100644 --- a/doc/html/index_8md.html +++ b/doc/html/index_8md.html @@ -21,7 +21,7 @@

@@ -52,7 +52,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/inherits.html b/doc/html/inherits.html index b8f95c392..d69e1ef25 100644 --- a/doc/html/inherits.html +++ b/doc/html/inherits.html @@ -21,7 +21,7 @@
@@ -226,7 +226,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/input_8h.html b/doc/html/input_8h.html index 296c61946..b576e7152 100644 --- a/doc/html/input_8h.html +++ b/doc/html/input_8h.html @@ -21,7 +21,7 @@
@@ -112,7 +112,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/matcher_8h.html b/doc/html/matcher_8h.html index f9ea3e37a..af050defa 100644 --- a/doc/html/matcher_8h.html +++ b/doc/html/matcher_8h.html @@ -21,7 +21,7 @@
@@ -104,7 +104,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html index 241617379..fe16ee50d 100644 --- a/doc/html/namespacemembers.html +++ b/doc/html/namespacemembers.html @@ -21,7 +21,7 @@
@@ -131,7 +131,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html index 2b8518a95..8b693f1f1 100644 --- a/doc/html/namespacemembers_func.html +++ b/doc/html/namespacemembers_func.html @@ -21,7 +21,7 @@
@@ -95,7 +95,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html index 76f5df00f..8af5075ac 100644 --- a/doc/html/namespacemembers_type.html +++ b/doc/html/namespacemembers_type.html @@ -21,7 +21,7 @@
@@ -67,7 +67,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html index 212fcc075..be4962e97 100644 --- a/doc/html/namespacemembers_vars.html +++ b/doc/html/namespacemembers_vars.html @@ -21,7 +21,7 @@
@@ -85,7 +85,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex.html b/doc/html/namespacereflex.html index 5dde5ccc1..c9bb8a383 100644 --- a/doc/html/namespacereflex.html +++ b/doc/html/namespacereflex.html @@ -21,7 +21,7 @@
@@ -847,7 +847,7 @@

Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_posix.html b/doc/html/namespacereflex_1_1_posix.html index db2ab8cbf..a0f4ff488 100644 --- a/doc/html/namespacereflex_1_1_posix.html +++ b/doc/html/namespacereflex_1_1_posix.html @@ -21,7 +21,7 @@
@@ -87,7 +87,7 @@

Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1_unicode.html b/doc/html/namespacereflex_1_1_unicode.html index c80b33c82..814631d9b 100644 --- a/doc/html/namespacereflex_1_1_unicode.html +++ b/doc/html/namespacereflex_1_1_unicode.html @@ -21,7 +21,7 @@
@@ -87,7 +87,7 @@

Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/namespacereflex_1_1convert__flag.html b/doc/html/namespacereflex_1_1convert__flag.html index 9f9753f92..a7ff112b8 100644 --- a/doc/html/namespacereflex_1_1convert__flag.html +++ b/doc/html/namespacereflex_1_1convert__flag.html @@ -21,7 +21,7 @@
@@ -216,7 +216,7 @@

Variable Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html index 57b988a1c..ea68b2d1f 100644 --- a/doc/html/namespaces.html +++ b/doc/html/namespaces.html @@ -21,7 +21,7 @@
@@ -60,7 +60,7 @@ +Converted on Thu Mar 7 2019 09:47:33 by Doxygen 1.8.11
diff --git a/doc/html/pattern_8h.html b/doc/html/pattern_8h.html index 043ea9fbd..91831c1eb 100644 --- a/doc/html/pattern_8h.html +++ b/doc/html/pattern_8h.html @@ -21,7 +21,7 @@
@@ -127,7 +127,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/posix_8h.html b/doc/html/posix_8h.html index a0dd7571e..9829d5621 100644 --- a/doc/html/posix_8h.html +++ b/doc/html/posix_8h.html @@ -21,7 +21,7 @@
@@ -104,7 +104,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/ranges_8h.html b/doc/html/ranges_8h.html index 8d890bbaf..e433e94cf 100644 --- a/doc/html/ranges_8h.html +++ b/doc/html/ranges_8h.html @@ -21,7 +21,7 @@
@@ -104,7 +104,7 @@ +Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8cpp.html b/doc/html/reflex_8cpp.html index b9ca0bc74..9cfd6b5ab 100644 --- a/doc/html/reflex_8cpp.html +++ b/doc/html/reflex_8cpp.html @@ -21,7 +21,7 @@
@@ -94,7 +94,7 @@ - +
wsize() returns the length of the match in number of wide characters
lines() returns the number of lines in the text match
lines() returns the number of lines in the text match (>=1)
columns() returns the number of columns of the text match
columns() returns the number of columns of the text match (>=1)
begin() returns const char* to non-0-terminated text match begin
index.md File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Class Hierarchy

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
input.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
matcher.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Namespace Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Namespace Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Namespace Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Namespace Members

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
reflex Namespace Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
reflex::Posix Namespace Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
reflex::Unicode Namespace Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
reflex::convert_flag Namespace Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
Namespace List

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
pattern.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
posix.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
ranges.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
reflex.cpp File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
 
 Add file extension if not present. More...
 
int main (int argc, char **argv)
 Main program instantiates Reflex class and runs Reflex::main(argc, argv). More...
 Main program instantiates Reflex class and runs Reflex::main(argc, argv) More...
 

@@ -190,7 +190,7 @@

Function Documentation

Convert to lower case.

-
Returns
lower case char.
+
Returns
lower case char
@@ -218,7 +218,7 @@

Function Documentation

-

Main program instantiates Reflex class and runs Reflex::main(argc, argv).

+

Main program instantiates Reflex class and runs Reflex::main(argc, argv)

@@ -353,7 +353,7 @@

Variable Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/reflex_8h.html b/doc/html/reflex_8h.html index 296c3b1d9..8747cf51e 100644 --- a/doc/html/reflex_8h.html +++ b/doc/html/reflex_8h.html @@ -21,7 +21,7 @@
reflex.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -117,7 +117,7 @@ Macros #define PLATFORM   "(unknown OS)"   -#define REFLEX_VERSION   "1.1.1" +#define REFLEX_VERSION   "1.1.2"  

Detailed Description

@@ -144,7 +144,7 @@
- +
#define REFLEX_VERSION   "1.1.1"#define REFLEX_VERSION   "1.1.2"
@@ -154,7 +154,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/setop_8h.html b/doc/html/setop_8h.html index 994a3d31c..6a180d746 100644 --- a/doc/html/setop_8h.html +++ b/doc/html/setop_8h.html @@ -21,7 +21,7 @@
setop.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -134,7 +134,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 Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/stdmatcher_8h.html b/doc/html/stdmatcher_8h.html index a1d85675a..f19214f50 100644 --- a/doc/html/stdmatcher_8h.html +++ b/doc/html/stdmatcher_8h.html @@ -21,7 +21,7 @@
stdmatcher.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -102,7 +102,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 f2246f159..dd3d977b2 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 35006deb1..fc19d8702 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -173,7 +173,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 a0b756b22..eaf065f41 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -65,7 +65,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 81e179bdc..490ccec61 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -160,7 +160,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 2b9b71a03..475eb3d1d 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 342b1cf2d..e551cec85 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -154,7 +154,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 5b15b206c..d14f27062 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -70,7 +70,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 bc1ed03ea..72eb6238b 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -325,7 +325,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 4cbf51693..58372e2fb 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -64,7 +64,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 f5a185ca3..ab80b2082 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -156,7 +156,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 bbfd7978c..41d255998 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -68,7 +68,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 ea7bd08c7..2afaba3f1 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -329,7 +329,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 e34bb2ed1..6f037e865 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -80,7 +80,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 572be7fb5..f6ac823ed 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -575,7 +575,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 69181222b..667c46e74 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -67,7 +67,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 2576fc4a8..1c8709d4e 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -173,7 +173,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 a42463111..6703f7cd9 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 7f943c11d..3ebf38522 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -320,7 +320,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 3c861bfd5..40733ae61 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -87,7 +87,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 7d2668401..52eb02058 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -744,7 +744,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_state-members.html b/doc/html/structreflex_1_1_pattern_1_1_state-members.html index 827d0ab2a..75c6d51f3 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_state-members.html +++ b/doc/html/structreflex_1_1_pattern_1_1_state-members.html @@ -21,7 +21,7 @@
Member List

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -71,7 +71,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1_pattern_1_1_state.html b/doc/html/structreflex_1_1_pattern_1_1_state.html index 0a5d4ebf6..7873458bf 100644 --- a/doc/html/structreflex_1_1_pattern_1_1_state.html +++ b/doc/html/structreflex_1_1_pattern_1_1_state.html @@ -21,7 +21,7 @@
reflex::Pattern::State Struct Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -289,7 +289,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 202c77d50..9796cf147 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 d35283c34..d46bc0278 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -106,7 +106,7 @@

Member Function Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 fce2bc9fc..e2b898489 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 f6d529b8d..a31c2eee2 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -141,7 +141,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 1b5d1afed..4a192d9e9 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -63,7 +63,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 ed4c6892c..a01286281 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -126,7 +126,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 13d552d23..9a379f20c 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__intersection.html b/doc/html/structreflex_1_1lazy__intersection.html index ab396ece6..10bdbb5d4 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -238,7 +238,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 0e99010e4..19d57622a 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -74,7 +74,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 3e846a370..ded090b6e 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -434,7 +434,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 99385ebcb..4a4e9a9d9 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -66,7 +66,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1lazy__union.html b/doc/html/structreflex_1_1lazy__union.html index 829520ffb..55d86a2a2 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -238,7 +238,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 452846322..b1aaff7ca 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -75,7 +75,7 @@
+Converted on Thu Mar 7 2019 09:47:26 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 2414f36cf..e4d934936 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -450,7 +450,7 @@

Member Data Documentation

+Converted on Thu Mar 7 2019 09:47:26 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 a664a2079..091697292 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -61,7 +61,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/structreflex_1_1range__compare.html b/doc/html/structreflex_1_1range__compare.html index 12f1079a6..d2fbf62a3 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 Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -127,7 +127,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/timer_8h.html b/doc/html/timer_8h.html index ee02a4ae0..3b3fd171c 100644 --- a/doc/html/timer_8h.html +++ b/doc/html/timer_8h.html @@ -21,7 +21,7 @@
timer.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -95,7 +95,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/traits_8h.html b/doc/html/traits_8h.html index 119b7a914..15a59d3e8 100644 --- a/doc/html/traits_8h.html +++ b/doc/html/traits_8h.html @@ -21,7 +21,7 @@
traits.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -94,7 +94,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/unicode_8h.html b/doc/html/unicode_8h.html index aea5a773a..02ad61833 100644 --- a/doc/html/unicode_8h.html +++ b/doc/html/unicode_8h.html @@ -21,7 +21,7 @@
unicode.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -96,7 +96,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/html/utf8_8h.html b/doc/html/utf8_8h.html index e6077bbbc..4abf3a76e 100644 --- a/doc/html/utf8_8h.html +++ b/doc/html/utf8_8h.html @@ -21,7 +21,7 @@
utf8.h File Reference

-
updated Wed Mar 6 2019 by Robert van Engelen
+
updated Thu Mar 7 2019 by Robert van Engelen
  @@ -149,7 +149,7 @@
+Converted on Thu Mar 7 2019 09:47:26 by Doxygen 1.8.11
diff --git a/doc/index.md b/doc/index.md index 615a24b49..c96bd8e91 100644 --- a/doc/index.md +++ b/doc/index.md @@ -623,8 +623,8 @@ You can use this method and other methods to obtain the details of a match: `wpair()` | returns `std::pair(accept(),wstr())` `size()` | returns the length of the text match in bytes `wsize()` | returns the length of the match in number of wide characters - `lines()` | returns the number of lines in the text match - `columns()` | returns the number of columns of the text match + `lines()` | returns the number of lines in the text match (>=1) + `columns()` | returns the number of columns of the text match (>=1) `begin()` | returns `const char*` to non-0-terminated text match begin `end()` | returns `const char*` to non-0-terminated text match end `rest()` | returns `const char*` to 0-terminated rest of input @@ -1732,12 +1732,13 @@ See \ref reflex-states for more information about states. ### The rules section {#reflex-spec-rules} -Each rule in the rules section consists of a pattern-action pair. For example, -the following defines an action for a pattern: +Each rule in the rules section consists of a pattern-action pair separated by +spacing after the pattern (unless free space mode is used). For example, the +following defines an action for a pattern:
~~~{.cpp} - {number} out() << "number " << text() << std::endl; + [0-9]+ out() << "number " << text() << std::endl; ~~~
@@ -1746,9 +1747,10 @@ within a `{` and `}` code block. When local variables are declared in an action then the code should always be placed in a code block. In free space mode you MUST place actions in `{` and `}` blocks -and other code in `%{` and `%}` instead of indented. +and other code in `%{` and `%}` instead of indented, see \ref +reflex-pattern-freespace. -Actions in \ref reflex-spec-rules can use predefined RE/flex variables and +Actions in the rules section can use predefined RE/flex variables and functions. With `reflex` option `−−flex`, the variables and functions are the classic Flex actions shown in the second column of this table: @@ -1761,8 +1763,8 @@ are the classic Flex actions shown in the second column of this table: `wchr()` | *n/a* | first wide char of text match `size()` | `YYLeng()`, `yyleng` | size of the match in bytes `wsize()` | *n/a* | number of wide chars matched - `lines()` | *n/a* | number of lines matched - `columns()` | *n/a* | number of columns matched + `lines()` | *n/a* | number of lines matched (>=1) + `columns()` | *n/a* | number of columns matched (>=1) `lineno()` | `yylineno` | line number of match (>=1) `columno()` | *n/a* | column number of match (>=0) `echo()` | `ECHO` | `out().write(text(), size())` @@ -1880,6 +1882,32 @@ combining Unicode characters. It is recommended to use the `wcwidth` function or [wcwidth.c](https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) to determine Unicode character widths. +The `lines()` and `columns()` methods return the number of lines and columns +matched, where `lines()` and `columns()` return nonzero and `columns()` takes +tab spacing and wide characters into account. That is, the starting line of a +match is `lineno()` and the ending line number is given by +`lineno() + lines() - 1`. The starting column of a match is `columno()` and +the ending column number is given by `columno() + columns() - 1`. + +The `matcher().more()` method is used to create longer matches from individual +matches. When this method is invoked, the next match has the current matched +text prepended to it. The `matcher().more()` operation is often used in lexers +and was introduced in Lex. + +The `matcher().less(n)` method reduces the size of the matched text to `n` +bytes. This method has no effect if `n` is larger than `size()`. The value of +`n` should not be `0`. The `matcher().less(n)` operation is often used in +lexers and was introduced in Lex. + +The `matcher().first()` and `matcher().last()` methods return the position in +the input stream of the match, counting in bytes from the start of the input at +position 0. If the input stream is a wide character sequence, the UTF-8 +positions are returned as a result of the internally-converted UTF-8 wide +character input. + +The `matcher().rest()` method terminates the matcher and returns the rest of +the input character sequence as a string. + Because `matcher()` returns the current matcher object, the following Flex-like actions are also supported: @@ -3835,9 +3863,11 @@ in a Yacc specification: With the `−−bison-cc` and `−−bison-locations` options of `reflex`, the `yylex()` function takes `yy::parser::semantic_type yylval` as the first argument that makes the `yylval` visible in the lexer rules to assign semantic -values to, and takes a second argument `yy::location yylloc` that is set -automatically by the `reflex` scanner to the line and column if the -token matched. +values to. The second argument `yy::location yylloc` is set automatically by +by invoking the lexer's `yylloc_update()` in `yylex()` to update the line and +column of the match. The virtual `yylloc_update()` method can be overriden by +a user-defined lexer class that extends `Lexer` (or extends `yyFlexLexer` when +option `−−flex` is used). The scanner is generated with `reflex` options `−−bison-cc`, `−−bison-locations`, `−−namespace=yy`, `−−lexer=Lexer` and `−−lex=yylex`. The @@ -3958,8 +3988,12 @@ text for error reporting. For example:
The `yylval` value is passed to the lex function. The `yylloc` structure is -automatically set by the RE/flex scanner, so you do not need to define a -`YY_USER_ACTION` macro as you have to with Flex. +automatically updated by the RE/flex scanner, so you do not need to define a +`YY_USER_ACTION` macro as you have to with Flex. Instead, this is done +automatically in `yylex()` by invoking the lexer's `yylloc_update()` to update +the line and column of the match. The virtual `yylloc_update()` method can be +overriden by a user-defined lexer class that extends `Lexer` (or extends +`yyFlexLexer` when option `−−flex` is used). Note that with the `−−bison-location` option, `yylex()` takes an additional `YYLTYPE` argument that a Bison parser provides. You can set `YYLTYPE` as @@ -4006,10 +4040,10 @@ locations enabled: { fprintf(stderr, "%s at %d,%d to line %d,%d\n", msg, - yylloc.first_line, - yylloc.first_column, - yylloc.last_line, - yylloc.last_column); + yylloc->first_line, + yylloc->first_column, + yylloc->last_line, + yylloc->last_column); } ~~~ @@ -5311,8 +5345,8 @@ To obtain properties of a match, use the following methods: `wpair()` | returns `std::pair(accept(),wstr())` `size()` | returns the length of the text match in bytes `wsize()` | returns the length of the match in number of wide characters - `lines()` | returns the number of lines in the text match - `columns()` | returns the number of columns of the text match + `lines()` | returns the number of lines in the text match (>=1) + `columns()` | returns the number of columns of the text match (>=1) `begin()` | returns `const char*` to non-0-terminated text match begin `end()` | returns `const char*` to non-0-terminated text match end `rest()` | returns `const char*` to 0-terminated rest of input @@ -5354,10 +5388,11 @@ account, unless all of the RE/flex source code is compiled with `WITH_BYTE_COLUMNO` to count bytes. The `lines()` and `columns()` methods return the number of lines and columns -matched, where `columns()` takes tab spacing and wide characters into account. -That is, the starting line of a match is `lineno()` and the ending line number -is given by `lineno() + lines()`. Likewise, the starting column of a match -is `columno()` and the ending line number is given by `columno() + columns()`. +matched, where `lines()` and `columns()` return nonzero and `columns()` takes +tab spacing and wide characters into account. That is, the starting line of a +match is `lineno()` and the ending line number is given by +`lineno() + lines() - 1`. The starting column of a match is `columno()` and +the ending column number is given by `columno() + columns() - 1`. The `rest()` method terminates the matcher and returns the rest of the input character sequence as a string. @@ -5373,9 +5408,9 @@ should not be `0`. The `less(n)` operation is often used in lexers and was introduced in Lex. The `first()` and `last()` methods return the position in the input stream -of the match, counting in bytes from the start of the input at byte 0. +of the match, counting in bytes from the start of the input at position 0. If the input stream is a wide character sequence, the UTF-8 positions are -returned of the UTF-8-converted wide character input. +returned as a result of the internally-converted UTF-8 wide character input. All methods take constant time to execute except for `str()`, `wstr()`, `pair()`, `wpair()`, `wsize()`, `lines()`, `columns()`, `lineno()`, and diff --git a/doc/man/reflex.1 b/doc/man/reflex.1 index 60fe656ae..3df281c51 100644 --- a/doc/man/reflex.1 +++ b/doc/man/reflex.1 @@ -1,4 +1,4 @@ -.TH REFLEX "1" "March 06, 2019" "reflex 1.1.1" "User Commands" +.TH REFLEX "1" "March 07, 2019" "reflex 1.1.2" "User Commands" .SH NAME reflex \- the regex\-centric fast and flexible lexical analyzer generator .SH SYNOPSIS diff --git a/include/reflex/absmatcher.h b/include/reflex/absmatcher.h index b8feff4be..f32fcc134 100644 --- a/include/reflex/absmatcher.h +++ b/include/reflex/absmatcher.h @@ -453,7 +453,7 @@ class AbstractMatcher { size_t lines() const /// @returns number of lines. { - size_t n = 0; + size_t n = 1; for (const char *s = txt_; s < txt_ + len_; ++s) n += (*s == '\n'); return n; diff --git a/src/reflex.cpp b/src/reflex.cpp index 6c9f6c945..4a4b4a536 100644 --- a/src/reflex.cpp +++ b/src/reflex.cpp @@ -236,14 +236,14 @@ static const char *newline = "\n"; // // //////////////////////////////////////////////////////////////////////////////// -/// Convert to lower case. +/// Convert to lower case inline int lower(int c) - /// @returns lower case char. + /// @returns lower case char { return std::isalpha(c) ? (c | 0x20) : c; } -/// Add file extension if not present. +/// Add file extension if not present static std::string file_ext(std::string& name, const char *ext) /// @returns copy of file `name` string with extension `ext` { @@ -260,7 +260,7 @@ static std::string file_ext(std::string& name, const char *ext) // // //////////////////////////////////////////////////////////////////////////////// -/// Main program instantiates Reflex class and runs `Reflex::main(argc, argv)`. +/// Main program instantiates Reflex class and runs `Reflex::main(argc, argv)` int main(int argc, char **argv) { Reflex().main(argc, argv); @@ -273,7 +273,7 @@ int main(int argc, char **argv) // // //////////////////////////////////////////////////////////////////////////////// -/// Main program. +/// Main program void Reflex::main(int argc, char **argv) { init(argc, argv); @@ -287,7 +287,7 @@ void Reflex::main(int argc, char **argv) // // //////////////////////////////////////////////////////////////////////////////// -/// Reflex initialization. +/// Reflex initialization void Reflex::init(int argc, char **argv) { #ifdef OS_WIN @@ -461,14 +461,14 @@ void Reflex::init(int argc, char **argv) set_library(); } -/// Display version information and exit. +/// Display version information and exit void Reflex::version() { std::cout << "reflex " REFLEX_VERSION " " PLATFORM << std::endl; exit(EXIT_SUCCESS); } -/// Display help information with an optional diagnostic message and exit. +/// Display help information with an optional diagnostic message and exit void Reflex::help(const char *message, const char *arg) { if (message) @@ -598,7 +598,7 @@ void Reflex::help(const char *message, const char *arg) exit(message ? EXIT_FAILURE : EXIT_SUCCESS); } -/// Set/reset regex library matcher. +/// Set/reset regex library matcher void Reflex::set_library() { if (!definitions.empty()) @@ -638,7 +638,7 @@ void Reflex::set_library() } } -/// Parse lex specification input. +/// Parse lex specification input void Reflex::parse() { std::ifstream ifs; @@ -656,7 +656,7 @@ void Reflex::parse() ifs.close(); } -/// Parse the specified %%include file. +/// Parse the specified %%include file void Reflex::include(const std::string& filename) { std::ifstream ifs; @@ -677,7 +677,7 @@ void Reflex::include(const std::string& filename) lineno = save_lineno; } -/// Fetch next line from the input, return true if ok. +/// Fetch next line from the input, return true if ok bool Reflex::get_line() { if (in.eof()) @@ -701,7 +701,7 @@ bool Reflex::get_line() return true; } -/// Advance pos over white space and comments, return true if ok. +/// Advance pos over white space and comments, return true if ok bool Reflex::skip_comment(size_t& pos) { while (true) @@ -740,7 +740,7 @@ bool Reflex::skip_comment(size_t& pos) } } -/// Advance pos to match case-insensitive string s followed by whitespace, return true if OK. +/// Advance pos to match case-insensitive string s followed by whitespace, return true if OK bool Reflex::as(size_t& pos, const char *s) { if (pos >= linelen || lower(line.at(pos)) != *s++) @@ -751,7 +751,7 @@ bool Reflex::as(size_t& pos, const char *s) return ws(pos); } -/// Advance pos over whitespace, returns true if OK. +/// Advance pos over whitespace, returns true if OK bool Reflex::ws(size_t& pos) { if (pos >= linelen || (pos > 0 && !std::isspace(line.at(pos)))) @@ -761,7 +761,7 @@ bool Reflex::ws(size_t& pos) return true; } -/// Advance pos over '=' and whitespace, return true if OK. +/// Advance pos over '=' and whitespace, return true if OK bool Reflex::eq(size_t& pos) { (void)ws(pos); @@ -772,7 +772,7 @@ bool Reflex::eq(size_t& pos) return true; } -/// Advance pos to end of line while skipping whitespace, return true if end of line. +/// Advance pos to end of line while skipping whitespace, return true if end of line bool Reflex::nl(size_t& pos) { while (pos < linelen && std::isspace(line.at(pos))) @@ -780,34 +780,34 @@ bool Reflex::nl(size_t& pos) return pos >= linelen; } -/// Check if current line starts a block of code or a comment. +/// Check if current line starts a block of code or a comment bool Reflex::is_code() { return linelen > 0 && ((std::isspace(line.at(0)) && options["freespace"].empty()) || line == "%{" || !line.compare(0, 2, "//") || !line.compare(0, 2, "/*")); } -/// Check if current line starts a block of %top code. +/// Check if current line starts a block of %top code bool Reflex::is_topcode() { size_t pos = 0; return line == "%top{" || (as(pos, "%top") && pos < linelen && line.at(pos) == '{'); } -/// Check if current line starts a block of %class code. +/// Check if current line starts a block of %class code bool Reflex::is_classcode() { size_t pos = 0; return line == "%class{" || (as(pos, "%class") && pos < linelen && line.at(pos) == '{'); } -/// Check if current line starts a block of %init code. +/// Check if current line starts a block of %init code bool Reflex::is_initcode() { size_t pos = 0; return line == "%init{" || (as(pos, "%init") && pos < linelen && line.at(pos) == '{'); } -/// Advance pos over name (letters, digits, hyphen/underscore, or any non-ASCII character), return name. +/// Advance pos over name (letters, digits, hyphen/underscore, or any non-ASCII character), return name std::string Reflex::get_name(size_t& pos) { if (pos >= linelen || (!std::isalnum(line.at(pos)) && (line.at(pos) & 0x80) != 0x80)) @@ -824,7 +824,7 @@ std::string Reflex::get_name(size_t& pos) return line.substr(loc, pos - loc); } -/// Advance pos over namespaces (letters, digits, ::, ., -, _ , or any non-ASCII character), return name. +/// Advance pos over namespaces (letters, digits, ::, ., -, _ , or any non-ASCII character), return name std::string Reflex::get_namespace(size_t& pos) { if (pos >= linelen || (!std::isalnum(line.at(pos)) && (line.at(pos) & 0x80) != 0x80)) @@ -843,7 +843,7 @@ std::string Reflex::get_namespace(size_t& pos) return line.substr(loc, pos - loc); } -/// Advance pos over option name (letters, digits, +/hyphen/underscore), return name. +/// Advance pos over option name (letters, digits, +/hyphen/underscore), return name std::string Reflex::get_option(size_t& pos) { if (pos >= linelen || !std::isalnum(line.at(pos))) @@ -860,7 +860,7 @@ std::string Reflex::get_option(size_t& pos) return line.substr(loc, pos - loc); } -/// Advance pos over start condition name (an ASCII C++ identifier or C++11 Unicode identifier), return name. +/// Advance pos over start condition name (an ASCII C++ identifier or C++11 Unicode identifier), return name std::string Reflex::get_start(size_t& pos) { if (pos >= linelen || (!std::isalpha(line.at(pos)) && line.at(pos) != '_' && (line.at(pos) & 0x80) != 0x80)) @@ -877,7 +877,7 @@ std::string Reflex::get_start(size_t& pos) return line.substr(loc, pos - loc); } -/// Advance pos over quoted string, return string. +/// Advance pos over quoted string, return string std::string Reflex::get_string(size_t& pos) { if (pos >= linelen || line.at(pos) != '"') @@ -891,7 +891,7 @@ std::string Reflex::get_string(size_t& pos) return line.substr(loc, pos - loc - 1); } -/// Get regex string, converted to a format understood by the selected regex engine library. +/// Get regex string, converted to a format understood by the selected regex engine library std::string Reflex::get_regex(size_t& pos) { std::string regex; @@ -1132,7 +1132,20 @@ std::string Reflex::get_code(size_t& pos) return code; } -/// Abort with an error message. +/// Returns string with all \ replaced by \\ to stringify file paths +std::string Reflex::escape_bs(const std::string& s) +{ + std::string t = s; + size_t i = 0; + while ((i = t.find('\\', i)) != std::string::npos) + { + t.replace(i, 1, "\\\\"); + i += 2; + } + return t; +} + +/// Abort with an error message void Reflex::abort(const char *message, const char *arg) { std::cerr << @@ -1144,7 +1157,7 @@ void Reflex::abort(const char *message, const char *arg) exit(EXIT_FAILURE); } -/// Report an error and exit. +/// Report an error and exit void Reflex::error(const char *message, const char *arg, size_t at_lineno) { std::cerr << @@ -1156,7 +1169,7 @@ void Reflex::error(const char *message, const char *arg, size_t at_lineno) exit(EXIT_FAILURE); } -/// Report a warning. +/// Report a warning void Reflex::warning(const char *message, const char *arg, size_t at_lineno) { if (options["nowarn"].empty()) @@ -1168,7 +1181,7 @@ void Reflex::warning(const char *message, const char *arg, size_t at_lineno) std::endl; } -/// Parse section 1 of a lex specification. +/// Parse section 1 of a lex specification void Reflex::parse_section_1() { if (!get_line()) @@ -1341,7 +1354,7 @@ void Reflex::parse_section_1() } } -/// Parse section 2 of a lex specification. +/// Parse section 2 of a lex specification void Reflex::parse_section_2() { if (in.eof()) @@ -1462,7 +1475,7 @@ void Reflex::parse_section_2() } } -/// Parse section 3 of a lex specification. +/// Parse section 3 of a lex specification void Reflex::parse_section_3() { if (in.eof()) @@ -1471,7 +1484,7 @@ void Reflex::parse_section_3() section_3.push_back(Code(line, infile, lineno)); } -/// Write lex.yy.cpp. +/// Write lex.yy.cpp void Reflex::write() { if (!options["yyclass"].empty()) @@ -1688,7 +1701,7 @@ void Reflex::write() } } -/// Write a banner in lex.yy.cpp. +/// Write a banner in lex.yy.cpp void Reflex::write_banner(const char *title) { size_t i; @@ -1710,7 +1723,7 @@ void Reflex::write_banner(const char *title) *out << std::endl << std::endl; } -/// Write the prelude to lex.yy.cpp. +/// Write the prelude to lex.yy.cpp void Reflex::write_prelude() { if (!out->good()) @@ -1723,7 +1736,11 @@ void Reflex::write_prelude() *out << "#define " << (options["prefix"] == "yy" ? "" : options["prefix"].c_str()) << "REFLEX_OPTION_"; out->width(20); *out << std::left << option->first; - *out << option->second << std::endl; + // if option name ends in 'file' then #define the option's value as a string file name + if (option->first.size() > 4 && option->first.compare(option->first.size() - 4, 4, "file") == 0) + *out << "\"" << escape_bs(option->second) << "\"" << std::endl; + else + *out << option->second << std::endl; } } if (!options["debug"].empty()) @@ -1732,7 +1749,7 @@ void Reflex::write_prelude() *out << "\n// --perf-report option requires a timer:\n#include " << std::endl; } -/// Write Flex-compatible #defines to lex.yy.cpp. +/// Write Flex-compatible #defines to lex.yy.cpp void Reflex::write_defines() { if (!out->good()) @@ -1749,7 +1766,7 @@ void Reflex::write_defines() } } -/// Write the lexer class to lex.yy.cpp. +/// Write the lexer class to lex.yy.cpp void Reflex::write_class() { if (!out->good()) @@ -1818,8 +1835,8 @@ void Reflex::write_class() " {\n" " yylloc.begin.line = matcher().lineno();\n" " yylloc.begin.column = matcher().columno();\n" - " yylloc.end.line = yylloc.begin.line + matcher().lines();\n" - " yylloc.end.column = yylloc.begin.column + matcher().columns();\n" + " yylloc.end.line = yylloc.begin.line + matcher().lines() - 1;\n" + " yylloc.end.column = yylloc.begin.column + matcher().columns() - 1;\n" " }\n" " virtual int yylex(void)\n" " {\n" @@ -1851,8 +1868,8 @@ void Reflex::write_class() " {\n" " yylloc.first_line = matcher().lineno();\n" " yylloc.first_column = matcher().columno();\n" - " yylloc.last_line = yylloc.first_line + matcher().lines();\n" - " yylloc.last_column = yylloc.first_column + matcher().columns();\n" + " yylloc.last_line = yylloc.first_line + matcher().lines() - 1;\n" + " yylloc.last_column = yylloc.first_column + matcher().columns() - 1;\n" " }\n" " virtual int yylex(void)\n" " {\n" @@ -1916,8 +1933,8 @@ void Reflex::write_class() " {\n" " yylloc.begin.line = matcher().lineno();\n" " yylloc.begin.column = matcher().columno();\n" - " yylloc.end.line = yylloc.begin.line + matcher().lines();\n" - " yylloc.end.column = yylloc.begin.column + matcher().columns();\n" + " yylloc.end.line = yylloc.begin.line + matcher().lines() - 1;\n" + " yylloc.end.column = yylloc.begin.column + matcher().columns() - 1;\n" " }\n" " virtual int " << lex << "(" << yystype << " *lvalp, " << yyltype << " *llocp)\n" " {\n" @@ -1939,8 +1956,8 @@ void Reflex::write_class() " {\n" " yylloc.first_line = matcher().lineno();\n" " yylloc.first_column = matcher().columno();\n" - " yylloc.last_line = yylloc.first_line + matcher().lines();\n" - " yylloc.last_column = yylloc.first_column + matcher().columns();\n" + " yylloc.last_line = yylloc.first_line + matcher().lines() - 1;\n" + " yylloc.last_column = yylloc.first_column + matcher().columns() - 1;\n" " }\n" " virtual int " << lex << "(" << yystype << "& yylval, " << yyltype << "& yylloc)"; } @@ -1980,7 +1997,7 @@ void Reflex::write_class() } } -/// Write %%top{ %} code to lex.yy.cpp. +/// Write %%top{ %} code to lex.yy.cpp void Reflex::write_section_top() { if (!section_top.empty()) @@ -1990,14 +2007,14 @@ void Reflex::write_section_top() } } -/// Write %%class{ %} code to lex.yy.cpp. +/// Write %%class{ %} code to lex.yy.cpp void Reflex::write_section_class() { if (!section_class.empty()) write_code(section_class); } -/// Write %%init{ %} code to lex.yy.cpp. +/// Write %%init{ %} code to lex.yy.cpp void Reflex::write_section_init() { *out << " {\n"; @@ -2010,7 +2027,7 @@ void Reflex::write_section_init() *out << " }" << std::endl; } -/// Write perf_report code to lex.yy.cpp. +/// Write perf_report code to lex.yy.cpp void Reflex::write_perf_report() { if (!options["perf_report"].empty()) @@ -2020,7 +2037,7 @@ void Reflex::write_perf_report() " {\n" " if (perf_report_time_pointer != NULL)\n" " *perf_report_time_pointer += reflex::timer_elapsed(perf_report_timer);\n" - " std::cerr << \"reflex " REFLEX_VERSION " " << infile << " performance report:\\n\";\n"; + " std::cerr << \"reflex " REFLEX_VERSION " " << escape_bs(infile) << " performance report:\\n\";\n"; for (Start start = 0; start < conditions.size(); ++start) { *out << @@ -2091,7 +2108,7 @@ void Reflex::write_perf_report() } } -/// Write section 1 user-defined code to lex.yy.cpp. +/// Write section 1 user-defined code to lex.yy.cpp void Reflex::write_section_1() { if (!section_1.empty()) @@ -2101,7 +2118,7 @@ void Reflex::write_section_1() } } -/// Write section 3 user-defined code to lex.yy.cpp. +/// Write section 3 user-defined code to lex.yy.cpp void Reflex::write_section_3() { if (!section_3.empty()) @@ -2111,7 +2128,7 @@ void Reflex::write_section_3() } } -/// Write lines of code to lex.yy.cpp annotated with #line source info. +/// Write lines of code to lex.yy.cpp annotated with #line source info void Reflex::write_code(const Codes& codes) { if (!out->good()) @@ -2123,7 +2140,7 @@ void Reflex::write_code(const Codes& codes) { *out << "#line " << code->lineno; if (!code->file.empty()) - *out << " \"" << code->file << "\""; + *out << " \"" << escape_bs(code->file) << "\""; *out << std::endl; } *out << code->line << std::endl; @@ -2131,21 +2148,21 @@ void Reflex::write_code(const Codes& codes) } } -/// Write a line(s) of code to lex.yy.cpp annotated with #line source info. +/// Write a line(s) of code to lex.yy.cpp annotated with #line source info void Reflex::write_code(const Code& code) { if (options["noline"].empty()) { *out << "#line " << code.lineno; if (!infile.empty()) - *out << " \"" << infile << "\""; + *out << " \"" << escape_bs(infile) << "\""; *out << std::endl; } if (!code.line.empty()) *out << code.line << std::endl; } -/// Write lexer code and lex() method code. +/// Write lexer code and lex() method code void Reflex::write_lexer() { if (!out->good()) @@ -2571,7 +2588,7 @@ void Reflex::write_lexer() "}" << std::endl; } -/// Write main() to lex.yy.cpp. +/// Write main() to lex.yy.cpp void Reflex::write_main() { if (!out->good()) @@ -2658,7 +2675,7 @@ void Reflex::undot_namespace(std::string& s) } } -/// Display usage report. +/// Display usage report void Reflex::stats() { if (!options["verbose"].empty()) @@ -2705,7 +2722,7 @@ void Reflex::stats() else if (!options["tables_file"].empty()) option.append(";f=").append(start > 0 ? "+" : "").append(file_ext(options["tables_file"], "cpp")); if ((!options["full"].empty() || !options["fast"].empty()) && options["tables_file"].empty() && options["stdout"].empty()) - option.append(";f=+").append(options["outfile"]); + option.append(";f=+").append(escape_bs(options["outfile"])); try { reflex::Pattern pattern(patterns[start], option); diff --git a/src/reflex.h b/src/reflex.h index 93756da1d..f2658adc4 100644 --- a/src/reflex.h +++ b/src/reflex.h @@ -65,7 +65,7 @@ #endif // DO NOT ALTER THIS LINE: the makemake.sh script updates the version -#define REFLEX_VERSION "1.1.1" +#define REFLEX_VERSION "1.1.2" /// RE/flex scanner generator class, a variation of the classic "lex" tool to generate scanners. /** @@ -179,6 +179,7 @@ class Reflex std::string get_namespace(size_t& pos); Starts get_starts(size_t& pos); std::string get_code(size_t& pos); + std::string escape_bs(const std::string& s); void abort(const char *message, const char *arg = NULL); void error(const char *message, const char *arg = NULL, size_t at_lineno = 0); void warning(const char *message, const char *arg = NULL, size_t at_lineno = 0);