Browse Source

fcl-stl fixes

git-svn-id: trunk@17337 -
vladob 14 years ago
parent
commit
80dcd5f937

+ 12 - 6
packages/fcl-stl/doc/mapexample.pp

@@ -3,7 +3,7 @@ uses gmap, gutil;
 type lesslli=specialize TLess<longint>;
      maplli=specialize TMap<longint, longint, lesslli>;
 
-var data:maplli; i:longint; iterator:maplli.TMSet.PNode;
+var data:maplli; i:longint; iterator:maplli.TIterator;
 
 begin
   data:=maplli.Create;
@@ -11,14 +11,20 @@ begin
   for i:=0 to 10 do
     data[i]:=10*i;
 
+  writeln(data[7]);
+  data[7] := 42;
+
   {Iteration through elements}
   iterator:=data.Min;
-  while iterator<>nil do begin
-    writeln(iterator^.Data.Key, ' ', iterator^.Data.Value);
-    iterator:=data.next(iterator);
-  end;
+  repeat
+    writeln(iterator.Key, ' ', iterator.Value);
+    iterator.Value := 47;
+  until not iterator.next;
+  iterator.Destroy;
 
-  writeln(data.FindLess(7)^.Data.Value);
+  iterator := data.FindLess(7);
+  writeln(iterator.Value);
+  iterator.Destroy;
 
   data.Destroy;
 end.

+ 9 - 6
packages/fcl-stl/doc/setexample.pp

@@ -3,7 +3,7 @@ uses gset, gutil;
 type lesslli=specialize TLess<longint>;
      setlli=specialize TSet<longint, lesslli>;
 
-var data:setlli; i:longint; iterator:setlli.PNode;
+var data:setlli; i:longint; iterator:setlli.TIterator;
 
 begin
   data:=setlli.Create;
@@ -13,12 +13,15 @@ begin
 
   {Iteration through elements}
   iterator:=data.Min;
-  while iterator<>nil do begin
-    writeln(iterator^.Data);
-    iterator:=data.next(iterator);
-  end;
+  repeat
+    writeln(iterator.Data);
+  until not iterator.next;
+  {Don't forget to destroy iterator}
+  iterator.Destroy;
 
-  writeln(data.FindLess(7)^.Data);
+  iterator := data.FindLess(7);
+  writeln(iterator.Data);
+  iterator.Destroy;
 
   data.Destroy;
 end.

+ 1 - 1
packages/fcl-stl/src/ghashset.pp

@@ -66,7 +66,7 @@ end;
 destructor THashSet.Destroy;
 var i:SizeUInt;
 begin
-  for i:=0 to FData.size do
+  for i:=0 to FData.size-1 do
     (FData[i]).Destroy;
   FData.Destroy;
 end;

+ 3 - 0
packages/fcl-stl/tests/gvectortest.pp

@@ -1,4 +1,5 @@
 {$mode objfpc}
+{$ASSERTIONS ON}
 
 unit gvectortest;
 
@@ -35,6 +36,8 @@ begin
     data.pushBack(i);
   for i:=0 to 10 do
     AssertEquals('Wrong data', i, data[i]);
+
+  writeln(data[11]);
   
   AssertEquals('Wrong size', 11, data.size);
   AssertEquals('IsEmpty', false, data.IsEmpty);