stacks.adb

来自「Ada 2005 Training Notes.」· ADB 代码 · 共 65 行

ADB
65
字号
with Ada.Text_IO;use Ada.Text_IO;with Ada.Numerics;with LimitedPrivateType;package body Stacks is   procedure Push(OS: in out Object_Stack'Class; OCA: Object_Class_Ptr) is   begin      if OS.Top = Max then         Put_Line("Stack is full Top = " & Integer'Image(OS.Top));         return;      end if;      OS.Top := OS.Top +1;      OS.S(OS.Top) := OCA;   end Push;   function "=" (First_OS, Second_OS: Object_Stack'Class) return Boolean is   begin      if First_OS.Top /= Second_OS.Top then         return False;      end if;      for Idx in 1 .. First_OS.Top loop         if First_OS.S(Idx) /= Second_OS.S(Idx) then            return False;         end if;      end loop;      return True;   end "=";   function Area(C: in Circle) return Float is      PI: constant := 3.14;   begin      return PI * C.Radius ** 2;   end Area;   function Distance(OC: Object'Class) return Float is   begin      -- return Ada.Numerics.Sqrt(OC.X ** 2 + OC.Y** 2);      return 0.0;   end Distance;   procedure LimitedPrivateTypeCannotBeAssigned(P: LimitedPrivateType.PrivateCell) is      -- L: LimitedPrivateType.LimitedPrivateCell;   begin      Put_Line("LimitedPrivateTypeCannotBeAssigned");      -- Error: left hand of assignment must not be limited type      -- L := P;   end LimitedPrivateTypeCannotBeAssigned;   procedure LimitedPrivateTypeCanBeInitialized(P: LimitedPrivateType.LimitedPrivateCell) is      -- This is initialization with limited types      -- This is NOT copy (which is not allowed with limited types)      -- But initialization is allowed.      LPT: LimitedPrivateType.LimitedPrivateCell := LimitedPrivateType.Constructor(100);   begin      Put_Line("SubWithPrivateTypeCannotBeDeclated");   end LimitedPrivateTypeCanBeInitialized;end;

⌨️ 快捷键说明

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