comp.lang.ada
 help / color / mirror / Atom feed
From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: protected types in Ada95
Date: 1997/09/10
Date: 1997-09-10T00:00:00+00:00	[thread overview]
Message-ID: <EGArp1.H8K.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 5uui32$dhg@alf01.uib.es


SAD KAT (aic001@teix.uib.es) wrote:

: Hi,
: I have a program with differents tasks reading and writting data. I have
: read that I have to protect my data to be sure that the values are the
: correct ones, to keep a exclussive access to them.

: I've done a think like that:

:    package data_pac is
:       type type_of_var is record
:          -- here are the description
:       end record;
:       protected type type_of_var_prot is
:          function read_var return integer;
:          procedure write_var (item : in type_of_var);
:       private
:          var2 : type_of_var;
:       end type_of_var_prot;
:    end data_pac;

:    package body data_pac is
:       protected type type_of_var_prot is
:          function read_var return integer is
:          begin
:             -- body of the function
:          end read_var;
:          procedure write_var (item : in type_of_var) is
:          begin
:             -- body of the procedure
:          end write_var;
:       end type_of_var_prot;

:       begin
:          null;
:       end data_proc;


: The compiler shows that message : "subprogram body not allowed here"
: and I don't knwo where's thw mistake. 

When you have a question like this, be sure to post the actual
source code and the actual error message.  The error message probably 
identified the exact line and column where the problem occurred.
Without that information, we are just guessing.


: I have also another doubt, how
: do I have to use the function read_var and the procedure write_var?

: I mean, if I have in the main package:

:    procedure main is
:       data_a : type_of_var;
:       data_b : type_of_var_prot;
:    begin
:       get(data_a);
:       data_b.write_var(data_a);
:       -- rest of program
:    end main;

: Is this correct?

Looks correct.  You could use "read_var" as follows:

     data_a := data_b.read_var;

: Thanks for helping and please forgive my poor English,

De' nada.  [Please forgive my poor Spanish!]

: mailto: sadkat@hotmail.com
: mailto: aic001@teix.uib.es

: Joan Andreu Juan Torrens (Illes Balears, SPAIN)

--
-Tucker Taft   stt@inmet.com   http://www.inmet.com/~stt/
Intermetrics, Inc.  Burlington, MA  USA




  reply	other threads:[~1997-09-10  0:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-09-07  0:00 protected types in Ada95 SAD KAT
1997-09-10  0:00 ` Tucker Taft [this message]
1997-09-10  0:00   ` Robert A Duff
1997-09-11  0:00   ` Robert Dewar
1997-09-10  0:00 ` Tom Moran
1997-09-11  0:00   ` Stephen Leake
replies disabled

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