| -- CA110041.A |
| -- |
| -- Grant of Unlimited Rights |
| -- |
| -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, |
| -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained |
| -- unlimited rights in the software and documentation contained herein. |
| -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making |
| -- this public release, the Government intends to confer upon all |
| -- recipients unlimited rights equal to those held by the Government. |
| -- These rights include rights to use, duplicate, release or disclose the |
| -- released technical data and computer software in whole or in part, in |
| -- any manner and for any purpose whatsoever, and to have or permit others |
| -- to do so. |
| -- |
| -- DISCLAIMER |
| -- |
| -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR |
| -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED |
| -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE |
| -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE |
| -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A |
| -- PARTICULAR PURPOSE OF SAID MATERIAL. |
| --* |
| -- |
| -- OBJECTIVE: |
| -- See CA110042.AM |
| -- |
| -- TEST DESCRIPTION: |
| -- See CA110042.AM |
| -- |
| -- TEST FILES: |
| -- The following files comprise this test: |
| -- |
| -- CA110040.A |
| -- => CA110041.A |
| -- CA110042.AM |
| -- |
| -- CHANGE HISTORY: |
| -- 06 Dec 94 SAIC ACVC 2.0 |
| -- 26 Apr 96 SAIC ACVC 2.1: Modified prologue. |
| -- |
| --! |
| |
| package CA110040.CA110041 is -- Child Package Computer_System.Manager |
| |
| type User_Account is new Account with private; |
| |
| procedure Initialize_User_Account (Acct : out User_Account); |
| |
| private |
| |
| -- The private portion of this spec demonstrates that components contained |
| -- in the visible part of the parent are directly visible in the private |
| -- part of a public child. |
| |
| type Account_Access_Type is (None, Guest, User, System); |
| |
| type User_Account is new Account with -- Parent type. |
| record |
| Privilege : Account_Access_Type := None; |
| end record; |
| |
| System_Account : User_Account := |
| (User_ID => Administrator_Account.User_ID, -- Parent constant. |
| Privilege => System); -- User_ID has been |
| -- set to 1. |
| Auditor_Account : User_Account := |
| (User_ID => Next_Available_ID, -- Parent function. |
| Privilege => System); -- User_ID has been |
| -- set to 2. |
| Total_Authorized_Accounts : System_Account_Capacity |
| renames Total_Accounts; -- Parent object. |
| |
| Unauthorized_Account : exception |
| renames Illegal_Account; -- Parent exception |
| |
| end CA110040.CA110041; -- Child Package Computer_System.Manager |
| |
| --=================================================================-- |
| |
| -- Child Package body Computer_System.Manager |
| package body CA110040.CA110041 is |
| |
| function Account_Limit_Reached return Boolean is |
| begin |
| if Total_Authorized_Accounts = Maximum_System_Accounts then |
| return (True); |
| else |
| return (False); |
| end if; |
| end Account_Limit_Reached; |
| --------------------------------------------------------------- |
| function Valid_Account (Acct : User_Account) return Boolean is |
| Result : Boolean := False; |
| begin |
| if (Acct.User_ID /= System_Account.User_ID) and |
| (Acct.User_ID /= Auditor_Account.User_ID) |
| then |
| Result := True; |
| end if; |
| return (Result); |
| end Valid_Account; |
| --------------------------------------------------------------- |
| procedure Initialize_User_Account (Acct : out User_Account) is |
| begin |
| if Account_Limit_Reached then |
| raise Account_Limit_Exceeded; |
| else |
| Acct.User_ID := Next_Available_ID; |
| Acct.Privilege := User; |
| end if; |
| if not Valid_Account (Acct) then |
| raise Unauthorized_Account; |
| end if; |
| end Initialize_User_Account; |
| |
| end CA110040.CA110041; -- Child Package body Computer_System.Manager |