Ver código fonte

+ TCustomZlibStream now descends from TOwnerStream

git-svn-id: trunk@3512 -
michael 19 anos atrás
pai
commit
da32415fc9
1 arquivos alterados com 15 adições e 17 exclusões
  1. 15 17
      fcl/inc/zstream.pp

+ 15 - 17
fcl/inc/zstream.pp

@@ -44,9 +44,8 @@ type
   ECompressionError = class(EZlibError);
   EDecompressionError = class(EZlibError);
 
-  TCustomZlibStream = class(TStream)
+  TCustomZlibStream = class(TOwnerStream)
   private
-    FStrm: TStream;
     FStrmPos: Integer;
     FOnProgress: TNotifyEvent;
     FZRec: TZStream;
@@ -82,7 +81,7 @@ type
     procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer;
     OutEstimate: Integer; var OutBuf: Pointer; var OutBytes: Integer);
   public
-    constructor Create(Source: TStream);
+    constructor Create(ASource: TStream);
     destructor Destroy; override;
     function Read(var Buffer; Count: Longint): Longint; override;
     function Write(const Buffer; Count: Longint): Longint; override;
@@ -200,8 +199,7 @@ end;
 
 constructor TCustomZLibStream.Create(Strm: TStream);
 begin
-  inherited Create;
-  FStrm := Strm;
+  inherited Create(Strm);
   FStrmPos := Strm.Position;
 end;
 
@@ -230,16 +228,16 @@ begin
   FZRec.next_in := nil;
   FZRec.avail_in := 0;
   try
-    if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
+    if Source.Position <> FStrmPos then Source.Position := FStrmPos;
     while (CompressionCheck(deflate(FZRec, Z_FINISH)) <> Z_STREAM_END)
       and (FZRec.avail_out = 0) do
     begin
-      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer));
+      Source.WriteBuffer(FBuffer, sizeof(FBuffer));
       FZRec.next_out := @FBuffer;
       FZRec.avail_out := sizeof(FBuffer);
     end;
     if FZRec.avail_out < sizeof(FBuffer) then
-      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer) - FZRec.avail_out);
+      Source.WriteBuffer(FBuffer, sizeof(FBuffer) - FZRec.avail_out);
   finally
     deflateEnd(FZRec);
   end;
@@ -267,16 +265,16 @@ function TCompressionStream.Write(const Buffer; Count: Longint): Longint;
 begin
   FZRec.next_in := @Buffer;
   FZRec.avail_in := Count;
-  if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
+  if Source.Position <> FStrmPos then Source.Position := FStrmPos;
   while (FZRec.avail_in > 0) do
   begin
     CompressionCheck(deflate(FZRec, 0));
     if FZRec.avail_out = 0 then
     begin
-      FStrm.WriteBuffer(FBuffer, sizeof(FBuffer));
+      Source.WriteBuffer(FBuffer, sizeof(FBuffer));
       FZRec.next_out := @FBuffer;
       FZRec.avail_out := sizeof(FBuffer);
-      FStrmPos := FStrm.Position;
+      FStrmPos := Source.Position;
       Progress(Self);
     end;
   end;
@@ -305,9 +303,9 @@ end;
 
 // TDecompressionStream
 
-constructor TDecompressionStream.Create(Source: TStream);
+constructor TDecompressionStream.Create(ASource: TStream);
 begin
-  inherited Create(Source);
+  inherited Create(ASource);
   FZRec.next_in := @FBuffer;
   DecompressionCheck(inflateInit(FZRec));
 end;
@@ -332,19 +330,19 @@ function TDecompressionStream.Read(var Buffer; Count: Longint): Longint;
 begin
   FZRec.next_out := @Buffer;
   FZRec.avail_out := Count;
-  if FStrm.Position <> FStrmPos then FStrm.Position := FStrmPos;
+  if Source.Position <> FStrmPos then Source.Position := FStrmPos;
   while (FZRec.avail_out > 0) do
   begin
     if FZRec.avail_in = 0 then
     begin
-      FZRec.avail_in := FStrm.Read(FBuffer, sizeof(FBuffer));
+      FZRec.avail_in := Source.Read(FBuffer, sizeof(FBuffer));
       if FZRec.avail_in = 0 then
         begin
           Result := Count - FZRec.avail_out;
           Exit;
         end;
       FZRec.next_in := @FBuffer;
-      FStrmPos := FStrm.Position;
+      FStrmPos := Source.Position;
       Progress(Self);
     end;
     DeCompressionCheck(inflate(FZRec, 0));
@@ -368,7 +366,7 @@ begin
     DecompressionCheck(inflateReset(FZRec));
     FZRec.next_in := @FBuffer;
     FZRec.avail_in := 0;
-    FStrm.Position := 0;
+    Source.Position := 0;
     FStrmPos := 0;
   end
   else if ( (Offset >= 0) and (Origin = soFromCurrent)) or