당신은 당신이 뭘 하려는지 할 수 없어 적어도 w/subtype instance is implementation.file_type;
예에 의해 주어진 implementation
에 볼 수 의존 깨는 O :
private with Ada.Sequential_IO;
generic
type element_type is private;
package queue_file is
type instance is limited private;
function eofQ (channel : instance) return Boolean;
procedure readQ (channel : in instance; item : out element_type);
-- SUBPROGRAMS FOR SEQUENTIAL_IO INTERFACE --
procedure Open
(File : in out instance;
Name : String;
Write: Boolean;
Form : String := "");
procedure Read (File : instance; Item : out Element_Type);
procedure Write (File : instance; Item : Element_Type);
-- etc.
private
package implementation is new Ada.sequential_IO (element_type);
type instance is new implementation.file_type;
end queue_file;
및
Pragma Ada_2012;
package body queue_file is
function eofQ (channel : instance) return Boolean is
(implementation.end_of_file(implementation.File_Type(channel)));
procedure readQ (channel : in instance; item : out element_type) is
use implementation;
begin
implementation.read(File_Type(Channel), item);
end readQ;
procedure Open
(File : in out instance;
Name : String;
Write: Boolean;
Form : String := "") is
use implementation;
begin
Open(
File => File_Type(File),
Mode => (if Write then Out_File else In_File),
Name => Name,
Form => Form
);
end Open;
-- left as an exercise
procedure Read (File : instance; Item : out Element_Type) is null;
procedure Write (File : instance; Item : Element_Type) is null;
-- etc.
end queue_file;
을
'eofQ','readQ' 등의 서브 프로그램을 호출하지 않을 것입니다. 단지'eof','read'가 아닌가요? (또는 심지어'End_Of_File','Read'? :)) –
+1 Simon : 그것들이 명시 적으로 대기열 작업이고, 정규화 된 이름, queue_file.Read 등을 사용합니다. –
@Simon : Pascal 소스 코드를 자동으로 Ada로 번역합니다. 파스칼 이름 eof, read 등은 텍스트 유형의 객체 및 X 유형의 객체에 적용될 수 있기 때문에 오버로드됩니다. 관심이있을 경우 전체 세부 정보를 제공 할 수 있지만 응용 프로그램별로 다릅니다 . – Michael