comp.lang.ada
 help / color / mirror / Atom feed
* Ada-Singleton-Why does it work like this?
@ 2009-03-24 19:01 patrick.gunia
  2009-03-24 19:10 ` Pascal Obry
                   ` (3 more replies)
  0 siblings, 4 replies; 41+ messages in thread
From: patrick.gunia @ 2009-03-24 19:01 UTC (permalink / 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



^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2009-03-29  7:29 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-24 19:01 Ada-Singleton-Why does it work like this? patrick.gunia
2009-03-24 19:10 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox