GnuSmalltalkUsersGuide:BaseChapter 065
- DLD
DLD
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Object
범주: 언어-C 인터페이스
- ...그리고 Gandalf는 말했다: "많은 사람들은 식탁에 어떤 음식이 있는지 미리 알고 싶어한다; 하지만 식사를 준비해 온 사람들은 비밀을 지키고 싶어한다; 깜짝 선물이 더 많은 칭찬을 부르기 때문이다."
나는 일부 C 함수를 참조하는 데 사용되는 부수적인 클래스에 불과하다. 나의 실제 기능 중 대부분은 CFunctionDescriptor 내에서 메서드 재정의부(redefinitions)에 의해 사용된다.
DLD 클래스: C call-outs
defineCFunc: aName as: aFuncAddr
aFuncAddr을 cCalls에 대한 대상(target)으로서 aName에 등록하라.
DLD 클래스: 동적 연결
addLibrary: library
DLD가 사용하게 될 라이브러리의 검색 경로에 라이브러리를 추가하라.
addModule: library
이미지가 시작될 때 로딩될 모듈의 리스트에 라이브러리를 추가하라. 라이브러리에서 gst_initModule 함수가 호출될 것이지만, C 함수가 요청되나 등록되지 않을 때마다 사용되는 검색 경로에 라이브러리가 들어갈 일은 없다.
defineExternFunc: aFuncName
해당 메서드는 주어진 이름으로 된 함수로 연결을 시도하기 위해 #primDefineExternFunc: 를 호출하고, 연결의 성공 여부를 응답한다. 동적 연결의 실행 기능을 제한하도록 해당 메서드를 재정의할 수도 있다.
initialize
Private - 수신자의 클래스 변수를 초기화하라.
libraryList
DLD이 사용하게 될 라이브러리의 검색 경로의 복사본을 응답하라.
moduleList
이미지가 시작될 때 재로딩되는 모듈의 복사본을 응답하라.
primDefineExternFunc: aFuncName
해당 메서드는 주어진 이름으로 된 함수로 연결을 시도한 후 연결의 성공 여부를 응답한다. 오버라이드되어선 안 된다.
update: aspect
시작 시 호출된다 - DLD 재연결을 만들고, 외부적으로 정의된 모든 함수의 어드레스를 리셋한다.