Pārlūkot izejas kodu

* TryGetValue, patch by Denis Volodarsky, mantis #24378

git-svn-id: trunk@24428 -
marco 12 gadi atpakaļ
vecāks
revīzija
a98ba0287d
1 mainītis faili ar 12 papildinājumiem un 0 dzēšanām
  1. 12 0
      packages/fcl-stl/src/gmap.pp

+ 12 - 0
packages/fcl-stl/src/gmap.pp

@@ -63,6 +63,7 @@ type
     function FindGreater(key:TKey):TIterator;inline;
     function FindGreaterEqual(key:TKey):TIterator;inline;
     function GetValue(key:TKey):TValue;inline;
+    function TryGetValue(key:TKey; out Value: TValue): boolean;inline;
     procedure Insert(key:TKey; value:TValue);inline;
     function InsertAndGetIterator(key:TKey; value:TValue):TIterator;inline;
     function Min:TIterator;inline;
@@ -166,6 +167,17 @@ begin
   GetValue:=FSet.NFind(Pair)^.Data.Value;
 end;
 
+function TMap.TryGetValue(key: TKey; out Value: TValue): boolean;
+var Pair:TPair;
+    Node: TMSet.PNode;
+begin
+  Pair.Key:=key;
+  Node := FSet.NFind(Pair);
+  Result := Node <> nil;
+  if Result then
+    Value := Node^.Data.Value;
+end;
+
 procedure TMap.Insert(key:TKey; value:TValue);inline;
 var Pair:TPair;
 begin