comp.lang.ada
 help / color / mirror / Atom feed
From: Daniel Norber <danielnorberto@gmail.com>
Subject: Re: Where to find Ravenscar compatible ADT Containers (List, Vector, stack)
Date: Mon, 3 Sep 2018 02:42:08 -0700 (PDT)
Date: 2018-09-03T02:42:08-07:00	[thread overview]
Message-ID: <b01e2eb7-3edb-42e2-9152-2520e1ff4c99@googlegroups.com> (raw)
In-Reply-To: <lyefeilei4.fsf@pushface.org>


> 
> > The standard ADA.Containers library is not prepared for Ravenscar use.
> > Even bounded versions, like Bounded_double_Linked_List have several
> > violations of Ravenscar, like Implicit_Heap_Allocation when i try to
> > instantiate it, and bind it.
> 
> Which compiler are you using? I ask because I encountered this with GCC
> 4.9.1 & GNAT GPL 2014
> 
> A workround (which allowed the package which revealed the problem to be
> built) was to explicitly state the restriction in the body:
> 
>    pragma Restrictions (No_Implicit_Heap_Allocations);
> 
>    with Ada.Containers.Bounded_Vectors;
> 
>    package body Containing is
> 
>       subtype Index is Natural range 0 .. 19;
>       subtype Line is String (1 .. 20);
> 
>       package Line_Vectors
>         is new Ada.Containers.Bounded_Vectors (Index_Type   => Index,
>                                                Element_Type => Line);
> 
> making it a compiler error. Of course, that's not going to help with the
> unbounded Containers.
> 
> > I've Found ADA95 booch ADT, but is not ready for the new ADA2012
> > aspects that let you write something like this:
> >
> > for E of List loop
> >   E:= E + 1;
> >   --E is a reference. That increases performance with big structures.
> > end loop;
> 
> Not sure that would actually be a performance improvement.
> 
> > Someone know a modern ADA2012 third party ADT that compliances
> > Ravenscar?.  Seems like ADA forgot Ravenscar users when they released
> > 2005 containers.
> 
> The list of restriction violations for Bounded_Doubly_Linked_Lists (from
> the ALI) for CE 2018 is
> 
> RV NO_ACCESS_SUBPROGRAMS
> RV NO_DIRECT_BOOLEAN_OPERATORS
> RV NO_DISPATCH
> RV NO_EXCEPTIONS
> RV NO_FINALIZATION
> RV NO_NESTED_FINALIZATION
> RV NO_RECURSION
> RV NO_STANDARD_STORAGE_POOLS
> RV NO_STREAMS
> RV NO_UNCHECKED_ACCESS
> RV NO_DEFAULT_INITIALIZATION
> RV NO_DYNAMIC_SIZED_OBJECTS
> RV NO_IMPLEMENTATION_ATTRIBUTES
> RV NO_IMPLEMENTATION_PRAGMAS
> RV NO_IMPLICIT_ALIASING
> RV SPARK_05
> 
> I don't think any of those are non-Ravenscar?

Thank you. The workaround you sayed works for me: Eplicit write the  pragma Restrictions (No_Implicit_Heap_Allocations) 
Yes, seems to be a problem of compiler becouse at the end no implicit heap allocation was used.

  reply	other threads:[~2018-09-03  9:42 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-28 12:06 Where to find Ravenscar compatible ADT Containers (List, Vector, stack) Daniel Norber
2018-08-28 14:48 ` Shark8
2018-09-03  9:39   ` Daniel Norber
2018-08-28 15:03 ` Simon Wright
2018-09-03  9:42   ` Daniel Norber [this message]
2018-08-29  0:24 ` Randy Brukardt
2018-08-30  0:21   ` Jere
2018-08-30  7:13     ` Jeffrey R. Carter
2018-08-30 12:14     ` AdaMagica
2018-08-30 23:40     ` Randy Brukardt
replies disabled

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