|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 16384 (0x4000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package Element_Cache, pragma Module_Name 4 3593, pragma Segmented_Heap Handle, pragma Segmented_Heap Key_Iterator, pragma Subsystem Design_Facility, seg_028ad7
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Action; with Ada_Program; with Directory; with Errors; package Element_Cache is subtype Element is Ada_Program.Element; subtype Element_List is Ada_Program.Element_List; type Handle is limited private; type Modes is (Create, Read, Update); -------------------------- -- Old Style Interfaces -- -------------------------- -- These interfaces are obsolete and their use is discouraged. The -- preferred interfaces are declared below function Debug_Image. procedure Open (Cache : in out Handle; Mode : Modes; Name : String); procedure Close (Cache : in out Handle); procedure Destroy (Cache : in out Handle); subtype Key is String; procedure Add (An_Element : Element; To_Cache : in out Handle; With_Key : Key); procedure Remove (An_Element : Element; From_Cache : in out Handle; With_Key : Key); procedure Add (An_Element_List : Element_List; To_Cache : in out Handle; With_Key : Key); procedure Remove (An_Element_List : Element_List; From_Cache : in out Handle; With_Key : Key); procedure Retrieve (Elements : out Element_List; From_Cache : Handle; With_Key : Key; In_Context : String := "<DEFAULT>"); -- -- This operation does not raise FAILED when errors are detected -- during the retrieval of ELEMENTS from FROM_CACHE. Instead, as -- many valid elements as possible are retieved and placed in -- ELEMENTS. When the complete success of the retrieval operation -- must be known, STATUS and DIAGNOSIS can be queried after the call -- to RETRIVE in order to determine if any problems were encountered -- during the operation. Failed : exception; -- -- FAILED is raised when any of the above operations -- cannot be successfully completed. STATUS and DIAGNOSIS -- may be used to obtain additional information about the -- nature of the failure. function Diagnosis return String; function Status return Errors.Condition; function Debug_Image (Of_Handle : Handle; Level : Natural; Prefix : String; Expand_Pointers : Boolean) return String; -------------------------- -- Preferred Interfaces -- -------------------------- -- The following subprograms provide the same functionality as their -- overloaded counterparts above, except that these subprograms -- provide a STATUS parameter where appropriate and generally do not -- raise the FAILED exception. procedure Open (Cache : in out Handle; Mode : Modes; Name : String; Status : in out Errors.Condition; Action_Id : Action.Id := Action.Null_Id); -- -- When ACTION_ID = ACTION.NULL_ID, an action managed by the -- job is used by the open, and is finished as appropriate at -- the end of the job. When ACTION_ID /= ACTION.NULL_ID, -- ACTION_ID is used in subsequent operations and should be -- finished by the client which started it. procedure Close (Cache : in out Handle; Status : in out Errors.Condition); procedure Destroy (Cache : in out Handle; Status : in out Errors.Condition); type Storage_Formats is (Fully_Qualified, Subsystem_Relative, View_Relative); -- -- Type STORAGE_FORMATS determines how elements are -- represented in the cache. The permanent representation -- used in the caches is equivalent to that provided in the -- Ada_Program.Conversion.Convert operations. A summary of -- the storage formats is provided below. -- -- FULLY_QUALIFIED => The element's fully qualified resolution -- is stored. This format is useful for -- elements from non-subsystem contexts or -- when subsystem/view information must be -- saved. -- -- SUBSYSTEM_RELATIVE => The resolution of the element is subsystem -- relative. The subsystem name along with -- an SPEC/LOAD view indication are stored. -- This format is useful for elements in -- subystem contexts when retreival is desired -- in a potentially different view context. See -- the IN_CONTEXT parameter on procedure RETRIEVE -- below. -- -- VIEW_RELATIVE => The resolution of the element is completely -- view relative. No subsystem or SPEC/LOAD -- indication is stored. This format is useful -- for elements in subsystem contexts which will -- ALWAYS be retrieved in a particular -- subsystem/view pair. procedure Add (An_Element : Element; To_Cache : in out Handle; With_Key : Key; Status : in out Errors.Condition; Format : Storage_Formats := Element_Cache.Subsystem_Relative); -- -- Stores AN_ELEMENT in TO_CACHE under WITH_KEY in FORMAT -- representation. If AN_ELEMENT was previously ADD'ed -- with the same parameters, this operation is a no-op. -- When a single element is ADD'ed to the same cache with -- different values for the FORMAT parameter, separate -- entries for each given format are stored. -- -- NOTE: In order to REMOVE a given element from the cache, -- the same values for WITH_KEY and FORMAT must be provided. procedure Remove (An_Element : Element; From_Cache : in out Handle; With_Key : Key; Status : in out Errors.Condition; Format : Storage_Formats := Element_Cache.Subsystem_Relative); -- -- Removes AN_ELEMENT stored under WITH_KEY from FROM_CACHE in -- FORMAT representation. When AN_ELEMENT is not stored under -- WITH_KEY in the specified FORMAT, UNDEFINED_ELEMENT is returned -- in STATUS. When WITH_KEY is not defined in FROM_CACHE, -- UNDEFINED_KEY is returned in STATUS. procedure Add (An_Element_List : Element_List; To_Cache : in out Handle; With_Key : Key; Status : in out Errors.Condition; Format : Storage_Formats := Element_Cache.Subsystem_Relative); -- -- Equivalent to single element ADD as defined above on each -- element in AN_ELEMENT_LIST. procedure Remove (An_Element_List : Element_List; From_Cache : in out Handle; With_Key : Key; Status : in out Errors.Condition; Format : Storage_Formats := Element_Cache.Subsystem_Relative); -- -- Equivalent to single element REMOVE as defined above on each -- element in AN_ELEMENT_LIST. procedure Retrieve (Elements : out Element_List; From_Cache : Handle; With_Key : Key; Status : in out Errors.Condition; Format : Storage_Formats := Element_Cache.Subsystem_Relative; In_Context : String := "<DEFAULT>"); -- -- Restores the ELEMENTS that were saved in FROM_CACHE under -- WITH_KEY in FORMAT representation. The IN_CONTEXT parameter -- determines how the resolution of saved elements will be -- performed. In all cases, if the elements were saved in -- FULLY_QUALIFED format this parameter is ignored. Otherwise, the -- following algorithm is followed. -- -- <DEFAULT> => For elements saved in SUBSYSTEM_RELATIVE format, -- the view selected by the current activity and -- the stored subsystem is used as the origin. The -- spec or load origin of the representation is -- used to choose the specific view. For elements -- saved in VIEW_RELATIVE format, the current view -- context is used as the origin. -- -- Subsystem Name => For elements saved in SUBSYSTEM_RELATIVE format, -- this behaves the same as <DEFAULT>. For elements -- saved in VIEW_RELATIVE format, the view selected -- by the current activity for the given subsystem -- is used. The subsystem name can be followed by -- "'SPEC" or "'LOAD" to force use of the spec view -- or load view from the activity; DEFAULT: Spec View -- -- View Name => For elements saved in SUBSYSTEM_RELATIVE format, -- if the subsystem enclosing the given view name -- matches the representation's subsystem, the -- given view is used. Otherwise, this behaves -- the same as <DEFAULT>. For elements saved in -- VIEW_RELATIVE format the specified view is used. ---------------------- -- Cache Compaction -- ---------------------- procedure Compactify (The_Cache : in out Handle; Status : in out Errors.Condition); -- -- Reorganizes cache data structures into a more optimal format. -- Assert => MODE (THE_CACHE) /= READ. -------------------------- -- Cache Handle Queries -- -------------------------- function Is_Open (Cache : Handle) return Boolean; function Mode (Of_Cache : Handle) return Modes; -- -- Raises FAILED when not IS_OPEN (OF_CACHE) function Name (Of_Cache : Handle) return String; -- -- Raises FAILED when not IS_OPEN (OF_CACHE) function Object_Id (Of_Cache : Handle) return Directory.Object; -- -- Raises FAILED when not IS_OPEN (OF_CACHE) ------------------- -- Key Iterators -- ------------------- -- The following type and operations provide a means of -- iterating over the set of keys defined for a given cache. type Key_Iterator is private; procedure Initialize (Iterator : in out Key_Iterator; From_Cache : Handle); function Done (Iterator : Key_Iterator) return Boolean; function Value (Of_Iterator : Key_Iterator) return Key; procedure Next (The_Iterator : in out Key_Iterator); ------------------------------ -- Predefined Status Values -- ------------------------------ Undefined_Element : constant Errors.Error_Kinds := Errors.Make ("UNDEFINED_ELEMENT", Errors.Warn); Undefined_Key : constant Errors.Error_Kinds := Errors.Make ("UNDEFINED_KEY", Errors.Warn); pragma Subsystem (Design_Facility, Closed); pragma Module_Name (4, 3593); pragma Bias_Key (27); private type Handle_Data; type Handle is access Handle_Data; pragma Segmented_Heap (Handle); type Key_Data; type Key_Iterator is access Key_Data; pragma Segmented_Heap (Key_Iterator); end Element_Cache;
nblk1=f nid=0 hdr6=1e [0x00] rec0=25 rec1=00 rec2=01 rec3=04a [0x01] rec0=00 rec1=00 rec2=0f rec3=00c [0x02] rec0=17 rec1=00 rec2=02 rec3=03a [0x03] rec0=1c rec1=00 rec2=03 rec3=026 [0x04] rec0=00 rec1=00 rec2=0e rec3=006 [0x05] rec0=17 rec1=00 rec2=04 rec3=050 [0x06] rec0=13 rec1=00 rec2=05 rec3=014 [0x07] rec0=11 rec1=00 rec2=06 rec3=066 [0x08] rec0=14 rec1=00 rec2=07 rec3=084 [0x09] rec0=15 rec1=00 rec2=08 rec3=05a [0x0a] rec0=15 rec1=00 rec2=09 rec3=04e [0x0b] rec0=0e rec1=00 rec2=0a rec3=096 [0x0c] rec0=1b rec1=00 rec2=0b rec3=05a [0x0d] rec0=1f rec1=00 rec2=0c rec3=042 [0x0e] rec0=17 rec1=00 rec2=0d rec3=000 tail 0x21521170a83c24752fa86 0x42a00088462065003