Ignore:
Timestamp:
Feb 23, 2011, 7:42:22 AM (14 years ago)
Author:
george
Message:
  • Added: Demo of indexed varblock structure.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • CoolStreaming/UVarBlockSerializer.pas

    r172 r173  
    9393    procedure Clear;
    9494    function TestIndex(Index: Integer): Boolean;
    95     procedure WriteToVarBlock(Stream: TVarBlockSerializer);
    96     procedure ReadFromVarBlock(Stream: TVarBlockSerializer);
     95    procedure WriteToVarBlock(VarBlock: TVarBlockSerializer);
     96    procedure ReadFromVarBlock(VarBlock: TVarBlockSerializer);
    9797    procedure WriteToStream(Stream: TStream);
    9898    procedure ReadFromStream(Stream: TStream);
     
    533533    Temp := TVarBlockSerializer.Create;
    534534    StreamHelper := TStreamHelper.Create(Stream);
     535    Stream.Position := 0;
    535536    ReadVarBlock(Temp);
    536537    Stream.Size := 0;
     
    757758end;
    758759
    759 procedure TVarBlockIndexed.WriteToVarBlock(Stream: TVarBlockSerializer);
     760procedure TVarBlockIndexed.WriteToVarBlock(VarBlock: TVarBlockSerializer);
    760761var
    761762  Mask: Integer;
     
    764765begin
    765766  try
    766     StreamHelper := TStreamHelper.Create(Stream.Stream);
    767     Stream.Stream.Size := 0;
     767    StreamHelper := TStreamHelper.Create(VarBlock.Stream);
     768    VarBlock.Stream.Size := 0;
    768769    Mask := 0;
    769770    for I := 0 to Items.Count - 1 do
    770771      if Assigned(Items[I]) then Mask := Mask or (1 shl I);
    771     Stream.WriteVarUInt(Mask);
     772    VarBlock.WriteVarUInt(Mask);
    772773    for I := 0 to Items.Count - 1 do
    773774      if Assigned(Items[I]) then StreamHelper.WriteStream(TVarBlockSerializer(Items[I]).Stream,
    774775        TVarBlockSerializer(Items[I]).Stream.Size);
    775     if Enclose then Stream.BlockEnclose;
     776    if Enclose then VarBlock.BlockEnclose;
    776777  finally
    777778    StreamHelper.Free;
     
    779780end;
    780781
    781 procedure TVarBlockIndexed.ReadFromVarBlock(Stream: TVarBlockSerializer);
     782procedure TVarBlockIndexed.ReadFromVarBlock(VarBlock: TVarBlockSerializer);
    782783var
    783784  Mask: Integer;
    784785  I: Integer;
    785786begin
    786   if Enclose then Stream.BlockUnclose;
    787   Stream.Stream.Position := 0;
    788   Mask := Stream.ReadVarUInt;
     787  if Enclose then VarBlock.BlockUnclose;
     788  VarBlock.Stream.Position := 0;
     789  Mask := VarBlock.ReadVarUInt;
    789790  I := 0;
    790791  while Mask <> 0 do begin
    791     if Stream.TestMask(Mask, I) then begin
     792    if VarBlock.TestMask(Mask, I) then begin
    792793      if Items.Count <= I then Items.Count := I + 1;
    793794      Items[I] := TVarBlockSerializer.Create;
    794       Stream.ReadItemByMaskIndex(I, TVarBlockSerializer(Items[I]));
     795      VarBlock.ReadItemByMaskIndex(I, TVarBlockSerializer(Items[I]));
    795796      Mask := Mask xor (1 shl I); // Clear bit on current index
    796797    end;
Note: See TracChangeset for help on using the changeset viewer.