Main Content

생성 코드에서 열거형 사용자 지정하기

코드 생성에서 열거형을 사용자 지정하려면, 클래스 정의의 정적 메서드 섹션에 다음 표에 나와 있는 사용자 지정된 메서드를 포함시키십시오.

메서드설명반환되거나 지정되는 디폴트 값 사용 시점

getDefaultValue

디폴트 열거형 값을 반환합니다.

열거형 클래스 정의에 있는 첫 번째 값

디폴트 값이 첫 번째 열거형 값과 다른 경우 원하는 디폴트 값을 반환하는 getDefaultValue 메서드를 제공하십시오. 디폴트 열거형 값 지정하기 항목을 참조하십시오.

getHeaderFile

외부에서 정의된 열거형을 정의하는 파일을 지정합니다.

''

외부에서 정의된 열거형을 사용하려면, 해당 유형을 정의하는 헤더 파일 경로를 반환하는 getHeaderFile 메서드를 제공하십시오. 이 경우, 코드 생성기는 클래스 정의를 생성하지 않습니다. 헤더 파일 지정하기 항목을 참조하십시오.

addClassNameToEnumNames

생성 코드에서 클래스 이름이 접두사가 되는지 여부를 지정합니다.

false — 접두사가 사용되지 않습니다.

생성 코드에서 클래스 이름이 접두사가 되도록 하려면 addClassNameToEnumNames 메서드의 반환 값을 true로 설정하십시오. 생성된 열거형 값 이름에 클래스 이름 접두사 포함하기 항목을 참조하십시오.

참고

C++11 열거형 클래스를 생성할 경우 코드 생성기는 이 정적 메서드를 무시합니다.

generateEnumClass

C++11 열거형 클래스를 생성할지 여부를 지정합니다.

true — C++11 코드에 열거형 클래스가 생성됩니다.C++11 코드를 생성할 때 특정 MATLAB® 열거형에 대해 일반 C 열거형을 생성하도록 코드 생성기에 지시하려면, generateEnumClass 메서드의 반환 값을 false로 설정하십시오. 일반 C 열거형이 포함된 C++11 코드 생성하기 항목을 참조하십시오.

디폴트 열거형 값 지정하기

열거형으로 형변환된 변수의 값이 열거형 값 중 하나와 일치하지 않으면 다음 결과가 발생합니다.

  • 생성된 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++11 코드 생성하기

C++11 코드를 생성할 때 MATLAB 열거형 클래스는 C++11 열거형 클래스로 변환됩니다. 예를 들면 다음과 같습니다.

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++11 코드에 일반 C 열거형이 포함되어 있습니다.

enum MyEnumClass16 : short
{
  Orange = 0, // Default value
  Yellow,
  Pink
};

관련 항목