跳至內容

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_PoolSimple_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 節中定義的語義相同,只是將術語“簡單儲存池”替換為“儲存池”。

華夏公益教科書