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.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,d154e1596a6ac2d9,start X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!nntp.waia.asn.au!203.59.27.186.MISMATCH!newsfeed.iinet.net.au!newsfeed.iinet.net.au!per-qv1-newsstorage1.iinet.net.au!per-qv1-newsstorage1.iinet.net.au!per-qv1-newsreader-01.iinet.net.au!not-for-mail Date: Mon, 17 Oct 2005 10:23:43 +1000 From: Andrew Price User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Newbie: Task parametering Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: <4352ef15$0$28225$5a62ac22@per-qv1-newsreader-01.iinet.net.au> NNTP-Posting-Host: 203.166.250.55 X-Trace: 1129508629 per-qv1-newsreader-01.iinet.net.au 28225 203.166.250.55 Xref: g2news1.google.com comp.lang.ada:5732 Date: 2005-10-17T10:23:43+10:00 List-Id: Hello all, I need to initialise some tasks with a few parameters when I instantiate them. After looking at http://www.adaic.com/docs/95style/html/sec_6/6-1-3.html it seems the best way to do this is using an access type discriminant to pass a record to the tasks. With that in mind, I created this record type; type Task_Data is record Name : aliased String(1..8); Period : aliased Duration; Repetitions : aliased Integer; end record; and then in the main part of my program I use it like this; type Task_Handle is access A_Task; -- used to point to the task Another_Task : Task_Handle; type Data_Handle is access Task_Data; -- used to point to its data Data_For_Task : Data_Handle; begin -- The main prog will now spawn three of the above tasks -- Parameterise the first task and then start it. Data_For_Task := new Task_Data; Data_For_Task.Name := "Task A "; Data_For_Task.Period := 0.5; Data_For_Task.Repetitions := 5; Another_Task := new A_Task(Data_For_Task); So while this approach works, I can't help but feel that I'm going about this in a 'long winded' way (especially coming from a mostly C background). Is there are neater way of putting the data into the Task_Data records? Or is there an better approach to the whole task parameterisation I should consider? Now is probably a good time to add the disclaimer that this is part of a lab work exercise for a course I'm currently undertaking at university. Thanks in advance for any advice, Andrew.