f392c00.a

来自「linux下编程用 编译软件」· A 代码 · 共 268 行

A
268
字号
-- F392C00.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.--*---- FOUNDATION DESCRIPTION:--      This foundation provides a basis for tagged type and dispatching--      tests.  Each test describes the utilizations.---- CHANGE HISTORY:--      06 Dec 94   SAIC    ACVC 2.0--      24 OCT 95   SAIC    Updated for ACVC 2.0.1----!package F392C00_1 is  -- Switches  type Toggle is tagged private;    ---------------------------------- Toggle  function Create return Toggle;  procedure Flip   ( It : in out Toggle );  function On      ( It : Toggle'Class ) return Boolean;  function Off     ( It : Toggle'Class ) return Boolean;  type Dimmer is new Toggle with private;    ------------------------- Dimmer  type Luminance is range 0..100;  function  Create return Dimmer;  procedure Flip    ( It : in out Dimmer );  procedure Brighten( It : in out Dimmer;                      By : in Luminance := 10 );  procedure Dim     ( It : in out Dimmer;                      By : in Luminance := 10 );  function Intensity( It : Dimmer ) return Luminance;  type Auto_Dimmer is new Dimmer with private;    --------------- Auto_Dimmer  function  Create return Auto_Dimmer;  procedure Flip      ( It: in out Auto_Dimmer );  procedure Set_Auto  ( It: in out Auto_Dimmer );  procedure Clear_Auto( It: in out Auto_Dimmer );  -- procedure Set_Manual( It: in out Auto_Dimmer ) renames Clear_Auto;  procedure Set_Cutin ( It: in out Auto_Dimmer; Lumens: in Luminance );  procedure Set_Cutout( It: in out Auto_Dimmer; Lumens: in Luminance );  function Auto            ( It: Auto_Dimmer ) return Boolean;  function Cutout_Threshold( It: Auto_Dimmer ) return Luminance;  function Cutin_Threshold ( It: Auto_Dimmer ) return Luminance;  function TC_CW_TI( Key : Character ) return Toggle'Class;  function TC_Non_Disp( It: Toggle ) return Boolean;  function TC_Non_Disp( It: Dimmer ) return Boolean;  function TC_Non_Disp( It: Auto_Dimmer ) return Boolean;private  type Toggle is tagged record    On : Boolean := False;  end record;  type Dimmer is new Toggle with record    Intensity : Luminance := 100;  end record;    type Auto_Dimmer is new Dimmer with record    Cutout_Threshold : Luminance := 60;    Cutin_Threshold  : Luminance := 40;    Auto_Engaged     : Boolean := False;  end record;  end F392C00_1;with TCTouch;package body F392C00_1 is  function Create return Toggle is  begin    TCTouch.Touch( '1' );  ------------------------------------------------ 1    return Toggle'( On => True );  end Create;  function Create return Dimmer is  begin    TCTouch.Touch( '2' );  ------------------------------------------------ 2    return Dimmer'( On => True, Intensity => 75 );  end Create;  function Create return Auto_Dimmer is  begin    TCTouch.Touch( '3' );  ------------------------------------------------ 3    return  Auto_Dimmer'( On => True, Intensity => 25,                          Cutout_Threshold | Cutin_Threshold => 50,                          Auto_Engaged => True );  end Create;  procedure Flip   ( It : in out Toggle ) is  begin    TCTouch.Touch( 'A' );  ------------------------------------------------ A    It.On := not It.On;  end Flip;  function On( It : Toggle'Class ) return Boolean is  begin    TCTouch.Touch( 'B' );  ------------------------------------------------ B    return It.On;  end On;  function Off( It : Toggle'Class ) return Boolean is  begin    TCTouch.Touch( 'C' );  ------------------------------------------------ C    return not It.On;  end Off;  procedure Brighten( It : in out Dimmer;                      By : in Luminance := 10 ) is  begin    TCTouch.Touch( 'D' );  ------------------------------------------------ D    if (It.Intensity+By) <= Luminance'Last then      It.Intensity := It.Intensity+By;    else      It.Intensity := Luminance'Last;    end if;  end Brighten;  procedure Dim     ( It : in out Dimmer;                      By : in Luminance := 10 ) is  begin    TCTouch.Touch( 'E' );  ------------------------------------------------ E    if (It.Intensity-By) >= Luminance'First then      It.Intensity := It.Intensity-By;    else      It.Intensity := Luminance'First;    end if;  end Dim;  function Intensity( It : Dimmer ) return Luminance is  begin    TCTouch.Touch( 'F' );  ------------------------------------------------ F    if On(It) then      return It.Intensity;    else      return Luminance'First;    end if;  end Intensity;  procedure Flip    ( It : in out Dimmer ) is  begin    TCTouch.Touch( 'G' );  ------------------------------------------------ G    if On( It ) and (It.Intensity < 50) then      It.Intensity := Luminance'Last - It.Intensity;    else      Flip( Toggle( It ) );    end if;  end Flip;  procedure Set_Auto  ( It: in out Auto_Dimmer ) is  begin    TCTouch.Touch( 'H' );  ------------------------------------------------ H    It.Auto_Engaged := True;  end Set_Auto;  procedure Clear_Auto( It: in out Auto_Dimmer ) is  begin    TCTouch.Touch( 'I' );  ------------------------------------------------ I    It.Auto_Engaged := False;  end Clear_Auto;  function  Auto           ( It: Auto_Dimmer ) return Boolean is  begin    TCTouch.Touch( 'J' );  ------------------------------------------------ J    return It.Auto_Engaged;  end Auto;  procedure Flip     ( It: in out Auto_Dimmer ) is  begin    TCTouch.Touch( 'K' );  ------------------------------------------------ K    if It.Auto_Engaged then      if Off(It) then       Flip( Dimmer( It ) );      else       It.Auto_Engaged := False;      end if;    else      Flip( Dimmer( It ) );    end if;  end Flip;  procedure Set_Cutin ( It : in out Auto_Dimmer;                        Lumens : in Luminance) is  begin    TCTouch.Touch( 'L' );  ------------------------------------------------ L    It.Cutin_Threshold := Lumens;  end Set_Cutin;  procedure Set_Cutout( It : in out Auto_Dimmer;                        Lumens : in Luminance) is  begin    TCTouch.Touch( 'M' );  ------------------------------------------------ M    It.Cutout_Threshold := Lumens;  end Set_Cutout;  function Cutout_Threshold( It : Auto_Dimmer ) return Luminance is  begin    TCTouch.Touch( 'N' );  ------------------------------------------------ N    return It.Cutout_Threshold;  end Cutout_Threshold;  function Cutin_Threshold ( It : Auto_Dimmer ) return Luminance is  begin    TCTouch.Touch( 'O' );  ------------------------------------------------ O    return It.Cutin_Threshold;  end Cutin_Threshold;  function TC_CW_TI( Key : Character ) return Toggle'Class is  begin    TCTouch.Touch( 'W' );  ------------------------------------------------ W    case Key is      when 'T' | 't' => return Toggle'( On => True );      when 'D' | 'd' => return Dimmer'( On => True, Intensity => 75 );      when 'A' | 'a' => return Auto_Dimmer'( On => True, Intensity => 25,                                 Cutout_Threshold | Cutin_Threshold => 50,                                 Auto_Engaged => True );      when others => null;    end case;  end TC_CW_TI;  function TC_Non_Disp( It: Toggle ) return Boolean is  begin    TCTouch.Touch( 'X' );  ------------------------------------------------ X    return It.On;  end TC_Non_Disp;  function TC_Non_Disp( It: Dimmer ) return Boolean is  begin    TCTouch.Touch( 'Y' );  ------------------------------------------------ Y    return It.On;  end TC_Non_Disp;  function TC_Non_Disp( It: Auto_Dimmer ) return Boolean is  begin    TCTouch.Touch( 'Z' );  ------------------------------------------------ Z    return It.On;  end TC_Non_Disp;end F392C00_1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?