From: Ant on
I am trying to rename an array component, but no luck. Is this
possible or am I just doing something wrong?


TYPE message_array IS ARRAY (index) OF signals_record;
msg : message_array;

PACKAGE m1 IS NEW transmit_message (id, type);

msg (1) : signals RENAMES m1.signals_record;


Anthony

From: Georg Bauhaus on
On Tue, 2007-03-06 at 08:17 -0800, Ant wrote:
> I am trying to rename an array component, but no luck. Is this
> possible or am I just doing something wrong?
>
>
> TYPE message_array IS ARRAY (index) OF signals_record;
> msg : message_array;
>
> PACKAGE m1 IS NEW transmit_message (id, type);
^^^^
"type" is an Ada keyword. What is transmit_message?

> msg (1) : signals RENAMES m1.signals_record;
^^^^^^^^^^^^^^^^^
This is probably a type, if signals_record from above is a type.

If you want to rename a component of msg, msg (1) say,
then the renamed thing is an object. In this case it is
of type signals_record. Not easy to tell without seeing
some more source, preferably compilable.

... : signals_record RENAMES msg (1);



From: Ant on
On Mar 6, 9:53 am, Georg Bauhaus <bauh...(a)futureapps.de> wrote:
> On Tue, 2007-03-06 at 08:17 -0800, Ant wrote:
> > I am trying to rename an array component, but no luck. Is this
> > possible or am I just doing something wrong?
>
> > TYPE message_array IS ARRAY (index) OF signals_record;
> > msg : message_array;
>
> > PACKAGE m1 IS NEW transmit_message (id, type);
>
> ^^^^
> "type" is an Ada keyword. What is transmit_message?
>
> > msg (1) : signals RENAMES m1.signals_record;
>
> ^^^^^^^^^^^^^^^^^
> This is probably a type, if signals_record from above is a type.
>
> If you want to rename a component of msg, msg (1) say,
> then the renamed thing is an object. In this case it is
> of type signals_record. Not easy to tell without seeing
> some more source, preferably compilable.
>
> ... : signals_record RENAMES msg (1);

This test procedure should compile. Sorry for the laziness.

PROCEDURE test IS

-------------------------------------------
GENERIC -- receive message --

id : integer;

TYPE message_type IS PRIVATE;

PACKAGE transmit_message IS

PROCEDURE write;

END transmit_message;
-------------------------------------------


-----------------------------------------------------------------------------
PACKAGE BODY transmit_message IS

PROCEDURE write IS
BEGIN
null;
END write;

END transmit_message;

-----------------------------------------------------------------------------

-------------------------------------------
TYPE signals_record IS
RECORD
data1 : boolean;
data2 : boolean;
END RECORD;

FOR signals_record USE
RECORD
data1 AT 0 RANGE 0 .. 15;
data2 AT 0 RANGE 16 .. 31;
END RECORD;
-------------------------------------------

SUBTYPE msg_count IS integer RANGE 1 .. 4;
TYPE message_array IS ARRAY (msg_count) OF signals_record;
msg : message_array;

id : integer := 1;

PACKAGE m1 IS NEW transmit_message (id, signals_record);

msg (1) : signals RENAMES m1.signals_record;

END test;

From: Adam Beneschan on
On Mar 6, 1:50 pm, "Ant" <yarze...(a)hotmail.com> wrote:

>
> > If you want to rename a component of msg, msg (1) say,
> > then the renamed thing is an object. In this case it is
> > of type signals_record. Not easy to tell without seeing
> > some more source, preferably compilable.
>
> > ... : signals_record RENAMES msg (1);
>
> This test procedure should compile. Sorry for the laziness.
>
> PROCEDURE test IS
>
> -------------------------------------------
> GENERIC -- receive message --
>
> id : integer;
>
> TYPE message_type IS PRIVATE;
>
> PACKAGE transmit_message IS
>
> PROCEDURE write;
>
> END transmit_message;
> -------------------------------------------
>
> -----------------------------------------------------------------------------
> PACKAGE BODY transmit_message IS
>
> PROCEDURE write IS
> BEGIN
> null;
> END write;
>
> END transmit_message;
>
> -----------------------------------------------------------------------------
>
> -------------------------------------------
> TYPE signals_record IS
> RECORD
> data1 : boolean;
> data2 : boolean;
> END RECORD;
>
> FOR signals_record USE
> RECORD
> data1 AT 0 RANGE 0 .. 15;
> data2 AT 0 RANGE 16 .. 31;
> END RECORD;
> -------------------------------------------
>
> SUBTYPE msg_count IS integer RANGE 1 .. 4;
> TYPE message_array IS ARRAY (msg_count) OF signals_record;
> msg : message_array;
>
> id : integer := 1;
>
> PACKAGE m1 IS NEW transmit_message (id, signals_record);
>
> msg (1) : signals RENAMES m1.signals_record;
>
> END test;

That RENAMES is wrong on so many levels, I don't know where to begin.
Transmit_Message doesn't declare a "signals_record" so
m1.signals_record doesn't exist; "signals_record" is a type, anyway,
and you can't rename a type; the identifier "signals" isn't declared
and it has no meaning; and you can't use RENAMES to declare an
identifier you've already declared (i.e. "msg"), and you can't use
RENAMES to declare an array component anyway.

I can't tell what you're trying to accomplish. What were you trying
to do with this RENAMES declaration? If you can describe that, we can
help you write it correctly. If all you're doing is to try to give
another name to msg(1), so you can call it something else, such as
msg_1, then Georg already gave you the answer:

msg_1 : signals_record renames msg(1);

-- Adam





From: Jeffrey R. Carter on
Ant wrote:
>
> This test procedure should compile. Sorry for the laziness.

No, it won't.

> GENERIC -- receive message --
>
> id : integer;
>
> TYPE message_type IS PRIVATE;
>
> PACKAGE transmit_message IS
>
> PROCEDURE write;
>
> END transmit_message;

> PACKAGE m1 IS NEW transmit_message (id, signals_record);
>
> msg (1) : signals RENAMES m1.signals_record;

There's nothing in M1 named Signals_Record.

--
Jeff Carter
"When danger reared its ugly head, he bravely
turned his tail and fled."
Monty Python and the Holy Grail
60
 |  Next  |  Last
Pages: 1 2
Prev: FW: How come Ada isn't more popular?
Next: CGI in Ada?