Skip to content

WIP: Unification du jeu de types entiers de taille fixe

GRASLAND Hadrien requested to merge sophya-int into master

(Attention, cette merge request est basée sur !2 (closed) . On devrait probablement discuter de celle-là en premier, mais si vous voulez voir juste les modifs supplémentaires proposées ici, faites un tour par l'onglet "commits" de l'interface gitlab et cliquez sur le deuxième commit dans l'ordre chronologique pour n'avoir que la partie du diff qui vient de cette merge request)

Actuellement, le code TAcq mélange joyeusement deux ensembles de types entiers de taille fixe:

  • Un ensemble de types entiers qui vient de Sophya (machdefs.h), où les tailles d'entiers sont données en octets (ex: uint_1 = entier non signé 8 bits).
  • Un ensemble de types entiers spéficiques à TAcq (brtypes.h), où les tailles d'entiers sont généralement données en bits (ex: UInt32 = entier non signé 32 bits), mais pas que (exception Byte/SByte).

Personnellement, je trouve ce mélange fragile et piégeux:

  • Je ne sais pas pour vous, mais de mon côté je suis sûr et certain qu'à un moment je vais me planter et écrire uint_8 quand je veux un entier 8 bits.
  • Il suffit que les définitions Sophya et TAcq se désynchronisent pour que ça crée des problèmes. Par exemple, si Sophya est configurée pour utiliser long pour les entiers 64-bit alors que TAcq utilise long long, le code ne compilera pas, même si c'est effectivement le même type entier sous-jacent pour de nombreux compilateurs!

Je vous propose donc faire un peu de ménage et de s'accorder sur un seul jeu de types entiers de taille fixe utilisés pour l'ensemble du code TAcq.

Dans un monde idéal, on pourrait employer pour ça les types entiers qui existent dans la bibliothèque standard du C et du C++, depuis les révisions C99 et C++11 du standard respectivement. Mais j'ai essayé pour vous dans une autre branche, ça ne marchera pas sans migrer d'abord Sophya vers ces types entiers (cf https://gitlab.in2p3.fr/SOPHYA/SophyaLib/-/issues/2 ), ce qui sera peut-être un peu trop invasif à votre goût.

Je vous propose donc, au moins dans un premier temps, le compromis moins invasif de migrer l'ensemble du code TAcq vers les types entiers de Sophya.

Edited by GRASLAND Hadrien

Merge request reports