Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Ada
Ada Forum d'entraide sur la programmation en langage Ada
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/07/2012, 13h07   #1
jonas813
Invité de passage
 
Jonas Baggett
Inscription : janvier 2010
Messages : 5
Détails du profil
Informations personnelles :
Nom : Jonas Baggett

Informations forums :
Inscription : janvier 2010
Messages : 5
Points : 0
Points : 0
Par défaut Comment spécifier le "Storage_Unit" d'un type array non contraint ?

Bonjour,

J'ai un type array non contraint et j'aimerais pouvoir définir qu'un objet de ce type fasse k*32 bits au lieu de k*Standard'Storage_Unit (= k * 8 bits pour mon PC). Je ne peux pas utiliser l'attribut 'Size car le type n'est pas contraint.

Voici un bout de code pour mieux expliquer ce que je veux :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   type Bit is mod 2;
   type Bit_Array is array (Integer range <>) of Bit;
   for Bit_Array'Component_Size use 1;
   -- for Bit_Array'Storage_Unit use 32; -- malheureusement illégal

   (...)
   -- Ici j'aimerais que X soit sur 96 bits (k * 32 bits) au lieu de 72 bits (k * 8 bits)
   X : Bit_Array (0 .. 66);

begin

   -- Devrait retourner 96 au lieu de 72
   Ada.Text_IO.Put_Line (Integer'Image(X'Size));

   (...)
Merci pour votre aide
Jonas
jonas813 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2012, 14h53   #2
Blackknight
Membre confirmé
 
Avatar de Blackknight
 
Homme Frédéric Praca
Ingénieur développement logiciels
Inscription : février 2009
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Praca
Âge : 39
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2009
Messages : 172
Points : 292
Points : 292
Envoyer un message via AIM à Blackknight Envoyer un message via MSN à Blackknight
Bon, j'ai regardé un peu tout ce que je pouvais faire avec Gnat et les alignements et autres clauses de représentation et je n'ai pas trouvé grand chose comme toi.
Par contre, as-tu pensé à regarder du côté des storage pools ?
Je te l'accorde, c'est un peu lourd mais cela peut peut-être te permettre de spécifier les tailles exactes que tu veux allouer.
Blackknight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2012, 15h05   #3
Blackknight
Membre confirmé
 
Avatar de Blackknight
 
Homme Frédéric Praca
Ingénieur développement logiciels
Inscription : février 2009
Messages : 172
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Praca
Âge : 39
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2009
Messages : 172
Points : 292
Points : 292
Envoyer un message via AIM à Blackknight Envoyer un message via MSN à Blackknight
Finalement, j'ai trouvé quelque chose mais cela ne marche que sur les tableaux une fois instanciés :
Code :
1
2
3
   X : Bit_Array (0 .. 66);
   for X'Alignment use 4;
Bon, je pense que ça répond pas trop à ta question
Blackknight est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h36.


 
 
 
 
Partenaires

Hébergement Web