針對每一個鏈結類型而產生適當的存取元及轉換元作業,是取決於用來實作的儲存器而定。可透過角色內容來修改實作關係的預設值。
依預設,會將指向多個物件的依序鏈結實作為 RiCList。將 CG::Relation::Ordered 內容設定為 Checked,可將對多鏈結設定排序。 此排序包括的關係有已知對應關係(有限依序關係)與未知對應關係(無界限的依序關係)。
依預設,會將指向多個物件的未排序鏈結實作為 RiCCollection。將 Ordered 內容設定為 Cleared,可將對多鏈結設定未排序。 此鏈結包括的關係有已知對應關係(有限未排序關係)與未知對應關係(無界限未排序關係)。
當子物件的對應關係是 1(內嵌的純量關係)時,將子物件鏈結實作為內嵌的資料成員,或當子物件的對應關係是大於 1 的數值(內嵌的固定關係)時,將子物件鏈結實作為陣列。
例如,HomeHeatingSystem 物件有一個名為 itsFurnace 的子物件,以及三個名為 itsRoom 的子物件,全部都內嵌作為元件。在此情況下,對於 HomeHeatingSystem,theFurnace 與其有一個內嵌的純量關係,而 theRooms 與其有一個內嵌的固定關係。 這些關係可實作如下:
struct HomeHeatingSystem {
/*** User implicit entries ***/
struct Furnace theFurnace;
struct Room theRooms[3];
};
您可以針對純量關係將 CG::Relation::Implementation 內容設定為 Scalar,或針對固定關係設定為 Fixed,以達到相同的效果。 這些關係類型實作僅適用於下列兩種狀況:
隨機存取鏈結是個已加強的關係,提供權限可對儲存器中的項目進行隨機存取。 您可以將角色的 C_CG::Relation::GetAt 內容設定 Checked,以授與對多鏈結隨機存取的權限。同時必須將 C_CG::Relation::GetAtGenerate 內容設定為 Checked。這個設定會產生角色的存取元,針對儲存器使用適當的 getAt() 方法。將 $index 關鍵字作為參數傳遞至 getAt() 方法,以存取儲存器內的特定元素。$index 的預設值是 inti。
RiCList_getAt(&$me$cname, $index)
將 theRooms 的 GetAt 內容設定為 Checked,會導致在 HomeHeatingSystem 產生下列存取元,以存取特定的 Room:
struct Room * HomeHeatingSystem_getTheRooms(
const HomeHeatingSystem* const me, int i) {
return RiCList_getAt(&me->theRooms, i);
}