Freigeben über


Arrays (RPC)

Mehrere Arraykategorien wurden basierend auf ihren Leistungsmerkmalen definiert, in erster Linie, ob das Array blockiert werden kann.

Bei einigen Kategorien, z. B. einem Array mit fester Größe, sind zwei Typen von Arraydeskriptoren vorhanden; sie werden durch einen In-Fix im Namen des führenden FC-Tokens angegeben.

Zeichen formatieren Beschreibung
SM Die Gesamtgröße des Typs kann in einem nicht signierten 16-Bit-Int dargestellt werden.
LG Die Gesamtgröße des Typs benötigt eine 32-Bit-Version ohne Vorzeichen, die dargestellt werden soll.

 

Felder, die arrays gemeinsam sind:

  • total_size

    Gesamtgröße des Arrays im Arbeitsspeicher in Byte. Dies entspricht der Drahtgröße nach der Ausrichtung. Die Gesamtgröße wird für Kategorien berechnet, für die das Abstandsproblem nicht vorhanden ist und die Größe die tatsächliche Arraygröße ist.

  • element_size

    Gesamtgröße im Arbeitsspeicher eines einzelnen Elements des Arrays, einschließlich Abstand (dies kann nur für komplexe Arrays geschehen).

  • element_description

    Beschreibung des Arrayelementtyps.

  • pointer_layout

    Weitere Informationen finden Sie im Thema Zeigerlayout.

Arrays mit fester Größe

Eine Zeichenfolge im Arrayformat mit fester Größe wird für Arrays mit einer bekannten Größe generiert und kann daher in den Marshallingpuffer kopiert werden. Die beiden festen Arraydeskriptorformate sind wie folgt:

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

und

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

Konformes Array

Ein konformes Array kann blockiert werden, sobald die Größe des Arrays bekannt ist.

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

Die conformance_description<> ist ein Korrelationsdeskriptor und hat 4 oder 6 Byte, je nachdem, ob /robust verwendet wird.

Konformes unterschiedliches Array

Ein konformes, unterschiedliches Array kann auch blockiert werden.

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

Die conformance_description<> und variance_description<> ist ein Korrelationsdeskriptor und hat 4 oder 6 Byte, je nachdem, ob /robust verwendet wird.

Unterschiedliche Matrix

Die unterschiedlichen Arrays haben je nach Größe des Arrays zwei Möglichkeiten.

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

Die variance_description<> ist ein Korrelationsdeskriptor und weist je nach verwendetem /robusten 4 oder 6 Bytes auf.

Bei unterschiedlichen Arrays, die innerhalb einer Struktur eingebettet sind, ist der Offset<2> Feld der variance_description<> ein relativer Offset von der Position des unterschiedlichen Arrays in der Struktur bis zur Varianz, die das Feld beschreibt. Der Offset ist in der Regel relativ zum Anfang der Struktur.

Komplexe Arrays

Bei einem komplexen Array handelt es sich um ein Array mit einem Element, das verhindert, dass es blockiert wird, und daher müssen zusätzliche Aktionen ausgeführt werden. Diese Elemente machen ein Array komplex:

  • einfache Typen: ENUM16, __INT3264 (nur auf 64-Bit-Plattformen), ein Integral mit [Bereich]
  • Referenz- und Schnittstellenzeiger (alle Zeiger auf 64-Bit-Plattformen)
  • Gewerkschaften
  • komplexe Strukturen (siehe Thema "Komplexe Strukturbeschreibung" aus einer vollständigen Liste der Gründe für eine komplexe Struktur)
  • mit [transmit_as], [user_marshal] definierte Elemente
  • Alle mehrdimensionalen Arrays mit mindestens einer konformen und/oder unterschiedlichen Dimension sind unabhängig vom zugrunde liegenden Elementtyp komplex.

Die beschreibung des komplexen Arrays lautet wie folgt:

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

Das feld number_of_elements<2> ist null, wenn das Array konform ist.

Die conformance_description<> und variance_description<> ist ein Korrelationsdeskriptor und hat 4 oder 6 Byte, je nachdem, ob /robust verwendet wird. Wenn das Array übereinstimmungs- und/oder varianz hat, sind die conformance_description<> und/oder variance_description<> Felder gültiger Beschreibungen, andernfalls werden die ersten 4 Bytes des Korrelationsdeskriptors auf 0xFFFFFFFF festgelegt. Die Flags sind bei vorhandener Markierung auf Null festgelegt.