IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Comment spécifier le "Storage_Unit" d'un type array non contraint ?


Sujet :

Ada

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Points : 7
    Points
    7
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 : 214
    Points : 383
    Points
    383
    Par défaut
    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.

  3. #3
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 : 214
    Points : 383
    Points
    383
    Par défaut
    Finalement, j'ai trouvé quelque chose mais cela ne marche que sur les tableaux une fois instanciés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       X : Bit_Array (0 .. 66);
       for X'Alignment use 4;
    Bon, je pense que ça répond pas trop à ta question

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo