Struct 型別定義.
Struct 中的 Property 都應該為完全抽像 (Abstract) 的, 因為當使用者將一個 Struct 物件指向某個位元陣列後, 再存取該 Struct 物件的 Property 時, 其資料應被讀自與儲存於被指向的位元陣列中, 而相關的儲存或讀取動作應由 Eva_Struct 實行, 使用者預先提供的 Property 預設行為, 與預設的儲存空間都是沒有意義的.
下列範例中的 E 介面, 即是一個合格的 Struct 型別, 首先, 它以 @Struct 做為標記, 並且在各個 Properties 上以 @FieldSeq 去標記, @FieldSeq 指示該 Property 於儲存體中分配空間時的順序. 因為 Java 類別內的方法是沒有順序性的, 所以這個標記是必要的. 接著, 因為 Eva_Struct 能夠支援的 Property 型別比 C 語言中 struct 能支援的還多, 而有些型別的所佔用空間大小是變動的, 所以需要額外的標記, 像是陣列型別的 Property 需要再用 @Dimension 標記, 不固定長度的型別, 如 String, 的 Property 需要再用 @Bytes 標記, 而最後, 因為 Struct 的 Property 需全為抽象的, 無法設定預設值, 故若有預設值的需求需用 @DefaultValue 標記出來.
下列範例中的 E 介面, 即是一個合格的 Struct 型別, 首先, 它以 @Struct 做為標記, 並且在各個 Properties 上以 @FieldSeq 去標記, @FieldSeq 指示該 Property 於儲存體中分配空間時的順序. 因為 Java 類別內的方法是沒有順序性的, 所以這個標記是必要的. 接著, 因為 Eva_Struct 能夠支援的 Property 型別比 C 語言中 struct 能支援的還多, 而有些型別的所佔用空間大小是變動的, 所以需要額外的標記, 像是陣列型別的 Property 需要再用 @Dimension 標記, 不固定長度的型別, 如 String, 的 Property 需要再用 @Bytes 標記, 而最後, 因為 Struct 的 Property 需全為抽象的, 無法設定預設值, 故若有預設值的需求需用 @DefaultValue 標記出來.
package struct;
|
而下面一個 BitStruct 類別的定義就如同 Struct 類別的情況, 類別需以 @BitStruct 標記, 且在下例中, 該標記還設定了將以 BIG_ENDIAN 的方式去存取資料. 而 BitStruct 中的每個 Property 還需要 @Bits 標記來說明所佔用的空間大小.
package struct;
|