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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,5894fe67040038b X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-11-27 09:04:02 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.hanau.net!news-fra1.dfn.de!news-koe1.dfn.de!RRZ.Uni-Koeln.DE!uni-duisburg.de!not-for-mail From: Georg Bauhaus Newsgroups: comp.lang.ada Subject: Re: Attributes 'Version and 'Body_Version Date: Tue, 27 Nov 2001 17:04:01 +0000 (UTC) Organization: GMUGHDU Message-ID: <9u0h21$d1d$1@a1-hrz.uni-duisburg.de> References: <9s9iti$g$1@nh.pace.co.uk> <5ee5b646.0111081953.31e2633c@posting.google.com> <5ee5b646.0111121351.27897bc4@posting.google.com> <9trpj1$4e6v2$1@ID-25716.news.dfncis.de> <5ee5b646.0111251830.61aaa6be@posting.google.com> <9tsd63$4jjng$1@ID-25716.news.dfncis.de> <5ee5b646.0111260742.2a0d9357@posting.google.com> <9tu7nj$4v9lc$1@ID-25716.news.dfncis.de> NNTP-Posting-Host: l1-hrz.uni-duisburg.de X-Trace: a1-hrz.uni-duisburg.de 1006880641 13357 134.91.4.34 (27 Nov 2001 17:04:01 GMT) X-Complaints-To: usenet@news.uni-duisburg.de NNTP-Posting-Date: Tue, 27 Nov 2001 17:04:01 +0000 (UTC) User-Agent: tin/1.5.8-20010221 ("Blue Water") (UNIX) (HP-UX/B.11.00 (9000/800)) Xref: archiver1.google.com comp.lang.ada:17051 Date: 2001-11-27T17:04:01+00:00 List-Id: Nick Roberts (:) and Robert Dewar debate: :> There is no point in using the same attribute :> name for two different purposes. : : Yes there is: simplicity. :> > Far be it from me to wish to perpetuate any confusion, :> You can cure someones confusion with documentation [iff...] I find the level of confusion in the thread unsatisfying, in that it is at most at O(1). So let me add some loosely related 2c. Or make that 2 centimes belgique :-) package Versions is -- provide versions at run time, for a change, or maybe not type Version is -- to be attached to objects record Version: Natural; -- XXX provide a decent Version type instead of a Natural -- type for versions end record; type Versioned_Versions is (Versi_On, Versi_Off); -- for toggling versioned versions of Version objects -- See Version below. procedure Which_Version(Want_Versioned_Version: Versioned_Versions); -- toggle versioning feature generic Max_Version: in Natural; -- no more than this number of Versions package Versioning is function Version (V: Version) return Version; -- versions V such that Version V has a Versions.Version iff this feature -- has been turned on with Version (See Version above above). end Versioning; end Versions; package body Versions is VV: Versioned_Versions:= Versi_Off; -- modus operandi -- ---------------- -- Which_Version -- ---------------- -- adjust the state variable VV to have the same value as -- Want_Versioned_Version procedure Which_Version(Want_Versioned_Version: Versioned_Versions) is begin VV:= Want_Versioned_Version; end Which_Version; package body Versioning is protected Versigen is -- new version numbers are assigned here up -- to a limit XXX remove the limit entry Next; -- can't proceed when no more versioning could -- possibly be done XXX Add Free(Ver: Natural) -- (No, neither free the storage, nor Free the storage) function Current return Natural; private Ver: Natural:= 0; end Versigen; protected body Versigen is entry Next when Ver < Max_Version is begin Ver:= Natural'Succ(Ver); end Next; function Current return Natural is begin return Ver; end Current; end Versigen; ------------- -- Version -- ------------- function Version (V: Versions.Version) return Versions.Version is Result: Versions.Version; begin if VV = Versi_On then Want_Versioning: declare Wanted_Version: Natural; begin Versigen.Next; Wanted_Version:= Versigen.Current; Result:= (Version => Wanted_Version); end Want_Versioning; else -- Versi_off Result:= V; end if; return Result; end Version; end Versioning; end Versions;