생성 코드에서 열거형 사용자 지정하기
코드 생성에서 열거형을 사용자 지정하려면, 클래스 정의의 정적 메서드 섹션에 다음 표에 나와 있는 사용자 지정된 메서드를 포함시키십시오.
메서드 | 설명 | 반환되거나 지정되는 디폴트 값 | 사용 시점 |
---|---|---|---|
| 디폴트 열거형 값을 반환합니다. | 열거형 클래스 정의에 있는 첫 번째 값 | 디폴트 값이 첫 번째 열거형 값과 다른 경우 원하는 디폴트 값을 반환하는 |
| 외부에서 정의된 열거형을 정의하는 파일을 지정합니다. |
| 외부에서 정의된 열거형을 사용하려면, 해당 유형을 정의하는 헤더 파일 경로를 반환하는 |
| 생성 코드에서 클래스 이름이 접두사가 되는지 여부를 지정합니다. |
| 생성 코드에서 클래스 이름이 접두사가 되도록 하려면 참고 열거형 클래스를 생성할 때(C++11 및 이후 표준) 코드 생성기는 이 정적 메서드를 무시합니다. |
generateEnumClass | 열거형 클래스를 생성할지 여부를 지정합니다. | true — C++ 코드에 열거형 클래스가 생성됩니다. | C++11(또는 이후) 코드를 생성할 때 특정 MATLAB® 열거형에 대해 일반 C 열거형을 생성하도록 코드 생성기에 지시하려면 generateEnumClass 메서드의 반환 값을 false 로 설정하십시오. 일반 C 열거형을 포함하는 C++ 코드 생성하기 항목을 참조하십시오. |
디폴트 열거형 값 지정하기
열거형으로 형변환된 변수의 값이 열거형 값 중 하나와 일치하지 않으면 다음 결과가 발생합니다.
생성된 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;
MATLAB 열거형 LEDcolor
를 MATLAB 네임스페이스 nmsp
내에 배치하고 C++ 코드를 생성하면, 코드 생성 시 이 열거형의 이름이 그대로 유지되고 생성 코드의 C++ 네임스페이스 nmsp
내에 배치됩니다. 따라서 제공하는 헤더 파일에서, 이 열거형을 네임스페이스 nmsp
내에 정의해야 합니다.
생성된 열거형 값 이름에 클래스 이름 접두사 포함하기
기본적으로, 생성된 열거형 값 이름에는 클래스 이름 접두사가 포함되어 있지 않습니다. 예를 들면 다음과 같습니다.
enum LEDcolor { GREEN = 1, RED }; typedef enum LEDcolor LEDcolor;
클래스 이름 접두사를 포함하려면 true
를 반환하는 addClassNameToEnumNames
메서드를 제공하십시오. 예를 들면 다음과 같습니다.
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;
일반 C 열거형을 포함하는 C++ 코드 생성하기
열거형 클래스를 지원하는 언어 표준(C++11 이상)을 사용하여 코드를 생성할 때 MATLAB 열거형 클래스는 열거형 클래스로 변환됩니다. 예를 들면 다음과 같습니다.
enum class MyEnumClass16 : short { Orange = 0, // Default value Yellow, Pink };
대신 일반 C 열거형을 생성하려면 false
를 반환하는 generateEnumClass
메서드를 제공하십시오. 예를 들면 다음과 같습니다.
classdef MyEnumClass16 < int16 enumeration Orange(0), Yellow(1), Pink(2) end % particular enum opting out methods(Static) function y = generateEnumClass() y = false; end end end
이제 생성된 코드에 일반 C 열거형이 포함되어 있습니다.
enum MyEnumClass16 : short { Orange = 0, // Default value Yellow, Pink };