Prototype
E_RTN EMemory::SpaceMove( ulonglong ullSpaceToMoveSize,
ulonglong ullOffsetDest,
ulonglong ullOffsetSource );

Cette fonction déplace un espace d'une étendue de ullSpaceToMoveSize octet(s) de l'offset source ullOffsetSource à l'offset destination ullOffsetDest.

L'offset destination peut être à l'intérieur de l'espace de travail ou à la limite finale externe. Par contre l'offset source ainsi que toute son étendue à déplacer doivent être à l'intérieur de l'espace de travail.

Attention, l'offset destination ullOffsetDestination ne peut être situé dans l'intervalle de l'espace à déplacer (c'est à dire compris entre l'offset ullOffsetSource+1 sur une étendue de ullSpaceToModeSize-1) sinon il y a chevauchement.
Par exemple pour les données "ABCDEFG", si l'on effectue un déplacement de l'offset 3 d'une étendue de 3 octets (soit "DEF"), alors les offsets 4 (situé à la lettre "E") et 5 (situé à la lettre "F") ne sont pas valides car ils font parties de l'espace à déplacer et la fonction retournera l'erreur erMemAreaRide.
Par contre spécifier comme offset destination l'offset 3 (situé à la lettre "D") ou 6 (situé à la lettre "G") ne produira aucun changement des données. Ces offsets déplacent l'espace exactement au même endroit (voir l'exemple ci-dessous avec les deux derniers déplacements).
Tous les autres offsets destination produiront un déplacement.

 

Argument

ulonglong ullSpaceToMoveSize

taille de l'espace à déplacer.

ulonglong ullOffsetDest

offset destination où l'espace doit être déplacé.

ulonglong ullOffsetSource

offset source qui doit être déplacé.

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Déplacement d'un espace de 2 octets de l'offset source 2 à l'offset destination 6, d'un espace de 2 octets de l'offset source 0 à l'offset destination 4, d'un espace de 2 octets de l'offset source 0 à l'offset destination 6, d'un espace de 2 octets de l'offset source 0 à l'offset destination 2 (aucun effet), d'un espace de 2 octets de l'offset source 2 à l'offset destination 2 (aucun effet) d'un objet EMemory alloué de 6 octets contenant les données 0x41, 0x42, 0x43, 0x44, 0x45 et 0x46 ("ABCDEF" en ASCII).

Code :

EMemory eMem( "ABCDEF", 6 ); // objet EMemory alloué de 6 octets

eMem.TraceEx( _T("eMem") );
eMem.SpaceMove( 2, 6, 2 ); // 6=offset final externe
eMem.TraceEx( _T("eMem") );
eMem.SpaceMove( 2, 4, 0 );
eMem.TraceEx( _T("eMem") );
eMem.SpaceMove( 2, 6, 0 ); // 6=offset final externe
eMem.TraceEx( _T("eMem") );
eMem.SpaceMove( 2, 2, 0 ); // déplacement au même emplacement
eMem.TraceEx( _T("eMem") );
eMem.SpaceMove( 2, 2, 2 ); // déplacement au même emplacement
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 .. .. .. .. .. .. .. .. .. .. [ABCDEF]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 45 46 43 44 .. .. .. .. .. .. .. .. .. .. [ABEFCD]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 45 46 41 42 43 44 .. .. .. .. .. .. .. .. .. .. [EFABCD]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 .. .. .. .. .. .. .. .. .. .. [ABCDEF]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 .. .. .. .. .. .. .. .. .. .. [ABCDEF]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F458', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='6' byte(s).
# Array data from offset '0x00000000' to offset '0x00000005', length=6 byte(s).
# Offset start 0x00000000 41 42 43 44 45 46 .. .. .. .. .. .. .. .. .. .. [ABCDEF]
### End #

Vue :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  41
A
42
B
43
C
44
D
45
E
46
F

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  41
A
42
B
45
E
46
F
43
C
44
D

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  45
E
46
F
41
A
42
B
43
C
44
D

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  41
A
42
B
43
C
44
D
45
E
46
F

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  41
A
42
B
43
C
44
D
45
E
46
F

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
  00 01 02 03 04 05
  41
A
42
B
43
C
44
D
45
E
46
F

 

Minimum
Version 1.0.0