Sophie

Sophie

distrib > Mageia > 7 > armv7hl > by-pkgid > 641ebb3060c35990cc021d8f7aaf9aca > files > 307

octave-doc-5.1.0-7.1.mga7.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Input Parameter Checking in Oct-Files (GNU Octave (version 5.1.0))</title>

<meta name="description" content="Input Parameter Checking in Oct-Files (GNU Octave (version 5.1.0))">
<meta name="keywords" content="Input Parameter Checking in Oct-Files (GNU Octave (version 5.1.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Oct_002dFiles.html#Oct_002dFiles" rel="up" title="Oct-Files">
<link href="Exception-and-Error-Handling-in-Oct_002dFiles.html#Exception-and-Error-Handling-in-Oct_002dFiles" rel="next" title="Exception and Error Handling in Oct-Files">
<link href="Allocating-Local-Memory-in-Oct_002dFiles.html#Allocating-Local-Memory-in-Oct_002dFiles" rel="prev" title="Allocating Local Memory in Oct-Files">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">


</head>

<body lang="en">
<a name="Input-Parameter-Checking-in-Oct_002dFiles"></a>
<div class="header">
<p>
Next: <a href="Exception-and-Error-Handling-in-Oct_002dFiles.html#Exception-and-Error-Handling-in-Oct_002dFiles" accesskey="n" rel="next">Exception and Error Handling in Oct-Files</a>, Previous: <a href="Allocating-Local-Memory-in-Oct_002dFiles.html#Allocating-Local-Memory-in-Oct_002dFiles" accesskey="p" rel="prev">Allocating Local Memory in Oct-Files</a>, Up: <a href="Oct_002dFiles.html#Oct_002dFiles" accesskey="u" rel="up">Oct-Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Input-Parameter-Checking-in-Oct_002dFiles-1"></a>
<h4 class="subsection">A.1.11 Input Parameter Checking in Oct-Files</h4>

<p>Because oct-files are compiled functions they open up the possibility of
crashing Octave through careless function calls or memory faults.  It is quite
important that each and every function have a sufficient level of parameter
checking to ensure that Octave behaves well.
</p>
<p>The minimum requirement, as previously discussed, is to check the number of
input arguments before using them to avoid referencing a nonexistent argument.
However, in some cases this might not be sufficient as the underlying code
imposes further constraints.  For example, an external function call might be
undefined if the input arguments are not integers, or if one of the arguments
is zero, or if the input is complex and a real value was expected.  Therefore,
oct-files often need additional input parameter checking.
</p>
<p>There are several functions within Octave that can be useful for the purposes
of parameter checking.  These include the methods of the <code>octave_value</code>
class like <code>is_real_matrix</code>, <code>is_numeric_type</code>, etc. (see
<samp>ov.h</samp>).  Often, with a knowledge of the Octave m-file language, you can
guess at what the corresponding C++ routine will.  In addition there are some
more specialized input validation functions of which a few are demonstrated
below.
</p>
<div class="example">
<pre class="verbatim">#include &lt;octave/oct.h&gt;

DEFUN_DLD (paramdemo, args, nargout, &quot;Parameter Check Demo&quot;)
{
  if (args.length () != 1)
    print_usage ();

  NDArray m = args(0).array_value ();

  double min_val = -10.0;
  double max_val = 10.0;

  octave_stdout &lt;&lt; &quot;Properties of input array:\n&quot;;

  if (m.any_element_is_negative ())
    octave_stdout &lt;&lt; &quot;  includes negative values\n&quot;;

  if (m.any_element_is_inf_or_nan ())
    octave_stdout &lt;&lt; &quot;  includes Inf or NaN values\n&quot;;

  if (m.any_element_not_one_or_zero ())
    octave_stdout &lt;&lt; &quot;  includes other values than 1 and 0\n&quot;;

  if (m.all_elements_are_int_or_inf_or_nan ())
    octave_stdout &lt;&lt; &quot;  includes only int, Inf or NaN values\n&quot;;

  if (m.all_integers (min_val, max_val))
    octave_stdout &lt;&lt; &quot;  includes only integers in [-10,10]\n&quot;;

  return octave_value_list ();
}
</pre></div>

<p>An example of its use is:
</p>
<div class="example">
<pre class="example">paramdemo ([1, 2, NaN, Inf])
&rArr; Properties of input array:
     includes Inf or NaN values
     includes other values than 1 and 0
     includes only int, Inf or NaN values
</pre></div>

<hr>
<div class="header">
<p>
Next: <a href="Exception-and-Error-Handling-in-Oct_002dFiles.html#Exception-and-Error-Handling-in-Oct_002dFiles" accesskey="n" rel="next">Exception and Error Handling in Oct-Files</a>, Previous: <a href="Allocating-Local-Memory-in-Oct_002dFiles.html#Allocating-Local-Memory-in-Oct_002dFiles" accesskey="p" rel="prev">Allocating Local Memory in Oct-Files</a>, Up: <a href="Oct_002dFiles.html#Oct_002dFiles" accesskey="u" rel="up">Oct-Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>