comp.lang.ada
 help / color / mirror / Atom feed
From: Anh Vo <anhvofrcaus@gmail.com>
Subject: Re: 4 beginner's questions on the PL Ada
Date: Mon, 12 Aug 2013 10:39:31 -0700 (PDT)
Date: 2013-08-12T10:39:31-07:00	[thread overview]
Message-ID: <8c8d6ec3-aabb-4bf0-80bf-354f63e574eb@googlegroups.com> (raw)
In-Reply-To: <87mwoqbao2.fsf@VLAN-3434.student.uu.se>

On Friday, August 9, 2013 6:24:13 PM UTC-7, Emanuel Berg wrote:
> Anh Vo <anhvofrcaus@gmail.com> writes:
>  
> You guys should do a field trip to gnu.emacs.help - there, we just 
> post code all days! It is much better. Code speaks louder than 
> words. It is very difficult to follow all this discussion on 
> memory allocation etc., but the few times you posted code there 
> wasn't a letter I didn't understand immediately.
>  
> And isn't that the same way with you? If you were to explain the C 
> for loop to another programmer, would you not just write
>  
> for (i = 0; i < STOP; i++) { printf("Pretty clear, huh?\n"); }
>  
> But I don't doubt your Ada knowledge, or you helpful attitude.

Hmmmm... These have nothing to do with how a task name implemented with respect to portability.
 
>> You can give/assign a name to a task the way you like by using
>> predefined package Ada.Task_Attributes. In this case you most
>> likely instantiate it with String subtype. Therefore, it is will
>> be completely portable.
>  
> And (drumroll...) how would that look?
 
Here is how a task name is consistently implemented across different compilers. By the way, this is a complete running program.

with Ada.Exceptions;
with Ada.Text_Io; 
with Ada.Task_Attributes;
with Ada.Task_Identification;
with GNAT.Traceback.Symbolic;
use Ada;

procedure Task_Name_Test is
   use Text_Io;
   
   type Name is access String;
   Default_Name : constant Name := new String'("Generic task name");
   
   Package Task_Manager is new Task_Attributes (Name, Default_Name);
   
   task Gentleman is
      entry Hello;
      entry Goodbye;
   end Gentleman;
   
   task body Gentleman is
   begin
      accept Hello;
      Put_Line ("My name is " & 
                   Task_Manager.Value (Task_Identification.Current_Task).all &
                  ". It's my pleasure to meeting you");
      accept Goodbye;
      Put_Line ("Hopefully, we will meet again in the future.");
   end Gentleman;

   Gentleman_Name : Name := new String'("Gentleman");
      
begin
   Put_Line ("Task_Name_Test starts");

   Task_Manager.Set_Value (Val => Gentleman_Name, T => Gentleman'Identity);
   
   Gentleman.Hello;
   Gentleman.Goodbye;

   Put_Line ("Task_Name_Test starts");
   
exception
   when Err : others =>
      Put_Line (Exceptions.Exception_Name(Err) & " was raised");
      Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback(Err));
end Task_Name_Test;


Once again, it is about task name. If it is not, it should not belong here.

Anh Vo.

  parent reply	other threads:[~2013-08-12 17:39 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-09 16:50 4 beginner's questions on the PL Ada Emanuel Berg
2013-08-09 17:09 ` Adam Beneschan
2013-08-09 17:16   ` Emanuel Berg
2013-08-09 17:46     ` Alan Jump
2013-08-09 18:10       ` Emanuel Berg
2013-08-09 19:01   ` Randy Brukardt
2013-08-09 21:38     ` Emanuel Berg
2013-08-09 22:00       ` Jeffrey Carter
2013-08-09 22:16         ` Emanuel Berg
2013-08-10  0:39           ` Anh Vo
2013-08-10  1:24             ` Emanuel Berg
2013-08-10  6:16               ` Simon Wright
2013-08-10 12:13                 ` Emanuel Berg
2013-08-10 17:12               ` Mike H
2013-08-10 17:53                 ` Emanuel Berg
2013-08-10 19:50                   ` Dennis Lee Bieber
2013-08-10 22:23                     ` Emanuel Berg
2013-08-11  7:12                       ` Georg Bauhaus
2013-08-11 12:44                         ` Emanuel Berg
2013-08-11 21:12                           ` Bill Findlay
2013-08-11 21:22                             ` Emanuel Berg
2013-08-12 17:39               ` Anh Vo [this message]
2013-08-12 18:15                 ` Anh Vo
2013-08-12 19:57                 ` Simon Wright
2013-08-12 20:13                   ` Anh Vo
2013-08-10  0:52           ` Jeffrey Carter
2013-08-12 19:47         ` Randy Brukardt
2013-08-09 22:08       ` Robert A Duff
2013-08-09 22:23         ` Emanuel Berg
2013-08-09 22:36           ` Robert A Duff
2013-08-09 22:42             ` Emanuel Berg
2013-08-09 23:48               ` Robert A Duff
2013-08-09 23:50                 ` Emanuel Berg
2013-08-09 23:56                 ` Emanuel Berg
2013-08-10  0:44                 ` Jeffrey Carter
2013-08-10  0:51                   ` Robert A Duff
2013-08-09 22:47             ` Alan Jump
2013-08-09 23:33               ` Adam Beneschan
2013-08-09 23:43                 ` Alan Jump
2013-08-10  0:19                   ` Robert A Duff
2013-08-10  0:52                   ` Jeffrey Carter
2013-08-10  0:48                 ` Robert A Duff
2013-08-09 23:40               ` Robert A Duff
2013-08-09 23:25       ` Dennis Lee Bieber
2013-08-09 18:29 ` Jeffrey Carter
2013-08-09 18:51   ` Adam Beneschan
2013-08-09 19:05     ` Jeffrey Carter
2013-08-09 18:35 ` Simon Wright
2013-08-09 23:21 ` Dennis Lee Bieber
2013-08-09 23:48   ` Emanuel Berg
2013-08-10  2:45     ` Dennis Lee Bieber
2013-08-10  3:33       ` Emanuel Berg
2013-08-10 14:57         ` Shark8
2013-08-10 17:43           ` Emanuel Berg
2013-08-10 17:55             ` Emanuel Berg
2013-08-10 23:15             ` Simon Clubley
2013-08-11 12:16               ` Emanuel Berg
2013-08-12 18:07               ` Adam Beneschan
2013-08-11  0:34             ` Shark8
2013-08-11 12:42               ` Emanuel Berg
2013-08-11 13:24                 ` Peter C. Chapin
2013-08-11 13:37                   ` Emanuel Berg
2013-08-11 15:15                   ` Mike H
2013-08-12 17:56           ` Adam Beneschan
2013-08-10  6:03       ` Jeffrey Carter
2013-08-12 17:17         ` Eryndlia Mavourneen
2013-08-12 17:27           ` Jeffrey Carter
2013-08-10 12:31 ` Emanuel Berg
2013-08-10 12:37   ` Emanuel Berg
2013-08-10 12:52     ` Emanuel Berg
replies disabled

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