Для генерации кода, чтобы настроить перечисление, в разделе статических методов определения класса, включают настроенные версии методов, перечисленных в этой таблице.
Метод | Описание | Значение по умолчанию, возвращенное или заданное | Когда использовать |
---|---|---|---|
| Возвращает перечисляемое значение по умолчанию. | Первое значение в определении класса перечисления. | Для значения по умолчанию, которое отличается, чем первая перечислимая величина, обеспечьте |
| Задает файл, который задает внешне заданный перечислимый тип. |
| Чтобы использовать внешне заданный перечислимый тип, обеспечьте |
| Задает, становится ли имя класса префиксом в сгенерированном коде. |
| Если вы хотите, чтобы имя класса стало префиксом в сгенерированном коде, установите возвращаемое значение |
Если значение переменной, которая брошена к перечислимому типу, не совпадает с одним из значений перечислимого типа:
Сгенерированный 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;