🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.ada
Article #77

Re: Ada for Automation

#77
From: slos
Date: Thu, 31 Jan 2013 21:37
82 lines
3980 bytes
Le mercredi 30 janvier 2013 19:04:36 UTC+1, Ludovic Brenta a écrit :
> Je suppose que nous sommes tous trop occupés à préparer
> 
> le FOSDEM pour répondre en détail...
> 
> 
> 
> En quelques mots très rapides:
> 
> 
> 
> - n'utilise pas System.Address mais un type accès
> 
>   vers le record.  Ajoute pragma Convention (C) au
> 
>   type accès.
> 
> 
> 
> - pour les tableaux qui sont dans le record, utilise
> 
>   des instances de Interfaces.C.Pointers (ARM B.3.2).
> 
>   Dans le record, chaque "int" deviendra un
> 
>   Interfaces.C.ptrdiff_t et chaque pointeur vers
> 
>   tableau deviendra un Interfaces.C.Pointers.Pointer.
> 
> 
> 
> Autre solution: les 4 longueurs peuvent devenir 4
> 
> discriminants du record, les 4 tableaux étant contraints
> 
> par ces discriminants.  Je ne suis pas sûr que ça
> 
> marcherait mais ça vaut peut-être le coup d'essayer.
> 
> 
> 
> -- 
> 
> Ludovic Brenta.

J'ai essayé avec les discriminants :

   type Modbus_Mapping_Type1
     (Bits_Number            : Integer;
      Input_Bits_Number      : Integer;
      Input_Registers_Number : Integer;
      Registers_Number       : Integer
      ) is
      record
         nb_bits             : C.int := C.int(Bits_Number);
         nb_input_bits       : C.int := C.int(Input_Bits_Number);
         nb_input_registers  : C.int := C.int(Input_Registers_Number);
         nb_registers        : C.int := C.int(Registers_Number);
         tab_bits            : Byte_Array (0..Bits_Number);
         tab_input_bits      : Byte_Array (0..Input_Bits_Number);
         tab_input_registers : Word_Array (0..Input_Registers_Number);
         tab_registers       : Word_Array (0..Registers_Number);
      end record;
   pragma Convention (C, Modbus_Mapping_Type1);

Ici j'obtiens un warning : variant record as no direct equivalent in C
   
   type Modbus_Mapping_Type2 is
      record
         nb_bits             : C.int := 0;
         nb_input_bits       : C.int := 0;
         nb_input_registers  : C.int := 10;
         nb_registers        : C.int := 20;
         tab_bits            : Byte_Array (0..0);
         tab_input_bits      : Byte_Array (0..0);
         tab_input_registers : Word_Array (0..10);
         tab_registers       : Word_Array (0..20);
      end record;
   pragma Convention (C, Modbus_Mapping_Type2);

Là ça compile, ce qui ne veut pas dire que ça marche.
Mais ça fige la taille de la structure pour de bon.
Technical Details
Message-ID: <14d62379-e11c-46e6-a616-2b48c8685915@googlegroups.com>
Path: arc1-ca.pugleaf.net!k2ni3907qap.0!nntp.google.com!p13no7551810qai.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <4e7e5467-fe89-4d55-8b46-80e3cd8af9f8@googlegroups.com> <ce90c01c-2d8c-4a0c-83d7-1a8d8bab8e7f@googlegroups.com> <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 43d0c745c,3ec9ea2623601032
X-Google-Attributes: gid43d0c745c,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: FRENCH,ASCII
X-Received: by 10.224.175.65 with SMTP id w1mr5096330qaz.7.1359668241010;
        Thu, 31 Jan 2013 13:37:21 -0800 (PST)
X-Received: by 10.49.15.38 with SMTP id u6mr1005131qec.8.1359668240936; Thu,
 31 Jan 2013 13:37:20 -0800 (PST)
Path: arc1-ca.pugleaf.net!k2ni3907qap.0!nntp.google.com!p13no7551810qai.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: fr.comp.lang.ada
Date: Thu, 31 Jan 2013 13:37:20 -0800 (PST)
In-Reply-To: <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=80.119.168.166;
 posting-account=O3LyFwoAAACc1uh60ZcOUmAGdDmGsEcV
NNTP-Posting-Host: 80.119.168.166
References: <4e7e5467-fe89-4d55-8b46-80e3cd8af9f8@googlegroups.com>
 <ce90c01c-2d8c-4a0c-83d7-1a8d8bab8e7f@googlegroups.com> <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <14d62379-e11c-46e6-a616-2b48c8685915@googlegroups.com>
Subject: Re: Ada for Automation
From: slos <new.stephane.los@gmail.com>
Injection-Date: Thu, 31 Jan 2013 21:37:20 +0000
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable