From 741a630e99b194da09d843e2b1d52b03ec3a6af9 Mon Sep 17 00:00:00 2001 From: Timo Heister Date: Sat, 14 May 2016 15:53:21 +0100 Subject: [PATCH] Rework Pattern::Double - Fix broken parsing of Pattern::Double::description() in ::create()(skipping " range " that shouldn't exist and parsing an empty range incorrectly). - Display default values as -MAX_DOUBLE...MAX_DOUBLE instead of -1.79769e+308...1.79769e+308 in the description. - Add some new tests. - Update output of tests to match new description. remove c++11'ism use std::memcmp --- include/deal.II/base/parameter_handler.h | 22 ++--- source/base/parameter_handler.cc | 73 +++++++++------- tests/bits/parameter_handler_4.output | 2 +- tests/bits/parameter_handler_4a.output | 4 +- .../parameter_handler_4a_with_alias.output | 4 +- ...er_handler_4a_with_alias_deprecated.output | 4 +- tests/bits/parameter_handler_7.output | 2 +- tests/bits/parameter_handler_double_01.cc | 41 +++++++++ tests/bits/parameter_handler_double_01.output | 87 +++++++++++++++++++ tests/bits/parameter_handler_double_02.cc | 55 ++++++++++++ tests/bits/parameter_handler_double_02.output | 9 ++ tests/bits/parameter_handler_read_xml.output | 2 +- .../bits/parameter_handler_write_json.output | 6 +- ...parameter_handler_write_section_xml.output | 2 +- tests/bits/parameter_handler_write_xml.output | 2 +- tests/serialization/parameter_handler.output | 4 +- 16 files changed, 262 insertions(+), 57 deletions(-) create mode 100644 tests/bits/parameter_handler_double_01.cc create mode 100644 tests/bits/parameter_handler_double_01.output create mode 100644 tests/bits/parameter_handler_double_02.cc create mode 100644 tests/bits/parameter_handler_double_02.output diff --git a/include/deal.II/base/parameter_handler.h b/include/deal.II/base/parameter_handler.h index aff602e6fd..dc5825ccf0 100644 --- a/include/deal.II/base/parameter_handler.h +++ b/include/deal.II/base/parameter_handler.h @@ -221,16 +221,14 @@ namespace Patterns { public: /** - * Minimal double value. If the std::numeric_limits class is - * available use this information to obtain the extremal values, otherwise - * set it so that this class understands that all values are allowed. + * Minimal double value used as default value, taken from + * std::numeric_limits. */ static const double min_double_value; /** - * Maximal double value. If the numeric_limits class is available use this - * information to obtain the extremal values, otherwise set it so that - * this class understands that all values are allowed. + * Maximal double value used as default value, taken from + * std::numeric_limits. */ static const double max_double_value; @@ -264,9 +262,11 @@ namespace Patterns virtual PatternBase *clone () const; /** - * Creates new object if the start of description matches - * description_init. Ownership of that object is transferred to the - * caller of this function. + * Creates a new object on the heap using @p new if the given + * @p description is a valid format (for example created by calling + * description() on an existing object), or NULL otherwise. Ownership of + * the returned object is transferred to the caller of this function, + * which should be freed using @p delete. */ static Double *create (const std::string &description); @@ -275,7 +275,7 @@ namespace Patterns * Value of the lower bound. A number that satisfies the * @ref match * operation of this class must be equal to this value or larger, if the - * bounds of the interval for a valid range. + * bounds of the interval form a valid range. */ const double lower_bound; @@ -283,7 +283,7 @@ namespace Patterns * Value of the upper bound. A number that satisfies the * @ref match * operation of this class must be equal to this value or less, if the - * bounds of the interval for a valid range. + * bounds of the interval form a valid range. */ const double upper_bound; diff --git a/source/base/parameter_handler.cc b/source/base/parameter_handler.cc index bd98002cfe..98e8ee8097 100644 --- a/source/base/parameter_handler.cc +++ b/source/base/parameter_handler.cc @@ -35,6 +35,7 @@ DEAL_II_ENABLE_EXTRA_DIAGNOSTICS #include #include #include +#include DEAL_II_NAMESPACE_OPEN @@ -281,23 +282,28 @@ namespace Patterns { std::ostringstream description; - // check whether valid bounds - // were specified, and if so - // output their values if (lower_bound <= upper_bound) { - description << description_init - << " " - << lower_bound << "..." << upper_bound - << " (inclusive)]"; + // bounds are valid + description << description_init << " "; + // We really want to compare with ==, but -Wfloat-equal would create + // a warning here, so work around it. + if (0==std::memcmp(&lower_bound, &min_double_value, sizeof(lower_bound))) + description << "-MAX_DOUBLE"; + else + description << lower_bound; + description << "..."; + if (0==std::memcmp(&upper_bound, &max_double_value, sizeof(upper_bound))) + description << "MAX_DOUBLE"; + else + description << upper_bound; + description << " (inclusive)]"; return description.str(); } else - // if no bounds were given, then - // return generic string { - description << description_init - << "]"; + // invalid bounds, assume unbounded double: + description << description_init << "]"; return description.str(); } } @@ -313,31 +319,38 @@ namespace Patterns Double *Double::create (const std::string &description) { - if (description.compare(0, std::strlen(description_init), description_init) == 0) - { - std::istringstream is(description); + const std::string description_init_str = description_init; + if (description.compare(0, description_init_str.size(), description_init_str) != 0) + return NULL; + if (*description.rbegin() != ']') + return NULL; - if (is.str().size() > strlen(description_init) + 1) - { - double lower_bound, upper_bound; + std::string temp = description.substr(description_init_str.size()); + if (temp == "]") + return new Double(1.0, -1.0); // return an invalid range - is.ignore(strlen(description_init) + strlen(" range ")); + if (temp.find("...") != std::string::npos) + temp.replace(temp.find("..."), 3, " "); - if (!(is >> lower_bound)) - return new Double(); + double lower_bound = min_double_value, + upper_bound = max_double_value; - is.ignore(strlen("...")); + std::istringstream is(temp); + if (0 == temp.compare(0, std::strlen(" -MAX_DOUBLE"), " -MAX_DOUBLE")) + is.ignore(std::strlen(" -MAX_DOUBLE")); + else + { + // parse lower bound and give up if not a double + if (!(is >> lower_bound)) + return NULL; + } - if (!(is >> upper_bound)) - return new Double(); + // ignore failure here and assume we got MAX_DOUBLE as upper bound: + is >> upper_bound; + if (is.fail()) + upper_bound = max_double_value; - return new Double(lower_bound, upper_bound); - } - else - return new Double(); - } - else - return 0; + return new Double(lower_bound, upper_bound); } diff --git a/tests/bits/parameter_handler_4.output b/tests/bits/parameter_handler_4.output index 7262fc5e81..7c5a0faac1 100644 --- a/tests/bits/parameter_handler_4.output +++ b/tests/bits/parameter_handler_4.output @@ -23,7 +23,7 @@ {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt int} \phantomsection\label{parameters:Testing/int} diff --git a/tests/bits/parameter_handler_4a.output b/tests/bits/parameter_handler_4a.output index 6dcf0739c9..56d289b6ee 100644 --- a/tests/bits/parameter_handler_4a.output +++ b/tests/bits/parameter_handler_4a.output @@ -23,7 +23,7 @@ {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt int} \phantomsection\label{parameters:Testing/int} @@ -76,7 +76,7 @@ {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt int 2} \phantomsection\label{parameters:Testing/Testing 2/int 2} diff --git a/tests/bits/parameter_handler_4a_with_alias.output b/tests/bits/parameter_handler_4a_with_alias.output index 8d5a7a675f..0befbc2683 100644 --- a/tests/bits/parameter_handler_4a_with_alias.output +++ b/tests/bits/parameter_handler_4a_with_alias.output @@ -23,7 +23,7 @@ {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt double_alias} \phantomsection\label{parameters:Testing/double_alias} @@ -94,7 +94,7 @@ This parameter is an alias for the parameter ``\texttt{int}''. {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt int 2} \phantomsection\label{parameters:Testing/Testing 2/int 2} diff --git a/tests/bits/parameter_handler_4a_with_alias_deprecated.output b/tests/bits/parameter_handler_4a_with_alias_deprecated.output index 19a83f190f..91e452c344 100644 --- a/tests/bits/parameter_handler_4a_with_alias_deprecated.output +++ b/tests/bits/parameter_handler_4a_with_alias_deprecated.output @@ -23,7 +23,7 @@ {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt double_alias} \phantomsection\label{parameters:Testing/double_alias} @@ -94,7 +94,7 @@ This parameter is an alias for the parameter ``\texttt{int}''. {\it Description:} docs 3 -{\it Possible values:} [Double -1.79769e+308...1.79769e+308 (inclusive)] +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] \item {\it Parameter name:} {\tt int 2} \phantomsection\label{parameters:Testing/Testing 2/int 2} diff --git a/tests/bits/parameter_handler_7.output b/tests/bits/parameter_handler_7.output index af472ec703..48dc5bd2d6 100644 --- a/tests/bits/parameter_handler_7.output +++ b/tests/bits/parameter_handler_7.output @@ -2,7 +2,7 @@ Listing of Parameters: subsection Testing - set double = [Double -1.79769e+308...1.79769e+308 (inclusive)] + set double = [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] (docs 3) set int = [Integer range -2147483648...2147483647 (inclusive)] set string list = diff --git a/tests/bits/parameter_handler_double_01.cc b/tests/bits/parameter_handler_double_01.cc new file mode 100644 index 0000000000..06dc88e27c --- /dev/null +++ b/tests/bits/parameter_handler_double_01.cc @@ -0,0 +1,41 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2003 - 2015 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + + +// test ParameterHandler::Double description of limits + +#include "../tests.h" +#include +#include +#include +#include + + +int main () +{ + initlog(); + + ParameterHandler prm; + prm.declare_entry ("a", "1.2", Patterns::Double(), "no limit"); + prm.declare_entry ("b", "1.2", Patterns::Double(-2.13), "lower limit"); + prm.declare_entry ("c", "1.2", Patterns::Double(Patterns::Double::min_double_value, 42.0), "upper limit"); + prm.declare_entry ("d", "1.2", Patterns::Double(0.2, 42.0), "both limits"); + prm.declare_entry ("e", "1.2", Patterns::Double(1.0, -1.0), "no limits"); + + prm.print_parameters (deallog.get_file_stream(), ParameterHandler::LaTeX); + + return 0; +} diff --git a/tests/bits/parameter_handler_double_01.output b/tests/bits/parameter_handler_double_01.output new file mode 100644 index 0000000000..aad44bd4b5 --- /dev/null +++ b/tests/bits/parameter_handler_double_01.output @@ -0,0 +1,87 @@ + +\subsection{Global parameters} +\label{parameters:global} + + +\begin{itemize} +\item {\it Parameter name:} {\tt a} +\phantomsection\label{parameters:a} + + +\index[prmindex]{a} +\index[prmindexfull]{a} +{\it Value:} 1.2 + + +{\it Default:} 1.2 + + +{\it Description:} no limit + + +{\it Possible values:} [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] +\item {\it Parameter name:} {\tt b} +\phantomsection\label{parameters:b} + + +\index[prmindex]{b} +\index[prmindexfull]{b} +{\it Value:} 1.2 + + +{\it Default:} 1.2 + + +{\it Description:} lower limit + + +{\it Possible values:} [Double -2.13...MAX_DOUBLE (inclusive)] +\item {\it Parameter name:} {\tt c} +\phantomsection\label{parameters:c} + + +\index[prmindex]{c} +\index[prmindexfull]{c} +{\it Value:} 1.2 + + +{\it Default:} 1.2 + + +{\it Description:} upper limit + + +{\it Possible values:} [Double -MAX_DOUBLE...42 (inclusive)] +\item {\it Parameter name:} {\tt d} +\phantomsection\label{parameters:d} + + +\index[prmindex]{d} +\index[prmindexfull]{d} +{\it Value:} 1.2 + + +{\it Default:} 1.2 + + +{\it Description:} both limits + + +{\it Possible values:} [Double 0.2...42 (inclusive)] +\item {\it Parameter name:} {\tt e} +\phantomsection\label{parameters:e} + + +\index[prmindex]{e} +\index[prmindexfull]{e} +{\it Value:} 1.2 + + +{\it Default:} 1.2 + + +{\it Description:} no limits + + +{\it Possible values:} [Double] +\end{itemize} diff --git a/tests/bits/parameter_handler_double_02.cc b/tests/bits/parameter_handler_double_02.cc new file mode 100644 index 0000000000..a42fedba5b --- /dev/null +++ b/tests/bits/parameter_handler_double_02.cc @@ -0,0 +1,55 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2003 - 2015 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + + +// test ParameterHandler::Double::create() + +#include "../tests.h" +#include +#include +#include +#include + +void test(const std::string &desc) +{ + deallog << desc << " -> "; + Patterns::Double *c = Patterns::Double::create(desc); + if (!c) + { + deallog << "NULL" << std::endl; + return; + } + deallog << c->description() << std::endl; +} + + +int main () +{ + initlog(); + + // invalid: + test("invalid"); + test("[Double invalid]"); + test("[Double"); + + test(Patterns::Double().description()); // no limit + test(Patterns::Double(-2.13).description()); // lower limit + test(Patterns::Double(Patterns::Double::min_double_value, 42.0).description()); // upper limit + test(Patterns::Double(0.2, 42.0).description()); // both limits + test(Patterns::Double(1.0, -1.0).description()); // no limits + + return 0; +} diff --git a/tests/bits/parameter_handler_double_02.output b/tests/bits/parameter_handler_double_02.output new file mode 100644 index 0000000000..fb17b6c664 --- /dev/null +++ b/tests/bits/parameter_handler_double_02.output @@ -0,0 +1,9 @@ + +DEAL::invalid -> NULL +DEAL::[Double invalid] -> NULL +DEAL::[Double -> NULL +DEAL::[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] -> [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] +DEAL::[Double -2.13...MAX_DOUBLE (inclusive)] -> [Double -2.13...MAX_DOUBLE (inclusive)] +DEAL::[Double -MAX_DOUBLE...42 (inclusive)] -> [Double -MAX_DOUBLE...42 (inclusive)] +DEAL::[Double 0.2...42 (inclusive)] -> [Double 0.2...42 (inclusive)] +DEAL::[Double] -> [Double] diff --git a/tests/bits/parameter_handler_read_xml.output b/tests/bits/parameter_handler_read_xml.output index b0080fa3d1..7115313c6d 100644 --- a/tests/bits/parameter_handler_read_xml.output +++ b/tests/bits/parameter_handler_read_xml.output @@ -1,3 +1,3 @@ -21doc 10[Integer range -2147483648...2147483647 (inclusive)]32doc 21[Integer range -2147483648...2147483647 (inclusive)]2.2341.234doc 32[Double -1.79769e+308...1.79769e+308 (inclusive)]5.3214.321doc 43[Double -1.79769e+308...1.79769e+308 (inclusive)]__< & > ; /< & > ; /docs 14[Anything]225[Integer range -2147483648...2147483647 (inclusive)]7.14159266.1415926docs 36[Double -1.79769e+308...1.79769e+308 (inclusive)] +21doc 10[Integer range -2147483648...2147483647 (inclusive)]32doc 21[Integer range -2147483648...2147483647 (inclusive)]2.2341.234doc 32[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]5.3214.321doc 43[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]__< & > ; /< & > ; /docs 14[Anything]225[Integer range -2147483648...2147483647 (inclusive)]7.14159266.1415926docs 36[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] diff --git a/tests/bits/parameter_handler_write_json.output b/tests/bits/parameter_handler_write_json.output index 817fb72ea8..112eb08986 100644 --- a/tests/bits/parameter_handler_write_json.output +++ b/tests/bits/parameter_handler_write_json.output @@ -24,7 +24,7 @@ "default_value": "1.234", "documentation": "doc 3", "pattern": "2", - "pattern_description": "[Double -1.79769e+308...1.79769e+308 (inclusive)]" + "pattern_description": "[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]" }, "ss2": { @@ -34,7 +34,7 @@ "default_value": "4.321", "documentation": "doc 4", "pattern": "3", - "pattern_description": "[Double -1.79769e+308...1.79769e+308 (inclusive)]" + "pattern_description": "[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]" } } }, @@ -62,7 +62,7 @@ "default_value": "6.1415926", "documentation": "docs 3", "pattern": "6", - "pattern_description": "[Double -1.79769e+308...1.79769e+308 (inclusive)]" + "pattern_description": "[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]" } } } diff --git a/tests/bits/parameter_handler_write_section_xml.output b/tests/bits/parameter_handler_write_section_xml.output index d9345a9d22..98f7146051 100644 --- a/tests/bits/parameter_handler_write_section_xml.output +++ b/tests/bits/parameter_handler_write_section_xml.output @@ -1,3 +1,3 @@ -4.3214.321doc 42[Double -1.79769e+308...1.79769e+308 (inclusive)]< & > ; /< & > ; /docs 13[Anything]224[Integer range -2147483648...2147483647 (inclusive)]6.14159266.1415926docs 35[Double -1.79769e+308...1.79769e+308 (inclusive)] +4.3214.321doc 42[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]< & > ; /< & > ; /docs 13[Anything]224[Integer range -2147483648...2147483647 (inclusive)]6.14159266.1415926docs 35[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] diff --git a/tests/bits/parameter_handler_write_xml.output b/tests/bits/parameter_handler_write_xml.output index 79a1967577..2f87f66680 100644 --- a/tests/bits/parameter_handler_write_xml.output +++ b/tests/bits/parameter_handler_write_xml.output @@ -1,3 +1,3 @@ -11doc 10[Integer range -2147483648...2147483647 (inclusive)]22doc 21[Integer range -2147483648...2147483647 (inclusive)]1.2341.234doc 32[Double -1.79769e+308...1.79769e+308 (inclusive)]4.3214.321doc 43[Double -1.79769e+308...1.79769e+308 (inclusive)]< & > ; /< & > ; /docs 14[Anything]225[Integer range -2147483648...2147483647 (inclusive)]6.14159266.1415926docs 36[Double -1.79769e+308...1.79769e+308 (inclusive)] +11doc 10[Integer range -2147483648...2147483647 (inclusive)]22doc 21[Integer range -2147483648...2147483647 (inclusive)]1.2341.234doc 32[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]4.3214.321doc 43[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)]< & > ; /< & > ; /docs 14[Anything]225[Integer range -2147483648...2147483647 (inclusive)]6.14159266.1415926docs 36[Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] diff --git a/tests/serialization/parameter_handler.output b/tests/serialization/parameter_handler.output index c5415d42fb..5122ebb5d6 100644 --- a/tests/serialization/parameter_handler.output +++ b/tests/serialization/parameter_handler.output @@ -1,6 +1,6 @@ -DEAL::0 0 0 0 0 0 4 0 0 0 4 int1 5 0 5 value 0 0 1 1 13 default_value 0 0 1 1 13 documentation 0 0 5 doc 1 7 pattern 0 0 1 0 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 4 int2 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 5 doc 2 7 pattern 0 0 1 1 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 3 ss1 2 0 10 double_201 5 0 5 value 0 0 5 1.234 13 default_value 0 0 5 1.234 13 documentation 0 0 5 doc 3 7 pattern 0 0 1 2 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 3 ss2 1 0 10 double_202 5 0 5 value 0 0 5 4.321 13 default_value 0 0 5 4.321 13 documentation 0 0 5 doc 4 7 pattern 0 0 1 3 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 0 0 17 Testing_25testing 3 0 13 string_26list 5 0 5 value 0 0 9 < & > ; / 13 default_value 0 0 9 < & > ; / 13 documentation 0 0 6 docs 1 7 pattern 0 0 1 4 19 pattern_description 0 0 10 [Anything] 0 9 int_2aint 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 0 7 pattern 0 0 1 5 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 15 double_2bdouble 5 0 5 value 0 0 9 6.1415926 13 default_value 0 0 9 6.1415926 13 documentation 0 0 6 docs 3 7 pattern 0 0 1 6 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 0 0 0 0 7 0 52 [Integer range -2147483648...2147483647 (inclusive)] 52 [Integer range -2147483648...2147483647 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 10 [Anything] 52 [Integer range -2147483648...2147483647 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] +DEAL::0 0 0 0 0 0 4 0 0 0 4 int1 5 0 5 value 0 0 1 1 13 default_value 0 0 1 1 13 documentation 0 0 5 doc 1 7 pattern 0 0 1 0 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 4 int2 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 5 doc 2 7 pattern 0 0 1 1 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 3 ss1 2 0 10 double_201 5 0 5 value 0 0 5 1.234 13 default_value 0 0 5 1.234 13 documentation 0 0 5 doc 3 7 pattern 0 0 1 2 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 3 ss2 1 0 10 double_202 5 0 5 value 0 0 5 4.321 13 default_value 0 0 5 4.321 13 documentation 0 0 5 doc 4 7 pattern 0 0 1 3 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 0 0 17 Testing_25testing 3 0 13 string_26list 5 0 5 value 0 0 9 < & > ; / 13 default_value 0 0 9 < & > ; / 13 documentation 0 0 6 docs 1 7 pattern 0 0 1 4 19 pattern_description 0 0 10 [Anything] 0 9 int_2aint 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 0 7 pattern 0 0 1 5 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 15 double_2bdouble 5 0 5 value 0 0 9 6.1415926 13 default_value 0 0 9 6.1415926 13 documentation 0 0 6 docs 3 7 pattern 0 0 1 6 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 0 0 0 0 7 0 52 [Integer range -2147483648...2147483647 (inclusive)] 52 [Integer range -2147483648...2147483647 (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 10 [Anything] 52 [Integer range -2147483648...2147483647 (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] -DEAL::0 0 0 0 0 0 4 0 0 0 4 int1 5 0 5 value 0 0 1 1 13 default_value 0 0 1 1 13 documentation 0 0 5 doc 1 7 pattern 0 0 1 0 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 4 int2 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 5 doc 2 7 pattern 0 0 1 1 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 3 ss1 2 0 10 double_201 5 0 5 value 0 0 5 1.234 13 default_value 0 0 5 1.234 13 documentation 0 0 5 doc 3 7 pattern 0 0 1 2 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 3 ss2 1 0 10 double_202 5 0 5 value 0 0 5 4.321 13 default_value 0 0 5 4.321 13 documentation 0 0 5 doc 4 7 pattern 0 0 1 3 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 0 0 17 Testing_25testing 3 0 13 string_26list 5 0 5 value 0 0 9 < & > ; / 13 default_value 0 0 9 < & > ; / 13 documentation 0 0 6 docs 1 7 pattern 0 0 1 4 19 pattern_description 0 0 10 [Anything] 0 9 int_2aint 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 0 7 pattern 0 0 1 5 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 15 double_2bdouble 5 0 5 value 0 0 9 6.1415926 13 default_value 0 0 9 6.1415926 13 documentation 0 0 6 docs 3 7 pattern 0 0 1 6 19 pattern_description 0 0 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 0 0 0 0 0 7 0 52 [Integer range -2147483648...2147483647 (inclusive)] 52 [Integer range -2147483648...2147483647 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] 10 [Anything] 52 [Integer range -2147483648...2147483647 (inclusive)] 49 [Double -1.79769e+308...1.79769e+308 (inclusive)] +DEAL::0 0 0 0 0 0 4 0 0 0 4 int1 5 0 5 value 0 0 1 1 13 default_value 0 0 1 1 13 documentation 0 0 5 doc 1 7 pattern 0 0 1 0 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 4 int2 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 5 doc 2 7 pattern 0 0 1 1 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 3 ss1 2 0 10 double_201 5 0 5 value 0 0 5 1.234 13 default_value 0 0 5 1.234 13 documentation 0 0 5 doc 3 7 pattern 0 0 1 2 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 3 ss2 1 0 10 double_202 5 0 5 value 0 0 5 4.321 13 default_value 0 0 5 4.321 13 documentation 0 0 5 doc 4 7 pattern 0 0 1 3 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 0 0 17 Testing_25testing 3 0 13 string_26list 5 0 5 value 0 0 9 < & > ; / 13 default_value 0 0 9 < & > ; / 13 documentation 0 0 6 docs 1 7 pattern 0 0 1 4 19 pattern_description 0 0 10 [Anything] 0 9 int_2aint 5 0 5 value 0 0 1 2 13 default_value 0 0 1 2 13 documentation 0 0 0 7 pattern 0 0 1 5 19 pattern_description 0 0 52 [Integer range -2147483648...2147483647 (inclusive)] 0 15 double_2bdouble 5 0 5 value 0 0 9 6.1415926 13 default_value 0 0 9 6.1415926 13 documentation 0 0 6 docs 3 7 pattern 0 0 1 6 19 pattern_description 0 0 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 0 0 0 0 0 7 0 52 [Integer range -2147483648...2147483647 (inclusive)] 52 [Integer range -2147483648...2147483647 (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] 10 [Anything] 52 [Integer range -2147483648...2147483647 (inclusive)] 45 [Double -MAX_DOUBLE...MAX_DOUBLE (inclusive)] DEAL::OK -- 2.39.5