changeset 11405:810c175c3cdf octave-forge

better signature for check functions
author mmarzolla
date Tue, 22 Jan 2013 15:24:27 +0000
parents 07a36f1d7316
children e29ecce18b3b
files main/queueing/inst/private/qncmchkparam.m main/queueing/inst/private/qncschkparam.m
diffstat 2 files changed, 45 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/main/queueing/inst/private/qncmchkparam.m	Tue Jan 22 13:13:40 2013 +0000
+++ b/main/queueing/inst/private/qncmchkparam.m	Tue Jan 22 15:24:27 2013 +0000
@@ -1,4 +1,4 @@
-## Copyright (C) 2012 Moreno Marzolla
+## Copyright (C) 2012, 2013 Moreno Marzolla
 ##
 ## This file is part of the queueing toolbox.
 ##
@@ -17,7 +17,10 @@
 
 ## -*- texinfo -*-
 ##
-## @deftypefn {Function File} {[@var{err} @var{N} @var{S} @var{V} @var{m} @var{Z}] = } qncmchkparam( N, S, ... )
+## @deftypefn {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V, m )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V, m, Z )
 ##
 ## Validate input parameters for closed, multiclass network.
 ## @var{err} is the empty string on success, or a suitable error message
@@ -28,17 +31,15 @@
 ## Author: Moreno Marzolla <marzolla(at)cs.unibo.it>
 ## Web: http://www.moreno.marzolla.name/
 
-function [err N S V m Z] = qncmchkparam( varargin )
+function [err Nout Sout Vout mout Zout] = qncmchkparam( N, S, V, m, Z )
   
   err = "";
-
-  assert( nargin >= 2 );
+  [Nout Sout Vout mout Zout] = deal(0);
 
-  N = varargin{1};
-
-  S = varargin{2};
-
-  [V m Z] = deal(0);
+  if ( nargin < 2 || nargin > 5 )
+    err = "Wrong number of parameters (min 2, max 5)";
+    return;
+  endif
 
   if ( !isvector(N) || length(N)==0 )
     err = "N must be a nonempty vector";
@@ -50,9 +51,9 @@
     return;
   endif
 
-  N = N(:)';
+  Nout = N(:)';
 
-  C = length(N); ## Number of classes
+  C = length(Nout); ## Number of classes
 
   if ( !ismatrix(S) || rows(S) != C )
     err = sprintf("S must be a matrix with %d rows",C);
@@ -64,12 +65,13 @@
     return;
   endif
 
-  K = columns(S);
+  Sout = S;
+
+  K = columns(Sout);
 
   if ( nargin < 3 )
-    V = ones(size(S));
+    Vout = ones(size(Sout));
   else
-    V = varargin{3};
     if ( !ismatrix(V) || rows(V) != C || columns(V) != K )
       err = sprintf("V must be a %d x %d matrix", C, K );
       return;
@@ -79,23 +81,23 @@
       err = "V must contain nonnegative values";
       return;
     endif
+
+    Vout = V;
   endif
 
   if ( nargin < 4 ) 
-    m = ones(1,K);
+    mout = ones(1,K);
   else
-    m = varargin{4};
     if (!isvector(m) || length(m) != K ) 
       err = sprintf("m must be a vector with %d elements", K );
       return;
     endif
-    m = m(:)';
+    mout = m(:)';
   endif
 
   if ( nargin < 5 )
-    Z = zeros(1,C);
+    Zout = zeros(1,C);
   else
-    Z = varargin{5};
     if (!isvector(Z) || length(Z) != C)
       err = sprintf("Z must be a vector with %d elements", C);
       return;
@@ -104,6 +106,6 @@
       err = "Z must contain nonnegative values";
       return;
     endif
-    Z = Z(:)';
+    Zout = Z(:)';
   endif
 endfunction
--- a/main/queueing/inst/private/qncschkparam.m	Tue Jan 22 13:13:40 2013 +0000
+++ b/main/queueing/inst/private/qncschkparam.m	Tue Jan 22 15:24:27 2013 +0000
@@ -1,4 +1,4 @@
-## Copyright (C) 2012 Moreno Marzolla
+## Copyright (C) 2012, 2013 Moreno Marzolla
 ##
 ## This file is part of the queueing toolbox.
 ##
@@ -17,7 +17,10 @@
 
 ## -*- texinfo -*-
 ##
-## @deftypefn {Function File} {[@var{err} @var{N} @var{S} @var{V} @var{m} @var{Z}] = } qncschkparam( N, S, ... )
+## @deftypefn {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncschkparam( N, S )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncschkparam( N, S, V )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncschkparam( N, S, V, m )
+## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncschkparam( N, S, V, m, Z )
 ##
 ## Validate input parameters for closed, single class networks.
 ## @var{err} is the empty string on success, or a suitable error message
@@ -28,23 +31,23 @@
 ## Author: Moreno Marzolla <marzolla(at)cs.unibo.it>
 ## Web: http://www.moreno.marzolla.name/
 
-function [err N S V m Z] = qncschkparam( varargin )
+function [err Nout Sout Vout mout Zout] = qncschkparam( N, S, V, m, Z )
   
   err = "";
-
-  assert( nargin >= 2 );
+  [Nout Sout Vout mout Zout] = deal(0);
 
-  N = varargin{1};
-
-  S = varargin{2};
-
-  [V m Z] = deal(0);
+  if ( nargin < 2 || nargin > 5)
+    err = "Wrong number of parameters (min 2, max 5)";
+    return;
+  endif
 
   if ( !isscalar(N) || N<0 || N != fix(N) )
     err = "N must be a nonnegative integer";  
     return;
   endif
 
+  Nout = N;
+
   if ( !isvector(S) || length(S)<=0 )
     err = "S must be a nonempty vector";
     return;
@@ -55,12 +58,11 @@
     return;
   endif
 
-  S = S(:)';
+  Sout = S(:)';
+
   if ( nargin < 3 )
-    V = ones(size(S));
+    Vout = ones(size(Sout));
   else
-    V = varargin{3};
-
     if ( ! isvector(V) )
       err =  "V must be a vector";
       return;
@@ -69,35 +71,32 @@
       err =  "V must contain nonnegative values";
       return;
     endif
-    V = V(:)';
+    Vout = V(:)';
   endif
 
   if ( nargin < 4 ) 
-    m = ones(size(S));
+    mout = ones(size(Sout));
   else
-    m = varargin{4};
-
     if ( ! isvector(m) )
       err = "m must be a vector";
       return;
     endif
-    m = m(:)';
+    mout = m(:)';
   endif
 
-  [er S V m] = common_size(S, V, m);
+  [er Sout Vout mout] = common_size(Sout, Vout, mout);
   if (er != 0 )
     err = "S, V and m are of incompatible size";
     return;
   endif
 
   if ( nargin < 5 )
-    Z = 0;
+    Zout = 0;
   else
-    Z = varargin{5};
-
     if ! ( isscalar(Z) && Z >= 0 )
       err = "Z must be a nonnegative scalar";
       return;
     endif
+    Zout = Z;
   endif
 endfunction