Skip to content

WIP: Utilisation des types entiers de la norme C++

GRASLAND Hadrien requested to merge stdint into master

Cette soumission se base sur !2 (closed) et ne devrait donc être évaluée qu'après coup.

Ici, l'idée est de simplifier l'interaction du code écrit en C++ récent avec SOPHYA en utilisant systématiquement dans l'implémentation SOPHYA les types entiers qui sont désormais fournis par la norme C++.

Ainsi...

  • int_1 devient un alias de int8_t
  • int_2 devient un alias de int16_t
  • int_4 devient un alias de int32_t
  • int_8 devient un alias de int64_t
  • Idem pour les versions non signées
  • sa_size_t devient un alias de ptrdiff_t (et non size_t car il doit être signé)

Les premiers changements permettent au code utilisant les types entiers de taille fixe normalisés de stdint.h d'interagir sans soucis avec du code SOPHYA basé sur les types int_x.

Initialement, je voulais même migrer le code SOPHYA aux types stdint, mais il s'avère qu'en pratique, Sophya expose le nom des types entiers utilisés en interne de diverses manières (APIs émettant/recevant des chaînes de caractères avec ce nom dedans, enums nommées par rapport aux types entiers dans datatypes.h, APIs suivant une convention en U1/2/4/8...), donc j'ai trop peur de casser quelque chose ou de perturber les gens en effectuant cette migration.

En revanche, c'est possible de migrer TAcq aux types stdint, et c'est ce que je vais tenter après.


Je m'attends à ce que le point sur la modification de sa_size_t soit potentiellement plus polémique (peut créer des incompatibilités binaires si des données en sa_size_t sont écrites dans des fichiers), donc je suis prêt à revenir dessus.

Je me disais juste que si on est parti pour moderniser nos types entiers, ça vaut le coup d'enlever une "surprise" possible au niveau du size_t en se rapprochant des types indice standard du C/++.


Résout le bug #2 (closed)

Edited by GRASLAND Hadrien

Merge request reports