comp.lang.ada
 help / color / mirror / Atom feed
* A few questions
@ 2015-10-31 20:29 Laurent
  2015-10-31 20:49 ` Dmitry A. Kazakov
                   ` (6 more replies)
  0 siblings, 7 replies; 73+ messages in thread
From: Laurent @ 2015-10-31 20:29 UTC (permalink / raw)


Hi

I need a range of Dates.

So I tried this:

Begin_Date: Dates.Object; 
End_Date: Dates.Object;
-- Dates is a package from an earlier example in my Ada95 book. It is based on Ada.Calendars. I prefer to use
-- Dates because I actually need only the date, I don't care/ need the hour. I also find the name "Time" for 
-- something like "2015/10/31 21:00:00" confusing but that's just my opinion.

That doesn't work unfortunately and the compiler is right to complain:

subtype Period is range Begin_Date .. End_Date;

I naively thought that it could be so easy.

I could solve this problem with a few loops and filling an array or a list with the generated dates but the loop thing will be probably very ugly/complicated. 

For the array I also have to know how many dates I actually have between Begin_Date and End_Date. I have tried to 

I have found in Ada.Calendar a: function "-" (L,R:Time) return Duration

Is it possible to make a casting to convert my Date type in (Ada.Calendar) Time type:

Today : Ada.Calendar.Time:= Time(Date); -- or something like that.

I could of course use the Getters from Dates and then construct a new Time. More of curiosity than an actual problem.

Well of course I could simply use Ada.Calendar.

So is there an existing package which generates a range of Dates from .. to ?
Feels like cheating but causes less frustration. 

 Thanks

Laurent

PS: need this range of dates because the log files I want to read and extract informations from are all named like this: vba-yyyymmdd.log where obviously yyyymmdd is the date. The program generates a new file every date an stores the communication it treated in it.

I want to read this files and extract the messages which passed. Is more an exercise than actually a need to do it.

