coder.ClassType class
Package: coder
Superclasses: coder.ArrayType
Represent set of MATLAB classes
Description
Specifies the set of value class objects that the generated
code can accept. Use only with the codegen
-args
option.
Do not pass as an input to a generated MEX function.
Construction
Note
You can also create and edit coder.Type
objects
interactively by using the Coder Type Editor. See Create and Edit Input Types by Using the Coder Type Editor.
creates a t
= coder.typeof(value_class_object
)coder.ClassType
object for the object
value_class_object
.
creates
a t
= coder.newtype(value_class_name
)coder.ClassType
object for an object of the class value_class_name
.
Input Arguments
|
Value class object from which to create the v = myValueClass; t = coder.typeof(v); t = coder.typeof(myValueClass(2,3)); |
|
Name of a value class definition file on the MATLAB® path. Specify as a character vector or string scalar. For example: t = coder.newtype('myValueClass'); |
Properties
When you create a coder.ClassType
object
t
from a value class object v
by using
coder.typeof
, the properties of t
are the same as the properties of v
with the
attribute Constant
set to false
.
Copy Semantics
Value. To learn how value classes affect copy operations, see Copying Objects.
Examples
Create Type Based on Example Object
Create a type based on an example object in the workspace.
Create a value class myRectangle
.
classdef myRectangle properties length; width; end methods function obj = myRectangle(l,w) if nargin > 0 obj.length = l; obj.width = w; end end function area = calcarea(obj) area = obj.length * obj.width; end end end
Create a function that takes an object of myRectangle
as
an input.
function z = getarea(r) %#codegen z = calcarea(r); end
Create an object of myRectangle
.
v = myRectangle(1,2)
v = myRectangle with properties: length: 1 width: 2
Create a coder.ClassType
object based
on v
.
t = coder.typeof(v)
t = coder.ClassType 1×1 myRectangle length: 1×1 double width : 1×1 double
coder.typeof
creates a coder.ClassType
object
that has the same properties names and types as v
has.
Generate code for getarea
. Specify
the input type by passing the coder.ClassType
object, t
,
to the -args
option.
codegen getarea -args {t} -report
Create Type by Using coder.newtype
Create a coder.ClassType
object
for an object of the value class mySquare
by using coder.newtype
.
Create value class mySquare
that has
one property, side
.
classdef mySquare properties side; end methods function obj = mySquare(val) if nargin > 0 obj.side = val; end end function a = calcarea(obj) a = obj.side * obj.side; end end end
Create a coder.ClassType
type for mySquare
.
t = coder.newtype('mySquare')
The previous step creates a coder.ClassType
type for
t
, but does not assign any properties
of mySquare
to it. To ensure t
has all the properties of mySquare
, specify the type of
side
by using t.Properties
.
t.Properties.side = coder.typeof(2)
Tips
After you create a
coder.ClassType
, you can modify the types of the properties. For example:t = coder.typeof(myClass) t.Properties.prop1 = coder.typeof(int16(2)); t.Properties.prop2 = coder.typeof([1 2 3]);
After you create a
coder.ClassType
, you can add properties. For example:t = coder.typeof(myClass) t.Properties.newprop1 = coder.typeof(int8(2)); t.Properties.newprop2 = coder.typeof([1 2 3]);
When you generate code, the properties of the
coder.ClassType
object that you pass tocodegen
must be consistent with the properties in the class definition file. However, if the class definition file has properties that your code does not use, thecoder.ClassType
object does not have to include those properties. The code generator removes properties that you do not use.