This example shows how to control the input specifications for a System object™. You can control what happens when an input specification changes.
You can also restrict whether the input complexity, data type, or size can change while the object is
in use. Whichever aspects you restrict cannot change until after the user calls release
.
To modify the System object algorithm or properties when the input changes size, data type, or complexity, implement the processInputSpecificationChangeImpl
method. Specify actions to take when the input specification changes between
calls to the System object.
In this example, processInputSpecificationChangeImpl
changes the
isComplex
property when either input is
complex.
properties(Access = private) isComplex (1,1) logical = false; end methods (Access = protected) function processInputSpecificationChangeImpl(obj,input1,input2) if(isreal(input1) && isreal(input2)) obj.isComplex = false; else obj.isComplex = true; end end end
To specify that the input complexity, data type, and size cannot change while the System object is in use, implement the isInputComplexityMutableImpl
, isInputDataTypeMutableImpl
, and isInputSizeMutableImpl
methods to return
false
. If you want to restrict only some aspects of the System object input, you can include only one
or two of these methods.
methods (Access = protected) function flag = isInputComplexityMutableImpl(~,~) flag = false; end function flag = isInputSizeDataTypeImpl(~,~) flag = false; end function flag = isInputSizeMutableImpl(~,~) flag = false; end end