GnuSmalltalkUsersGuide:BaseChapter 051

From 흡혈양파의 번역工房
Jump to: navigation, search
CType

CType

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: Object

범주: 언어-C 인터페이스


나는 표준 스몰토크 커널 클래스 계층구조에 속하지 않는다. 나는 외부 C 데이터 항목을 표현하는 CObject의 서브클래스가 사용하는 타입 정보를 포함한다.
나의 유일한 인스턴스 변수, cObjectType은 주어진 CType에 대해 생성되는 CObject 서브클래스를 보관하기 위해 사용된다. 내부적으로는 값을 얻기 위해 메서드를 실행할 수 없기 때문에 원하는 서브클래스를 보유하는 인스턴스 변수로 간단히 접근하는 방법이 있으므로 해석기의 C part에서 주로 사용된다.
나의 서브클래스들은 실제 데이터 타입을 표현하는 인스턴스를 갖는다; 스칼라 타입의 경우 각각에 하나의 인스턴스만 생성되지만 aggregate 타입의 경우 요소의 개수나 base 타입별로 최소 하나의 인스턴스가 있다.


CType 클래스: C 인스턴스 생성

cObjectBinding: aCObjectSubclassBinding

CObject의 주어진 서브클래스에 대해 새 CType를 생성하라.

cObjectType: aCObjectSubclass

CObject의 주어진 서브클래스에 대해 새 CType를 생성하라.

computeAggregateType: type

Private - 포인터/배열에 대한 from: 에 의해 호출된다. 타입 형식: (#array #int 3) 또는 (#ptr #{FooStruct})

from: type

Private - 'type'에 (각 쌍에서 두 번째 요소) 주어진 필드 설명을 감안해 aBlock에 대한 CType의 크기, 정렬, 설명을 전달하라.


CType 클래스: 초기화

initialize

수신자의 TypeMap를 초기화하라.


CType: 접근하기

alignof

수신자의 인스턴스 크기를 응답하라.

arrayType: size

수신자에 의해 타입이 표현되는 CObjects의 주어진 크기로 배열을 표현하는 CArrayCType을 응답하라.

cObjectType

수신자에게 new가 전송될 때 인스턴스가 생성되는 CObject 서브클래스를 응답하라.

ptrType

수신자에 의해 타입이 표현되는 CObjects를 가리키는 포인터를 나타낸 CPtrCType을 응답하라.

sizeof

수신자의 인스턴스 크기를 응답하라.

valueType

valueType은 기본이 되는 데이터 타입을 해석기에게 전달하기 위한 수단으로 사용된다. 스칼라를 제외한 경우엔 단순히 'self'이다.


CType: C 인스턴스 생성

address: cObjOrInt

수신자에 의해 식별된 타입(클래스)으로 새 CObject를 생성하고 주어진 어드레스(Integer 또는 CObject가 식별한)를 가리킨다.

gcNew

수신자에 의해 식별된 타입(클래스)으로 새 CObject를 할당하라. 객체는 메모리 내에서 이동 가능한 반면 자동으로 쓰레기 수집된다.

new

수신자에 의해 식별된 타입(클래스)로 새 CObject를 할당하라. 그에 할당된 메모리의 해제는 호출자가 책임 질 일이다.


CType: 보관하기

storeOn: aStream

수신자로 컴파일하는 스몰토크 코드를 보관하라.


Notes