^ permalink raw reply	[flat|nested] 73+ messages in thread
* A few questions
@ 2015-02-07 17:43 Laurent
  2015-02-07 22:15 ` Brad Moore
  0 siblings, 1 reply; 73+ messages in thread
From: Laurent @ 2015-02-07 17:43 UTC (permalink / raw)


Hi

1) Trying to implement a search function in my linked list. Doesn't compile because the return type :List_Ptr is not visible in the ads file?

spec:

   function Search (L : in List; Element : in Element_Type) return List_Ptr;
   -- Pre: L is defined; L may be empty; Element is a scalar type
   -- Post: returns access to found node

body

   function Search (L : in List; Element : in Element_Type) return List_Ptr is
      Temp : List_Ptr;
      Current : List;

   begin
      Current := L.Head;
      while Current.Head /= null loop
         if Equals(Current.Head.Element, Element) then
            Temp:= Current.Head;
            return Temp;
         end if;
         Current.Head := Current.Head.Next;
      end loop;
   end Search;

The List_Ptr is defined as:

private

   ----------
   -- List --
   ----------

   type List_Node;
   type List_Ptr is access List_Node;
   type List_Node is record
      Element : Element_Type;
      Next    : List_Ptr;
      Previous:List_Ptr;
   end record;

   type List is record
      Head : List_Ptr;
      Tail : List_Ptr;
   end record;

I have put the search function in a child package.

2) Tried the same thing but this time using an iterator but fails with 

        65:20 (Ada 2005) cannot copy object of a limited type (RM-2005 6.5(5.5/2))
        65:20 return by reference not permitted in Ada 2005
on 

return It;

spec

   function Search (L : access List; Element : Element_Type) return Iterator;
   -- Pre: L is defined; L may be empty; Element is a scalar type
   -- Post: returns access to found node

body

   function Search (L : access List; Element : Element_Type) return  Iterator is
      It : Iterator (L);

   begin
      Start (It);
      while not Done (It) loop
         if Equals (It.This.Element, Element) then
            return It;
         end if;
         Next(It);
      end loop;
   end Search;

The Iterator is defined as:

private

   --------------
   -- Iterator --
   --------------

   type Iterator (L : access List) is limited
      record
         This :  List_Ptr;
      end record;

I have tried to understand RM-2005 6.5(5.5/2) but don't know what 

"If the result subtype of the function is defined by a subtype_mark, the return_subtype_indication shall be a subtype_indication. The type of the subtype_indication shall be the result type of the function"

is supposed to look like. 

If someone could enlighten me on both problems.

https://github.com/Chutulu/Chapter-15.git

3) How can I take a look at the assembler code of both versions? Just curious to see if there is actually a difference between both versions. I have no idea of assembler but that doesn't keep me from trying.

Thanks

Laurent

^ permalink raw reply	[flat|nested] 73+ messages in thread

end of thread, other threads:[~2015-11-19 21:15 UTC | newest]

Thread overview: 73+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-31 20:29 A few questions Laurent
2015-10-31 20:49 ` Dmitry A. Kazakov
2015-11-01 13:16   ` Laurent
2015-11-01  0:25 ` Jeffrey R. Carter
2015-11-01 13:30   ` Laurent
2015-11-03  6:25   ` Randy Brukardt
2015-11-01  9:05 ` Jacob Sparre Andersen
2015-11-01 13:40   ` Laurent
2015-11-01 18:14     ` Jacob Sparre Andersen
2015-11-01 18:40       ` Laurent
2015-11-01 13:42 ` brbarkstrom
2015-11-01 13:52   ` Laurent
2015-11-01 17:59     ` Jeffrey R. Carter
2015-11-01 18:35       ` Laurent
2015-11-02 13:25     ` brbarkstrom
2015-11-01 15:15   ` Dennis Lee Bieber
2015-11-01 16:33 ` gautier_niouzes
2015-11-01 16:36   ` gautier_niouzes
2015-11-01 18:17 ` Stephen Leake
2015-11-01 18:53   ` Laurent
2015-11-02  0:41     ` Dennis Lee Bieber
2015-11-02 16:42     ` Stephen Leake
2015-11-02 17:45 ` Simon Wright
2015-11-02 18:48   ` Simon Wright
2015-11-03  6:33     ` Randy Brukardt
2015-11-03  8:26       ` Simon Wright
2015-11-03  6:40   ` Randy Brukardt
2015-11-03  8:34     ` Simon Wright
2015-11-04 16:19       ` Simon Wright
2015-11-05  1:20         ` Randy Brukardt
2015-11-05  8:34           ` briot.emmanuel
2015-11-12 18:28             ` Randy Brukardt
2015-11-12 20:19               ` Simon Wright
2015-11-12 20:56               ` Dmitry A. Kazakov
2015-11-12 21:15                 ` Randy Brukardt
2015-11-13  8:40                   ` Dmitry A. Kazakov
2015-11-13 17:52                     ` Randy Brukardt
2015-11-13 20:37                       ` Dmitry A. Kazakov
2015-11-13 22:15                         ` Randy Brukardt
2015-11-14 11:42                           ` Dmitry A. Kazakov
2015-11-14 12:37                           ` Simon Wright
2015-11-14 17:24                             ` Shark8
2015-11-14 20:09                               ` Simon Wright
2015-11-15 18:54                             ` Brad Moore
2015-11-13  8:45               ` briot.emmanuel
2015-11-13 17:41                 ` Randy Brukardt
2015-11-14 19:57                   ` briot.emmanuel
2015-11-16 19:13                     ` Randy Brukardt
2015-11-16 20:47                       ` Dmitry A. Kazakov
2015-11-17 21:30                         ` Randy Brukardt
2015-11-18  9:53                           ` Dmitry A. Kazakov
2015-11-18 22:27                             ` Randy Brukardt
2015-11-19  8:52                               ` Dmitry A. Kazakov
2015-11-19 21:15                                 ` Randy Brukardt
2015-11-16 21:50                       ` Simon Wright
2015-11-17 21:33                         ` Randy Brukardt
2015-11-17 23:14                           ` Simon Wright
2015-11-17  8:49                       ` briot.emmanuel
2015-11-17 22:09                         ` Randy Brukardt
2015-11-05  8:45           ` Simon Wright
2015-11-05  8:52             ` Simon Wright
2015-11-12 18:29               ` Randy Brukardt
2015-11-12 18:32               ` Randy Brukardt
2015-11-12 20:02                 ` Simon Wright
2015-11-12 21:08                   ` Randy Brukardt
2015-11-15 17:56                     ` Brad Moore
2015-11-15 21:42                       ` Simon Wright
2015-11-16 19:16                       ` Randy Brukardt
  -- strict thread matches above, loose matches on Subject: below --
2015-02-07 17:43 Laurent
2015-02-07 22:15 ` Brad Moore
2015-02-08 22:37   ` Laurent
2015-02-09 13:56     ` Brad Moore
2015-02-09 18:36       ` Laurent

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