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,5992229ab824d8f7 X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Q: on redefinition of "= Date: 1996/04/02 Message-ID: #1/1 X-Deja-AN: 145472938 references: <4jkj5sINN8d3@aleutian.cis.ohio-state.edu> <4jrlluINN15b@thalamus.cis.ohio-state.edu> <4jrsumINN9m0@snoopy.cis.ohio-state.edu> organization: The World Public Access UNIX, Brookline, MA newsgroups: comp.lang.ada Date: 1996-04-02T00:00:00+00:00 List-Id: In article <4jrsumINN9m0@snoopy.cis.ohio-state.edu>, david scott gibson wrote: >The strategy I'm currently working with uses null-bodied Initialize >and Finalize routines for wrapped scalars. I provide an initial value >with a record component initialization. So why use a controlled type? Perhaps because *some* of your types need Initialize or Finalize, and you want to inherit from a single root type which has Swap. Well, I wonder if you could have a non-controlled root type with Swap, and extend it with controlled components in the cases where you need that functionality? >... The lack of a valid >representation is the problem, however, not the lack of a specific >initial value for scalars. Since the representations don't have any >controlled sub-components, I'm assuming that the Initialize and >Finalize calls for wrapped scalars can be optimized away. They can, so long as you don't have class-wide stuff. But I doubt if they *are*, in a typical compiler. >...I realize >the tagged types will require more storage, but does GNAT's >implementation entail an additional performance penalty in this >situation? I believe so. Every controlled object will be hooked onto a chain (doubly-linked, I think), of controlled objects. >>Also, a plain old (non-controlled) record type can have automatic >>initialization for its components. > >Yes, I've still got this implementation around. It suffers from all >of the same type conversion annoyances and requires explicit >importation of Swap everywhere. ...or use "is <>" default for Swap. >... However, it should be more efficient. >Once GNAT is compiling everything, I'll do some performance >comparisons and get an idea of just how costly the tagged scalars >implementation is. - Bob