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=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: "Jeffrey R. Carter" Newsgroups: comp.lang.ada Subject: Re: Running a preprocessor from GPS? Date: Sat, 1 Aug 2015 09:53:15 -0700 Organization: Also freenews.netfront.net; news.tornevall.net; news.eternal-september.org Message-ID: References: <2df4698f-4c8e-457c-822d-209cb2f8ab5e@googlegroups.com> <014427b1-ff7a-4a69-82e6-0330af77ed96@googlegroups.com> <91f88d79-197c-419f-84a8-908e05967a2c@googlegroups.com> <135c2b00-d13c-4f5d-a586-8aca442d363b@googlegroups.com> <87380683vc.fsf@adaheads.sparre-andersen.dk> <347c6be9-c918-4bc0-9494-c93cd6740def@googlegroups.com> <4cb32c40-f659-490d-bbb6-73585fc069e8@googlegroups.com> <7e653a88-e690-431a-9df9-3fc691466e08@googlegroups.com> <25e8deb9-a967-4856-97cb-4257e1ba7fa4@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Injection-Date: Sat, 1 Aug 2015 16:51:44 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="ee44d3db9c41f5ad88d7e8e8f0268f05"; logging-data="25384"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/ym0Ci//I+YIqE9NJ6lvMsuXjkXkdC3Lc=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 In-Reply-To: <25e8deb9-a967-4856-97cb-4257e1ba7fa4@googlegroups.com> Cancel-Lock: sha1:Wz9onoBKjFbRS5KFVcpAIfBxWTE= X-Enigmail-Draft-Status: N1110 Xref: news.eternal-september.org comp.lang.ada:27300 Date: 2015-08-01T09:53:15-07:00 List-Id: On 08/01/2015 01:06 AM, EGarrulo wrote: > > I can't see how Ada lets you postpone the creation of a singleton until a time > of your choosing, without resorting to Get_Instance. What is the equivalent of > this code: > > if Some_Condition then > Singleton := Singleton_Package.Get_Instance; > -- Use singleton. > end if; The Ada equivalent is if Some_Condition then -- Call operations of Singleton_Package end if; You don't have a variable for a singleton; the pkg is the singleton. The need for a variable in other languages is why this "pattern" is a workaround for the lack of modules in those languages. If for some reason your application has a requirement that the storage for the state of the pkg not be allocated until the first use of the pkg, then the implementation of the pkg can allocate that storage the 1st time the pkg is used. The clients of the pkg use it the same way in both cases. Such a requirement is rare in my experience. What is more common is that the initialization of the pkg state requires information that is not available during elaboration; in that case, the pkg has an Initialize operation that is called when the information is available. -- Jeff Carter "I don't know why I ever come in here. The flies get the best of everything." Never Give a Sucker an Even Break 102