From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d1df6bc3799debed X-Google-Attributes: gid103376,public From: eachus@spectre.mitre.org (Robert I. Eachus) Subject: Re: Syntax for tagged record types (was Re: Not intended for use in medical,) Date: 1997/05/22 Message-ID: #1/1 X-Deja-AN: 243133881 Distribution: world References: <3.0.32.19970423164855.00746db8@mail.4dcomm.com> <5kl9qc$g4d@bcrkh13.bnr.ca> <5kmek2$9re@bcrkh13.bnr.ca> <33727FA5.5C7A@sprintmail.com> <3374C19F.15FE@sprintmail.com> <3376CF85.3E15@sprintmail.com> <33828299.2A3@world.std.com> Organization: The Mitre Corp., Bedford, MA. Newsgroups: comp.lang.ada Date: 1997-05-22T00:00:00+00:00 List-Id: In article mheaney@ni.net (Matthew Heaney) writes: > Here is what I'd like to do: > declare > The_File : File_Type'Open (Name => "my_file.dat", Mode => In_Mode); > begin > Renaming a function return as a constant object won't fly, because > I have to modify the object. Ada works the same as C and C++ here, but the notation is different. Adding the Ada style of naming a type whenever possible you get: package New_IO is type File_Type is limited private; type File_Access is access all New_IO.File_Type; ... end New_IO; declare The_File: New_IO.File_Access := New_IO.Open(Name => "my_file.dat", Mode => In_Mode)'Access; begin No reason you can't write that package if you want. I would have the Open return a File_Access value, and would either have garbage collection semantics (via reference counts) for File_Type, or just not make it visible at all. But those are just details. -- Robert I. Eachus with Standard_Disclaimer; use Standard_Disclaimer; function Message (Text: in Clever_Ideas) return Better_Ideas is...