소스 검색

* TryGetValue, patch by Denis Volodarsky, mantis #24378

git-svn-id: trunk@24428 -
marco 12 년 전
부모
커밋
a98ba0287d
1개의 변경된 파일12개의 추가작업 그리고 0개의 파일을 삭제
  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