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=0.6 required=5.0 tests=BAYES_20,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f2ce122bf6177acb X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: protected types in Ada95 Date: 1997/09/10 Message-ID: #1/1 X-Deja-AN: 271313700 Sender: news@inmet.camb.inmet.com (USENET news) References: <5uui32$dhg@alf01.uib.es> X-Nntp-Posting-Host: houdini.camb.inmet.com Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1997-09-10T00:00:00+00:00 List-Id: 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