From: "patrick.gunia@googlemail.com" <patrick.gunia@googlemail.com>
Subject: Ada-Singleton-Why does it work like this?
Date: Tue, 24 Mar 2009 12:01:00 -0700 (PDT)
Date: 2009-03-24T12:01:00-07:00 [thread overview]
Message-ID: <5a7a870c-40e2-4803-8753-0f9cfd2b800f@k2g2000yql.googlegroups.com> (raw)
Hi all,
I´m currently working on implementing several design patterns in Ada,
and I found some code concerning the Singleton-pattern when searching
through the posts of this group. I used this code and it all worked as
expected. My problem is, that I don´t ave any idea, why it does...here
is my code:
package Singleton is
type Singleton_Type (<>) is tagged limited private;
type Singleton_Access is access all Singleton_Type;
function return_Single return Singleton_Access;
procedure setValues(input : in out Singleton_Access; valueIN :
Integer; valueIN2 : Integer);
procedure print_something(input : Singleton_Access);
private
type Singleton_Type is tagged limited record
value : Integer;
value2 : Integer;
end record;
end Singleton;
Here is the implementation part:
package body Singleton is
It: aliased Singleton_Type;
procedure setValues(input : in out Singleton_Access; valueIN :
Integer; valueIN2 : Integer) is
begin
input.value := valueIN;
input.value2 := valueIN2;
end setValues;
function return_Single return Singleton_Access is
begin
return It'Access;
end return_Single;
procedure print_something(input : Singleton_Access) is
begin
put(input.value);
put(input.value2);
end print_something;
end Singleton;
As far as I get it, is the declaration "type Singleton_Type (<>) is
tagged limited private;" the key-feature to realize the Singleton
pattern, but how, and why does this work? I looked through my Ada-
book, searched the web but didn´t find an explanation for this
construct! Could you please tell me, what exactly happens when I use
(<>) within a type-declaration and why it is necessary for the
Singleton-Implementation?
Thanks a lot!
Patrick
next reply other threads:[~2009-03-24 19:01 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-24 19:01 patrick.gunia [this message]
2009-03-24 19:10 ` Ada-Singleton-Why does it work like this? Pascal Obry
2009-03-24 20:47 ` Jeffrey R. Carter
2009-03-25 0:10 ` Martin
2009-03-25 0:41 ` Jeffrey R. Carter
2009-03-25 9:30 ` Dmitry A. Kazakov
2009-03-26 8:55 ` Martin
2009-03-26 9:28 ` Dmitry A. Kazakov
2009-03-26 13:39 ` Maciej Sobczak
2009-03-26 14:07 ` Georg Bauhaus
2009-03-26 14:33 ` Dmitry A. Kazakov
2009-03-26 15:22 ` Georg Bauhaus
2009-03-26 16:31 ` Dmitry A. Kazakov
2009-03-26 14:28 ` Dmitry A. Kazakov
2009-03-26 22:00 ` Maciej Sobczak
2009-03-27 10:02 ` Dmitry A. Kazakov
2009-03-25 22:29 ` sjw
2009-03-24 20:52 ` Ludovic Brenta
2009-03-25 9:59 ` patrick.gunia
2009-03-25 10:29 ` Jean-Pierre Rosen
2009-03-25 11:26 ` Georg Bauhaus
2009-03-25 11:49 ` patrick.gunia
2009-03-29 7:29 ` Jacob Sparre Andersen
2009-03-24 21:21 ` Dmitry A. Kazakov
2009-03-25 10:07 ` patrick.gunia
2009-03-25 10:57 ` patrick.gunia
2009-03-25 11:40 ` Georg Bauhaus
2009-03-25 11:46 ` Ludovic Brenta
2009-03-25 11:55 ` patrick.gunia
2009-03-25 14:10 ` patrick.gunia
2009-03-25 14:40 ` Ludovic Brenta
2009-03-25 15:16 ` Adam Beneschan
2009-03-25 15:19 ` patrick.gunia
2009-03-25 16:52 ` Georg Bauhaus
2009-03-25 11:10 ` Dmitry A. Kazakov
2009-03-25 11:37 ` patrick.gunia
2009-03-25 12:07 ` Ludovic Brenta
2009-03-25 15:00 ` Robert A Duff
2009-03-25 11:17 ` Jean-Pierre Rosen
2009-03-26 9:04 ` Martin
2009-03-25 11:38 ` Ludovic Brenta
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox