La tabella strutture (STRUCTS) è composta da un numero di definizioni (STRUCT) contigue, ognuna delle quali contiene tutte le informazioni su uno specifica struttura definita dall'utente: in questa tabella non sono presenti i tipi dati predefiniti.
La posizione (relativa al file) e il numero di elementi della tabella sono specificate rispettivamente dai campi HEADER.STRUCTSOFF e HEADER.STRUCTSCNT.
Definizione struttura
Una struttura (STRUCT) è composta dalle seguenti informazioni:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
ID |
+0 |
U32 |
ID tipo struttura Nota: solo valori 0x00010000-0xFFFFFFFE; i valori 0 e 0xFFFFFFFF sono ID a significato speciale. |
|
+4 |
U8[2] |
(riservati, uso runtime) |
FLAGS |
+6 |
U16 |
Impostazioni della struttura: 0x0001 Campo TEXT non compresso (NCF0). 0x0002 Campo MODIFIER non compresso (NCF1). |
NAME |
+8 |
U32 |
Offset nome della struttura (relativo a stringhe). |
TEXT |
+12 |
U32 |
Offset descrizione della struttura (relativo a stringhe compresse, o stringhe se NCF0). |
VARSOFF |
+16 |
U32 |
Offset della tabella variabili (relativo al file) (#1) |
VARSCNT |
+20 |
U32 |
Dimensione tabella variabili |
SIZE |
+24 |
U32 |
Dimensione della struttura [byte] |
SRCID |
+28 |
U32 |
Identificativo sorgente della struttura |
OBCID |
+32 |
U32 |
ID classe OB di riferimento (0=nessuna)(#2,#3) |
ATTRIB |
+36 |
U32 |
Attributi della struttura: 0x00000001 Struttura riferita a classe OB (AREFOBC)(#2) 0x00000002 Struttura principale classe OB (AISOBC)(#2,#3) 0x00000004 Struttura (rif.a) definita esternamente (AEXTERNAL) |
MODIFIER |
+40 |
U32 |
Offset modificatori della struttura (relativo a stringhe compresse, o stringhe se NCF1). |
REFID |
+44 |
U32 |
ID di riferimento tipo struttura (#4). |
EXTNAME |
+48 |
U32 |
Offset nome esterno struttura (relativo a stringhe). |
|
+52 |
U8[16] |
(riservati) |
(#1) La definizione di struttura usa una normale tabella di definizione variabili per definire i propri elementi. In questo caso gli ID delle variabili non hanno senso e dovrebbero essere sempre a 0.
(#2) A pari valore di OBCID non 0, con attributo AREFOBC, può esistere una sola struttura con flag AISOBC, mentre posso essere 0 o più strutture senza attributo AISOBC.
(#3) Una struttura viene definita "orfana" qualora si trova nella condizione di attributi AREFOBC impostato e campo OBCID = 0: questa condizione capita quando aggiornando/rimuovendo una classe OB, vi sono ancora delle variabili (o altro) che vi fanno riferimento.
(#4) In caso di attributo AREFOBC il campo REFID contiene l'ID della struttura come definito del file OBB di origine (0 in case di attributo AISOBC).