12.6.8 Extern 타입(Extern Types)

12.6.8 Extern 타입(Extern Types)

Extern 타입은 값 타입(value types), 포인터 타입(pointer types), 관리 타입(managed types)의 세 가지 종류로 나뉩니다. extern 클래스나 enum은 적절한 메타데이터(cpp.ValueType, cpp.PointerType 또는 cpp.ManagedType)로 장식함으로써 이 중 하나가 됩니다. 다음 페이지들이 세 타입 각각을 자세히 다룹니다.

기본적으로 extern 타입의 이름이 네이티브 타입의 이름으로 사용됩니다. 예를 들어 extern class Foo {}의 경우 extern되는 네이티브 타입은 Foo라고 이름지어져야 합니다. 그러나 C/C++에서 타입 이름은 소문자로 시작할 수 있는데 이를 Haxe에서는 허용하지 않습니다. 이를 우회하려면 extern 타입 메타데이터에서 문자열로 타입 이름을 지정할 수 있습니다. 이 type 필드는 문자열이어야 합니다.

struct foo {};
@:semantics(value)
@:cpp.ValueType({ type : "foo" })
extern class Foo {}

C++ 타입은 선택적으로 네임스페이스에 범위를 지정할 수 있습니다. extern 타입 메타데이터를 사용해 extern되는 타입이 있는 네임스페이스를 지정할 수 있습니다. 이 namespace 필드는 문자열 배열이어야 합니다.

namespace foo::bar {
	struct baz {};
}
@:semantics(value)
@:cpp.ValueType({ type : "baz", namespace : [ "foo", "bar" ] })
extern class Baz {}

선택적인 세 번째 필드인 flags가 있으며, extern 타입의 다양한 옵션을 구성할 수 있게 합니다. 각 extern 타입에 사용 가능한 정확한 flags와 그 기능은 extern 타입 전용 페이지에 문서화되어 있습니다.

출처: Extern Types

더 알아보기