Prototype |
E_RTN | EMemory::SpaceSwapAdjacent( | ulonglong | ullSpaceToSwapSize, |
ulonglong | ullOffset = 0, | ||
ulonglong | ullOffsetSize = EMemory::SizeUpToEnd ); |
Cette fonction intervertit tous les blocs d'octets adjacents (contigus) d'une taille indicative de ullSpaceToSwapSize octet(s) d'un intervalle de travail.
Par exemple pour les données "ABCDE" et pour une taille indicative de 1 octet, la fonction intervertit "A" et "B", "C" et "D" mais "E" n'a pas de donnée avec laquelle s'intervertir. Donc le résultat final est "BADCE".
Pour que la fonction puisse intervertir des blocs d'octets, il faut que l'espace de travail ait assez de données pour pouvoir le faire. C'est à dire que pour intervertir des blocs de 3 octets, il faut au moins 6 octets (les 3 premiers octets sont intervertis avec les 3 prochains octets).
Si la taille de l'intervalle de travail ne dispose pas d'assez de blocs à intervertir, la fonction se termine (dans l'exemple ci-dessus, l'octet "E" n'est pas intervertis car il n'y a pas de bloc avec lequel l'intervertir).
Argument |
ulonglong ullSpaceToSwapSize taille indicative des blocs d'octets à intervertir. |
ulonglong ullOffset = 0 offset de départ de l'intervalle de travail de l'interversion. |
ulonglong ullOffsetSize = EMemory::SizeUpToEnd étendue de l'intervalle de travail de l'interversion. |
Retour |
E_RTN voir la section retour de la librairie Eclat. |
Exemple |
Description : Interversion des blocs d'octets adjacents d'une taille indicative de 3 octets sur l'ensemble de l'espace de travail d'un objet EMemory alloué de 13 octets d'espace de travail contenant les données 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C et 0x4D ("ABCDEFGHIJKLM" en ASCII). Remarque : L'octet 0x4D ("M") n'est pas interverti car il n'y a plus assez de place dans l'espace de travail pour former un bloc d'octets de 3 octets et qu'il n'y a pas de bloc d'octets avec lequel l'intervertir. |
Code :
|
Sortie :
|
Vue :
|
Voir aussi |
Minimum |
Version | 1.0.0 |