배열(RPC)
여러 배열 범주는 주로 배열을 블록 복사할 수 있는지 여부에 따라 성능 특성에 따라 정의되었습니다.
고정 크기 배열과 같은 일부 범주의 경우 두 가지 유형의 배열 설명자가 있습니다. 앞에 있는 FC 토큰의 이름에 in-fix로 표시됩니다.
형식 문자 | Description |
---|---|
SM | 형식의 총 크기는 부호 없는 16비트 int로 나타낼 수 있습니다. |
LG | 형식의 총 크기를 나타내려면 32비트 부호 없는 길이가 필요합니다. |
배열에 공통된 필드:
total_size
메모리 내 배열의 총 크기(바이트)입니다. 이는 맞춤 후의 와이어 크기와 동일합니다. 총 크기는 안쪽 여백 문제가 없는 범주에 대해 계산되고 크기는 실제 배열 크기입니다.
element_size
패딩을 포함하여 배열의 단일 요소에 대한 메모리의 총 크기입니다(복잡한 배열에 대해서만 발생할 수 있음).
element_description
배열 요소 형식에 대한 설명입니다.
pointer_layout
자세한 내용은 포인터 레이아웃 항목을 참조하세요.
고정 크기 배열 형식 문자열은 알려진 크기를 가진 배열에 대해 생성되므로 마샬링 버퍼에 블록 복사될 수 있습니다. 두 고정 배열 설명자 형식은 다음과 같습니다.
FC_SMFARRAY alignment<1>
total_size<2>
[pointer_layout<>]
element_description<>
FC_END
및
FC_LGFARRAY alignment<1>
total_size<4>
[pointer_layout<>]
element_description<>
FC_END
배열의 크기를 알면 규칙적인 배열을 블록 복사할 수 있습니다.
FC_CARRAY alignment<1>
element_size<2>
conformance_description<>
[pointer_layout<>]
element_description<>
FC_END
conformance_description<> 상관 관계 설명자이며 /strong 사용 여부에 따라 4바이트 또는 6바이트가 있습니다.
규칙적인 다양한 배열을 블록 복사할 수도 있습니다.
FC_CVARRAY alignment<1>
element_size<2>
conformance_description<>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
conformance_description<> 및 variance_description<> 상관 관계 설명자이며 /strong 사용 여부에 따라 4바이트 또는 6바이트가 있습니다.
다양한 배열은 배열의 크기에 따라 두 가지 가능성이 있습니다.
FC_SMVARRAY alignment<1>
total_size<2>
number_elements<2>
element_size<2>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
FC_LGVARRAY alignment<1>
total_size<4>
number_elements<4>
element_size<2>
variance_description<4>
[pointer_layout<>]
element_description<>
FC_END
variance_description<> 상관 관계 설명자이며 사용 중인 /strong 에 따라 4바이트 또는 6바이트가 있습니다.
구조체 내에 포함된 다양한 배열의 경우 variance_description<> 오프셋<2> 필드는 구조체의 다양한 배열 위치에서 분산 설명 필드까지의 상대 오프셋입니다. 오프셋은 일반적으로 구조체의 시작 부분을 기준으로 합니다.
복잡한 배열은 블록 복사를 방지하는 요소가 있는 배열이므로 추가 작업을 수행해야 합니다. 이러한 요소는 배열을 복잡하게 만듭니다.
- 단순 형식: ENUM16, __INT3264(64비트 플랫폼에서만 해당), [range]를 사용하는 정수
- 참조 및 인터페이스 포인터(64비트 플랫폼의 모든 포인터)
- 공용 구조체
- 복합 구조체(구조체가 복잡해야 하는 이유의 전체 목록은 복합 구조 설명 항목 참조)
- [transmit_as], [user_marshal]로 정의된 요소
- 하나 이상의 규칙 및/또는 다양한 차원이 있는 모든 다차원 배열은 기본 요소 형식에 관계없이 복잡합니다.
복잡한 배열 설명은 다음과 같습니다.
FC_BOGUS_ARRAY alignment<1>
number_of_elements<2>
conformance_description<>
variance_description<>
element_description<>
FC_END
배열이 적합하면 number_of_elements<2> 필드는 0입니다.
conformance_description<> 및 variance_description<> 상관 관계 설명자이며 /strong 사용 여부에 따라 4바이트 또는 6바이트가 있습니다. 배열에 규칙 및/또는 분산이 있는 경우 conformance_description<> 및/또는 variance_description<> 필드에 유효한 설명이 있습니다. 그렇지 않으면 상관 관계 설명자의 처음 4바이트가 0xFFFFFFFF 설정됩니다. 플래그가 있으면 0으로 설정됩니다.