개별 객체의 ATK 구현 처리
모든 GObject 객체는 get_type() 함수를 구현합니다. 이 함수 이름에 대해 이름 규칙을 적용하면 myatkimp_mytype_get_type()이 됩니다.
이 함수에서, 객체 구현체의 인터페이스를 지정합니다. 다음 로직이 get_type() 함수에 있다면, 이 객체는 ATK_TEXT 인터페이스를 구현합니다:
예제 1-5 get_type() 함수 예제
static const GInterfaceInfo atk_text_info = { (GInterfaceInitFunc) atk_text_interface_init, (GInterfaceFinalizeFunc) NULL, NULL }; g_type_add_interface_static (type, ATK_TYPE_TEXT, &atk_text_info);
다음 프로토타입을 보유한 atk_text_interface_init() 함수도 구현해야합니다:
void atk_text_interface_init (AtkTextIface *iface);
이 함수는 다음과 같이 인터페이스 함수 호출을 개별 구현체에 연결합니다:
예제 1-6 AtkObject 구현체에 개별 인터페이스 호출 연결
void atk_text_interface_init (AtkTextIface *iface) { g_return_if_fail (iface != NULL); iface->get_text = myatkimp_mytype_get_text; iface->get_character_at_offset = myatkimp_mytype_get_character_at_offset; ... }
그 다음 myatkimp_mytype_get_text() 함수, myatkimp_mytype_get_character_at_offset() 함수, ATK_TEXT 인터페이스 함수의 나머지 부분을 구현해야합니다.