X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fengine%2Fe_fixedbuffer.pas;h=5b80d7fdddc9e9c46f899ebd30fec4325fdec59a;hb=9358607d5a98ffd3451f2ea7d4a8332e86cc6079;hp=833fd05b8fc8908b13691f35f96e73ea5fe0bb15;hpb=652c380f1fe8a394de7793f6f386eb0df284d2aa;p=d2df-sdl.git diff --git a/src/engine/e_fixedbuffer.pas b/src/engine/e_fixedbuffer.pas index 833fd05..5b80d7f 100644 --- a/src/engine/e_fixedbuffer.pas +++ b/src/engine/e_fixedbuffer.pas @@ -1,3 +1,19 @@ +(* Copyright (C) DooM 2D:Forever Developers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *) +{$INCLUDE ../shared/a_modes.inc} unit e_fixedbuffer; interface @@ -35,6 +51,7 @@ procedure e_Buffer_Write(B: pTBuffer; V: LongWord); overload; procedure e_Buffer_Write(B: pTBuffer; V: ShortInt); overload; procedure e_Buffer_Write(B: pTBuffer; V: SmallInt); overload; procedure e_Buffer_Write(B: pTBuffer; V: LongInt); overload; +procedure e_Buffer_Write(B: pTBuffer; V: Int64); overload; procedure e_Buffer_Write(B: pTBuffer; V: string); overload; @@ -93,7 +110,7 @@ begin if (B^.WritePos + N > B^.Len) then B^.Len := B^.WritePos + N + 1; - CopyMemory(Pointer(Cardinal(Addr(B^.Data)) + B^.WritePos), + CopyMemory(Pointer(NativeUInt(Addr(B^.Data)) + B^.WritePos), @V, N); B^.WritePos := B^.WritePos + N; @@ -102,7 +119,7 @@ procedure e_Buffer_Read_Generic(B: pTBuffer; var V; N: Cardinal); begin if (B^.ReadPos + N >= BUF_SIZE) then Exit; - CopyMemory(@V, Pointer(Cardinal(Addr(B^.Data)) + B^.ReadPos), N); + CopyMemory(@V, Pointer(NativeUInt(Addr(B^.Data)) + B^.ReadPos), N); B^.ReadPos := B^.ReadPos + N; end; @@ -138,6 +155,10 @@ procedure e_Buffer_Write(B: pTBuffer; V: LongInt); overload; begin e_Buffer_Write_Generic(B, V, 4); end; +procedure e_Buffer_Write(B: pTBuffer; V: Int64); overload; +begin + e_Buffer_Write_Generic(B, V, 8); +end; procedure e_Buffer_Write(B: pTBuffer; V: string); overload; var @@ -158,7 +179,7 @@ begin if (P > B^.Len) then B^.Len := P; - CopyMemory(Pointer(Cardinal(Addr(B^.Data)) + B^.WritePos), + CopyMemory(Pointer(NativeUInt(Addr(B^.Data)) + B^.WritePos), @V[1], Len); B^.WritePos := P; @@ -220,7 +241,7 @@ begin Len := B^.Len - B^.ReadPos; SetLength(Result, Len); - CopyMemory(@Result[1], Pointer(Cardinal(Addr(B^.Data)) + B^.ReadPos), Len); + CopyMemory(@Result[1], Pointer(NativeUInt(Addr(B^.Data)) + B^.ReadPos), Len); B^.ReadPos := B^.ReadPos + Len; end; @@ -235,7 +256,7 @@ end; procedure e_Raw_Read_Generic(P: Pointer; var V; N: Cardinal); begin - CopyMemory(@V, Pointer(Cardinal(P) + RawPos), N); + CopyMemory(@V, Pointer(NativeUInt(P) + RawPos), N); RawPos := RawPos + N; end; @@ -280,7 +301,7 @@ begin if Len = 0 then Exit; SetLength(Result, Len); - CopyMemory(@Result[1], Pointer(Cardinal(P) + RawPos), Len); + CopyMemory(@Result[1], Pointer(NativeUInt(P) + RawPos), Len); RawPos := RawPos + Len; end;