Mercurial > forge
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