Ada 程式設計/屬性/'簡單儲存池
對於每個非形式、非派生的指向物件的訪問型別 Acc,表示屬性 Simple_Storage_Pool 可以透過屬性定義子句(或透過指定等效方面)來指定。
My_Pool : My_Simple_Storage_Pool_Type;
type Acc is access My_Data_Type;
for Acc'Simple_Storage_Pool use My_Pool;
在屬性定義子句中為 Simple_Storage_Pool 屬性給出的名稱應表示一個“簡單儲存池型別”的變數(請參見 pragma)。
此屬性的使用僅允許用於表示為其指定了此屬性的型別的名字首。屬性的型別是指定為訪問型別的簡單儲存池的變數的型別,並且該屬性表示該變數。
為同一個訪問型別同時指定 Storage_Pool 和 Simple_Storage_Pool 是非法的。
如果已為訪問型別指定了 Simple_Storage_Pool 屬性,則將 Storage_Pool 屬性應用於該型別時會發出警告,並且其計算將引發異常 Program_Error。
如果已為訪問型別 S 指定了 Simple_Storage_Pool 屬性,則計算屬性 S'Storage_Size 將返回呼叫 Storage_Size (S'Simple_Storage_Pool) 的結果,這旨在指示為簡單儲存池保留的儲存元素數量。如果未為簡單儲存池型別定義 Storage_Size 函式,則此屬性將返回零。
如果訪問型別 S 具有指定為型別 SSP 的簡單儲存池,則計算該訪問型別的分配器將呼叫型別 SSP 的基本 Allocate 過程,將 S'Simple_Storage_Pool 作為池引數傳遞。此類分配器的詳細語義與 Ada 參考手冊第 13.11 節中為分配器定義的語義相同,只是將術語“簡單儲存池”替換為“儲存池”。
如果訪問型別 S 具有指定為型別 SSP 的簡單儲存池,則對該訪問型別的 Ada.Unchecked_Deallocation 例項的呼叫將呼叫型別 SSP 的基本 Deallocate 過程,將 S'Simple_Storage_Pool 作為池引數傳遞。此類未檢查的釋放的詳細語義與 Ada 參考手冊第 13.11.2 節中定義的語義相同,只是將術語“簡單儲存池”替換為“儲存池”。