Deutsch   English   Français   Italiano  
<ufr2f8$28d89$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: =?UTF-8?B?U3TDqXBoYW5lIFJpdmnDqHJl?= <stef@genesix.org>
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: <ufr2f8$28d89$1@dont-email.me>
References: <ufcalc$i3v$1@rasp.pasdenom.info>
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: <ufcalc$i3v$1@rasp.pasdenom.info>
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