Path: ...!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: =?UTF-8?B?U3TDqXBoYW5lIFJpdmnDqHJl?= Newsgroups: fr.comp.lang.ada Subject: =?UTF-8?Q?Re=3A_Question_structure_de_donn=C3=A9es?= Date: Sat, 7 Oct 2023 09:47:52 +0200 Organization: La Maison Lines: 98 Message-ID: References: Reply-To: stef@genesix.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 7 Oct 2023 07:47:52 -0000 (UTC) Injection-Info: dont-email.me; posting-host="601d9e4e3c90682c01470191180b8e4b"; logging-data="2372873"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+IlKlw7cUOL2rPcvYRFThJ5ZJovnIKENU=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:OO7sJLvqGpiHMNI9vK+R0zFcQC8= Content-Language: fr In-Reply-To: Bytes: 4506 Pas sûr de comprendre ton besoin (Twain ? c'est du scan ça, non ?) mais, par exemple, si l'idée est d'examiner le hardware, 'capacité' par 'capacité', on pourrait imaginer : Une première structure dans un conteneur, stockant les 'capacités'. Dans cette structure, tu as un type qui pointe sur un second conteneur qui décrit chaque 'capacité'. Dans cette nouvelle structure tu as des types pour décrire les éléments communs à toutes les 'capacités' et un type vers... Un troisième conteneur, dont le type est clé-valeur pour enregistrer toutes les caps spécifiques à cette 'capacité'. Tu disposes alors de trois conteneurs structurants mais qui s'adapteront à toutes les 'capacités' présentes et futures. Ada à de très beaux conteneurs¹ et le résultat est beau et puissant. Je ne suis pas si je suis très clair mais j'aurais tenté de faire le canard en plastique². ¹ Et le compilo Ada super fort pour relever une erreur de logique dans les itérations, je me suis fait avoir dernièrement comme un nigaud, merci aux copains de m'avoir ouvert les yeux :). ² https://fr.wikipedia.org/wiki/M%C3%A9thode_du_canard_en_plastique Je > > Je code une librairie qui s'interface sur une API (twain) qui permet à > l'application de découvrir les capacités du matériel à l'exécution. > > Une capacité a un type de base parmi les suivants : > >    type t_TWTY is (TWTY_INT8, >                    TWTY_INT16, >                    TWTY_INT32, > >                    TWTY_UINT8, >                    TWTY_UINT16, >                    TWTY_UINT32, > >                    TWTY_BOOL, > >                    TWTY_FIX32, > >                    TWTY_FRAME, > >                    TWTY_STR32, >                    TWTY_STR64, >                    TWTY_STR128, >                    TWTY_STR255, >                    TWTY_HANDLE >                   ); > > Donc, une donnée sur 8bits signés ou sur 16bits signés ou... > > Par dessus le type de base, il y a le type de conteneur : > >    type t_ConType is (TWON_ARRAY, >                       TWON_ENUMERATION, >                       TWON_ONEVALUE, >                       TWON_RANGE, >                      ); > > Donc, une donnée unique ou un tableau de données ou... > > Comme je crée une librairie de haut niveau, je voudrais une abstraction > supplémentaire du type de données. Par exemple, une capacité de type > TWON_ONEVALUE / TWTY_UINT32 pourrait correspondre à un bit-mask de > fonctionnalités possibles (record de booléens - 1 bit par booléen). > > Il y a des capacités prédéfinies par la documentation de l'API twain. > Mais la plupart des capacités sont à découvrir "à la volée". > > Le but est que la librairie construise une structure de données > utilisable par l'application. > > Je ne vois pas comment coder ça intelligemment en Ada (je saurais le > faire à la C). > > Je suis preneur de toute information pouvant m'éclairer ;) > > Nicolas -- Stéphane Rivière Ile d'Oléron - France