[Matlab] Eliminate unnecessary copy-constructor-like option

This commit is contained in:
Ray Speth 2019-01-29 15:30:17 -05:00
parent 9f5dfbdb12
commit 35be561d99
3 changed files with 37 additions and 77 deletions

View file

@ -9,12 +9,9 @@ function k = Kinetics(r, ph, neighbor1, neighbor2, neighbor3, neighbor4)
% a reaction mechanism.
%
% :param r:
% If ``r`` is an instance of class :mat:func:`Kinetics`, a copy of the instance
% is returned. In this case, ``r`` should be the only argument. Otherwise, ``r``
% must be an instance of class :mat:func:`XML_Node`.
% An instance of class :mat:func:`XML_Node`.
% :param ph:
% If ``r`` is an instance of :mat:func:`XML_Node`, ``ph`` is an instance of class
% :mat:func:`ThermoPhase`. Otherwise, optional.
% An instance of class :mat:func:`ThermoPhase`.
% :param neighbor1:
% Instance of class :mat:func:`ThermoPhase` or :mat:func:`Solution` representing a
% neighboring phase.
@ -38,19 +35,7 @@ ineighbor2 = -1;
ineighbor3 = -1;
ineighbor4 = -1;
% if only one argument is supplied, and it is an instance of
% 'Kinetics', return a copy of this instance
if nargin == 1
if isa(r, 'Kinetics')
k = r;
return
else
error('wrong number of arguments')
end
end
% if more than one argument, first one must be an XML_Node
% instance representing the XML tree
% First argument must be an XML_Node instance representing the XML tree
if ~isa(r, 'XML_Node')
error('first argument must be an XML_Node object')
end

View file

@ -2,30 +2,19 @@ function t = ThermoPhase(r)
% THERMOPHASE ThermoPhase class constructor.
% t = ThermoPhase(r)
% :param r:
% If ``r`` is an instance of class :mat:func:`ThermoPhase`,
% a copy of the instance is returned. Otherwise, ``r`` must
% be an instance of class :mat:func:`XML_Node`.
% An instance of class :mat:func:`XML_Node`.
% :return:
% Instance of class :mat:func:`ThermoPhase`
%
if nargin == 1
if isa(r, 'ThermoPhase')
% create a copy
t = r;
return
elseif isa(r, 'XML_Node')
t.owner = 1;
hr = xml_hndl(r);
t.tp_id = thermo_get(hr, 0);
if t.tp_id < 0
error(geterr);
end
else
t.owner = 0;
t.tp_id = r;
end
t = class(t, 'ThermoPhase');
else
if nargin ~= 1
error('ThermoPhase expects 1 input argument.');
end
t.owner = 1;
hr = xml_hndl(r);
t.tp_id = thermo_get(hr, 0);
if t.tp_id < 0
error(geterr);
end
t = class(t, 'ThermoPhase');

View file

@ -1,11 +1,8 @@
function tr = Transport(r, th, model, loglevel)
% TRANSPORT Transport class constructor.
% tr = Transport(r, th, model, loglevel)
% Create a new instance of class :mat:func:`Transport`. One, three,
% or four arguments may be supplied. If one argument is given,
% it must be an instance of class :mat:func:`Transport`, and
% a copy will be returned. If three or four arguments are given,
% the first two must be an instance of class :mat:func:`XML_Node`
% Create a new instance of class :mat:func:`Transport`. Three or four arguments
% may be supplied. The first two must be an instance of class:mat:func:`XML_Node`
% and an instance of class :mat:func:`ThermoPhase` respectively.
% The third argument is the type of modeling desired, specified
% by the string ``'default'``, ``'Mix'`` or ``'Multi'``.
@ -14,8 +11,7 @@ function tr = Transport(r, th, model, loglevel)
% the logging level desired.
%
% :param r:
% Either an instance of class :mat:func:`Transport` or an
% instance of class :mat:func:`XML_Node`
% An instance of class :mat:func:`XML_Node`
% :param th:
% Instance of class :mat:func:`ThermoPhase`
% :param model:
@ -28,35 +24,25 @@ function tr = Transport(r, th, model, loglevel)
%
tr.id = 0;
if nargin == 1
if isa(r, 'Transport')
tr = r;
else
error(['Unless the first argument is an instance of class ' ...
'Transport, there must be more than one argument'])
end
else
if nargin == 3
loglevel = 4;
end
if ~isa(r, 'XML_Node')
error(['The first argument must either be an instance of class ' ...
'Transport or XML_Node'])
elseif ~isa(th, 'ThermoPhase')
error('The second argument must be an instance of class ThermoPhase')
else
tr.th = th;
if strcmp(model, 'default')
try
node = child(r, 'transport');
tr.model = attrib(node, 'model');
catch
tr.model = 'None';
end
else
tr.model = model;
end
tr.id = trans_get(thermo_hndl(th), -1, tr.model, loglevel) ;
tr = class(tr, 'Transport');
end
if nargin == 3
loglevel = 4;
end
if ~isa(r, 'XML_Node')
error(['The first argument must be an instance of class XML_Node'])
elseif ~isa(th, 'ThermoPhase')
error('The second argument must be an instance of class ThermoPhase')
else
tr.th = th;
if strcmp(model, 'default')
try
node = child(r, 'transport');
tr.model = attrib(node, 'model');
catch
tr.model = 'None';
end
else
tr.model = model;
end
tr.id = trans_get(thermo_hndl(th), -1, tr.model, loglevel) ;
tr = class(tr, 'Transport');
end