Aracılığıyla paylaş


Diziler (RPC)

Performans özelliklerine göre, öncelikle dizinin blok kopyalanıp kopyalanamayacağına bağlı olarak çeşitli dizi kategorileri tanımlanmıştır.

Sabit boyutlu dizi gibi bazı kategoriler için iki tür dizi tanımlayıcısı vardır; bunlar, öndeki FC belirtecinin adında bir in-fix ile gösterilir.

Karakter biçimlendir Açıklama
SM Türün toplam boyutu 16 bit işaretsiz bir int ile gösterilebilir.
LG Türün toplam boyutunun gösterilmesi için 32 bit işaretsiz uzun olması gerekir.

 

Diziler için ortak alanlar:

  • total_size

    Bellekteki dizinin bayt cinsinden toplam boyutu. Bu, hizalamadan sonra kablo boyutuyla aynıdır. Toplam boyut, doldurma sorununun mevcut olmadığı ve boyutun gerçek dizi boyutu olduğu kategoriler için hesaplanır.

  • element_size

    Doldurma da dahil olmak üzere dizinin tek bir öğesinin belleğindeki toplam boyut (bu yalnızca karmaşık diziler için olabilir).

  • element_description

    Dizi öğesi türünün açıklaması.

  • pointer_layout

    Daha fazla bilgi için İşaretçi Düzeni konusuna bakın.

Sabit boyutlu Diziler

Bilinen bir boyuta sahip diziler için sabit boyutlu bir dizi biçimi dizesi oluşturulur ve bu nedenle sıralama arabelleğine blok kopyalanabilir. İki sabit dizi tanımlayıcı biçimi aşağıdaki gibidir.

FC_SMFARRAY alignment<1> 
total_size<2> 
[pointer_layout<>]  
element_description<> 
FC_END

ve

FC_LGFARRAY alignment<1> 
total_size<4> 
[pointer_layout<>] 
element_description<> 
FC_END

Uyumlu Dizi

Uyumlu bir dizi, dizinin boyutu bilindikten sonra blok kopyalanabilir.

FC_CARRAY alignment<1>
element_size<2> 
conformance_description<> 
[pointer_layout<>] 
element_description<> 
FC_END

conformance_description<> bir bağıntı tanımlayıcısıdır ve /strong kullanılıp kullanılmadığına bağlı olarak 4 veya 6 bayttır.

Uyumlu Değişen Dizi

Uyumlu ve değişken bir dizi de blok kopyalanabilir.

FC_CVARRAY alignment<1> 
element_size<2> 
conformance_description<> 
variance_description<>  
[pointer_layout<>] 
element_description<> 
FC_END

conformance_description<> ve variance_description<> bir bağıntı tanımlayıcısıdır ve /strong kullanılıp kullanılmadığına bağlı olarak 4 veya 6 bayttır.

Değişen Dizi

Değişen dizilerin, dizinin boyutuna bağlı olarak iki olasılığı vardır.

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<> bir bağıntı tanımlayıcısıdır ve kullanılan /strong bağlı olarak 4 veya 6 bayttır.

Bir yapının içine katıştırılmış çeşitli diziler için, variance_description<> 2><uzaklık, değişen dizinin yapıdaki konumundan alanı açıklayan varyansa göre uzaklıktır. Uzaklık genellikle yapının başlangıcına göredir.

Karmaşık Diziler

Karmaşık dizi, blok kopyalanmasını engelleyen bir öğeye sahip herhangi bir dizidir ve bu nedenle ek eylem yapılması gerekir. Bu öğeler bir diziyi karmaşık hale getirir:

  • basit türler: ENUM16, __INT3264 (yalnızca 64 bit platformlarda), [aralığı] içeren bir integral
  • başvuru ve arabirim işaretçileri (64 bit platformlardaki tüm işaretçiler)
  • Sendika
  • karmaşık yapılar (bir yapının karmaşık olmasının nedenlerinin tam listesi için Karmaşık Yapı Açıklaması konusuna bakın)
  • [transmit_as], [user_marshal] ile tanımlanan öğeler
  • En az bir uyumlu ve/veya değişen boyuta sahip çok boyutlu dizilerin tümü, temel öğe türünden bağımsız olarak karmaşıktır.

Karmaşık dizi açıklaması aşağıdaki gibidir:

FC_BOGUS_ARRAY alignment<1> 
number_of_elements<2> 
conformance_description<> 
variance_description<> 
element_description<> 
FC_END

Dizi uyumluysa number_of_elements<2> alanı sıfırdır.

conformance_description<> ve variance_description<> bir bağıntı tanımlayıcısıdır ve /strong kullanılıp kullanılmadığına bağlı olarak 4 veya 6 bayttır. Dizinin uyumluluğu ve/veya varyansı varsa, conformance_description<> ve/veya variance_description<> alanları geçerli açıklamalara sahiptir; aksi takdirde bağıntı tanımlayıcısının ilk 4 bayt değeri 0xFFFFFFFF olarak ayarlanır. Bayraklar mevcut olduğunda sıfır olarak ayarlanır.