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=0.6 required=5.0 tests=BAYES_00,TO_NO_BRKTS_FROM_MSSP autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ac2397ce800de518 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-09-04 11:53:15 PST Path: archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!feed.textport.net!newsranger.com!www.newsranger.com!not-for-mail Newsgroups: comp.lang.ada From: Ted Dennison References: <20010904115244.24236db3.tonygair@blueyonder.co.uk> <1v6l7.3307$4z.6132@www.newsranger.com> Subject: Re: adasockets and adatypes Message-ID: X-Abuse-Info: When contacting newsranger.com regarding abuse please X-Abuse-Info: forward the entire news article including headers or X-Abuse-Info: else we will not be able to process your request X-Complaints-To: abuse@newsranger.com NNTP-Posting-Date: Tue, 04 Sep 2001 14:53:06 EDT Organization: http://www.newsranger.com Date: Tue, 04 Sep 2001 18:53:06 GMT Xref: archiver1.google.com comp.lang.ada:12713 Date: 2001-09-04T18:53:06+00:00 List-Id: In article , David C. Hoos says... >From: "Ted Dennison" >One can't. That's why when stream format is important, one should define >his own types -- although I've never found a reason not to use the language- For a single-developer app that might be a good way to handle it. But in many situations this is just not a feasible solution. For a non-trivial systems its a *lot* of work to redefine every IO attribute for every type. Some *can't* easily be redefined (I think 'Class'Output is like this). Let's also not forget that we've now distributed responsibility for the I/O working properly out to every single author and maintainer of every single type in the system. >> If you only have 2 implementations to get talking, it is fairly easy to >> massage one end until it talks like the other. That isn't the same thing as >> true portability. >I agree. one should define what the stream should look like from the >beginning. >For example, for Annex E, GNAT uses the XDR format defined by Sun. Ahhh. That's a very good example, in that they shared a small part of this problem. They still don't have to worry about differing vendor implementations, but they at least had to worry about different platforms. They solved this smaller problem by creating a special package that contains all the routines that will be used by the base type's IO attributes to construct their stream representations. Users can then override this package with one of their own devising (including the XDR-based one that comes with GLADE). Its cool that they did this, but this kind of hook into the inner workings of the compiler is most definitely *not* part of the Ada standard. It should go without saying that it won't come close to working with any other compiler. Perhaps that issue should be addressed for a future language revision. However, for now there is clearly no good way to accomplish general stream data portability within Ada. Your only alternatives today are to subset the problem into one of: o - portability when only using Gnat with the XDR version of System.Stream_Attributes installed o - portability when only using a certian subset of types o - portability between n specific compilers/platforms (n > 2 only for masochists) --- T.E.D. homepage - http://www.telepath.com/dennison/Ted/TED.html home email - mailto:dennison@telepath.com