Для генерации кода, чтобы настроить перечисление, в разделе статических методов определения класса, включают настроенные версии методов, перечисленных в этой таблице.
Метод | Описание | Значение по умолчанию, возвращенное или заданное | Когда использовать |
---|---|---|---|
| Возвращает перечисляемое значение по умолчанию. | Первое значение в определении класса перечисления. | Для значения по умолчанию, которое отличается, чем первая перечислимая величина, предоставьте метод |
| Задает файл, который задает внешне заданный перечислимый тип. |
| Чтобы использовать внешне заданный перечислимый тип, предоставьте метод |
| Задает, становится ли имя класса префиксом в сгенерированном коде. |
| Если вы хотите, чтобы имя класса стало префиксом в сгенерированном коде, установите возвращаемое значение метода |
Если значение переменной, которая брошена к перечислимому типу, не совпадает с одним из значений перечислимого типа:
Сгенерированный MEX сообщает об ошибке.
Сгенерированный код C/C++ заменяет значение переменной со значением по умолчанию перечислимого типа.
Если вы не задаете в противном случае, значение по умолчанию для перечислимого типа является первым значением в определении класса перечисления. Чтобы задать различное значение по умолчанию, добавьте свой собственный метод getDefaultValue
в раздел методов. В этом примере первым значением участника перечисления является LEDcolor.GREEN
, но метод getDefaultValue
возвращает LEDcolor.RED
:
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods (Static) function y = getDefaultValue() y = LEDcolor.RED; end end end
Чтобы указать, что перечислимый тип задан во внешнем файле, предоставьте индивидуально настраиваемый метод getHeaderFile
. Этот пример указывает, что LEDcolor
задан во внешнем файле my_LEDcolor.h
.
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods(Static) function y=getHeaderFile() y='my_LEDcolor.h'; end end end
Необходимо обеспечить my_LEDcolor.h
. Например:
enum LEDcolor { GREEN = 1, RED }; typedef enum LEDcolor LEDcolor;
По умолчанию сгенерированное имя значения перечислимого типа не включает префикс имени класса. Например:
enum LEDcolor { GREEN = 1, RED }; typedef enum LEDcolor LEDcolor;
Чтобы включать префикс имени класса, предоставьте метод addClassNameToEnumNames
, который возвращает true
. Например:
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods(Static) function y = addClassNameToEnumNames() y=true; end end end
В сгенерированном определении типа имена перечисляемого значения включают префикс класса LEDcolor
.
enum LEDcolor { LEDcolor_GREEN = 1, LEDcolor_RED }; typedef enum LEDcolor LEDcolor;