Здравствуйте !
Пытаюсь заменить предопределённый атрибут Write на собственный.
Написал :
with Ada.Streams;
procedure Stream is
type Date is record
Day : Integer;
end record;
procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date) is
begin
Integer'Write (Stream, Item.Day);
end Date_Write;
for Date'Write use Date_Write;
begin
null;
end Stream;
При компиляции получаю :
stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4
stream.adb:13:09: representation item appears too late
Как это правильно сделать ?
--
Саша
Александр Никольников wrote:
При компиляции получаю :
stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4
stream.adb:13:09: representation item appears too late
Как это правильно сделать ?
type Date is record
Day : Integer;
end record;
procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date);
for Date'Write use Date_Write;
procedure Date_Write (Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in Date) is
begin
Integer'Write (Stream, Item.Day);
end Date_Write;
А ещё лучше вынести объявление типа в отдельный пакет.
PS. Если кратко, то секрет здесь в том, что объявить какую либо особенность типа можно только до первого использования типа.
-- Vadim Godunko
Technoserv A/S
Rostov-on-Don, Russia
On Wed, Aug 31, 2005 at 03:55:44PM +0400, Vadim Godunko wrote:
Александр Никольников wrote:
При компиляции получаю :
stream.adb:4:09: warning: no more representation items for type "Date" defined at line 4
stream.adb:13:09: representation item appears too late
Как это правильно сделать ?
type Date is record
Day : Integer;
end record;
procedure Date_Write (Stream : access
Ada.Streams.Root_Stream_Type'Class; Item : in Date);
for Date'Write use Date_Write;
procedure Date_Write (Stream : access
Ada.Streams.Root_Stream_Type'Class; Item : in Date) is
begin
Integer'Write (Stream, Item.Day);
end Date_Write;
А ещё лучше вынести объявление типа в отдельный пакет.
PS. Если кратко, то секрет здесь в том, что объявить какую либо особенность типа можно только до первого использования типа.
Спасибо. Уже разобрался ;)
--
Саша
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти