Method cannot have a parameter of file type

S

sgregnt

Hi all,

I am trying to declare procedure in protected type, with file as
parameter
but ModelSim does not allow that:
I am receiving an error : "Method cannot have a parameter of
file type".
The code is compiled using VHDL 1076-2002.
Also there is an explicit example in "The Designer's Guide To
VHDL", 2nd edition,p 632-633. of exactly the same thing I am trying to
do, but in my case it doesn't work :(.

1) Any suggestions what might be wrong ?
2) Any comment are welcome.

Thanx!

Here is the code I am trying to compile
_____________________________

Library IEEE;
use IEEE.std_logic_1164.all

Library std
use std.textio.all

package pkg_mem is
type mem is protected
procedure input_img (file image_file : text ); --
the error is recieved on this line.
end protected mem;
end pkg_mem;

package body pkg_mem is
type mem is protected body
procedure input_img(file image_file : text ) is
begin
end ;
end protected body mem ;
end pakage body pkg_mem ;
_____________________________________________

Thanx again! (a.. that's not a copy-paste so spelling errors might pop-
up )
 
S

sgregnt

I know that in VHDL 93 Method cannot have a parameter of
file type. So maybe it has something to do with compiler
version(according to ModelSim I compile the code with VHDL 2002.)?
Have anybody experienced similar problems?
 
M

Mike Treseler

sgregnt said:
I know that in VHDL 93 Method cannot have a parameter of
file type.

File parameters are ok in -93.
Notice that there is no error if I
remove the protected types.

-- Mike Treseler
_________________________________
library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;

package pkg_mem is
procedure input_img (file image_file : text);
end package pkg_mem;

package body pkg_mem is
procedure input_img(file image_file : text) is
begin
end;
end package body pkg_mem;

--60 Mon Jun 11 /evtfs/home/tres/vhdl/play> vcom pkg_mem.vhd
--Model Technology ModelSim SE vcom 6.2a Compiler 2006.06 Jun 16 2006
---- Loading package standard
---- Loading package std_logic_1164
---- Loading package textio
---- Compiling package pkg_mem
---- Compiling package body pkg_mem
---- Loading package pkg_mem
 
P

Paul Uiterlinden

sgregnt said:
Hi all,

I am trying to declare procedure in protected type, with file as
parameter
but ModelSim does not allow that:
I am receiving an error : "Method cannot have a parameter of
file type".
The code is compiled using VHDL 1076-2002.
Also there is an explicit example in "The Designer's Guide To
VHDL", 2nd edition,p 632-633. of exactly the same thing I am trying to
do, but in my case it doesn't work :(.

1) Any suggestions what might be wrong ?

Either ModelSim or the language definition. ;-)
2) Any comment are welcome.

It's a pity that vcom does not emit an error number. If it would, you could
get an additional description of the error with the verror command.

You could open a case on SupportNet and ask Mentor Graphics why your case
fails. And post the result here, because I'm curious too.
 
J

James Unterburger

2002 LRM
[3.5.1 Protected type declarations]
....
Each subprogram specified within a given protected type declaration defines
an abstract operation, called a method, that operates atomically and exclusively
on a single object of the protected type. In addition to the (implied) object
of the protected type operated on by the subprogram, additional parameters may
be explicitly specified in the formal parameter list of the subprogram declaration
of the subprogram. Such formal parameters must not be of an access type or a
file type; moreover, they must not have a subelement that is [of] an access type
[or file type]*.

[of] added to 200X draft
*deleted from 200X draft because of LCS-2006-008; IR2029


If you put this in the protected type body only (so it's no longer a method,
but rather just a subprogram local to the body), then it's OK to have
a class FILE formal parameter. So it's conceivable to have a method that
takes a file name (string) and calls the body subprogram with a FILE
type data member having been opened by the method.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top