From 64297e9c963baf5240f5684fa178329ed697af9e Mon Sep 17 00:00:00 2001 From: maciej-izak Date: Thu, 22 Mar 2018 23:10:09 +0000 Subject: [PATCH] rtl-generics: new examples for THashSet collection git-svn-id: trunk@38600 - --- .gitattributes | 8 +++ .../examples/thashset/thashset_exceptwith.lpi | 61 +++++++++++++++++++ .../examples/thashset/thashset_exceptwith.lpr | 50 +++++++++++++++ .../thashset/thashset_intersectwith.lpi | 61 +++++++++++++++++++ .../thashset/thashset_intersectwith.lpr | 53 ++++++++++++++++ .../thashset/thashset_symmetricexceptwith.lpi | 61 +++++++++++++++++++ .../thashset/thashset_symmetricexceptwith.lpr | 50 +++++++++++++++ .../examples/thashset/thashset_unionwith.lpi | 61 +++++++++++++++++++ .../examples/thashset/thashset_unionwith.lpr | 53 ++++++++++++++++ 9 files changed, 458 insertions(+) create mode 100644 packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi create mode 100644 packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr create mode 100644 packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi create mode 100644 packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr create mode 100644 packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi create mode 100644 packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr create mode 100644 packages/rtl-generics/examples/thashset/thashset_unionwith.lpi create mode 100644 packages/rtl-generics/examples/thashset/thashset_unionwith.lpr diff --git a/.gitattributes b/.gitattributes index 7866dc5b8b..d57cebdbb0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7406,6 +7406,14 @@ packages/rtl-generics/examples/thashmapcaseinsensitive/thashmapcaseinsensitive.l packages/rtl-generics/examples/thashmapcaseinsensitive/thashmapcaseinsensitive.lpr svneol=native#text/pascal packages/rtl-generics/examples/thashmapextendedequalitycomparer/thashmapextendedequalitycomparer.lpi svneol=native#text/xml packages/rtl-generics/examples/thashmapextendedequalitycomparer/thashmapextendedequalitycomparer.lpr svneol=native#text/pascal +packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi svneol=native#text/xml +packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr svneol=native#text/pascal +packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi svneol=native#text/xml +packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr svneol=native#text/pascal +packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi svneol=native#text/xml +packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr svneol=native#text/pascal +packages/rtl-generics/examples/thashset/thashset_unionwith.lpi svneol=native#text/xml +packages/rtl-generics/examples/thashset/thashset_unionwith.lpr svneol=native#text/pascal packages/rtl-generics/examples/tobjectlist/tobjectlistproject.lpi svneol=native#text/xml packages/rtl-generics/examples/tobjectlist/tobjectlistproject.lpr svneol=native#text/pascal packages/rtl-generics/examples/tqueue/tqueueproject.lpi svneol=native#text/xml diff --git a/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi new file mode 100644 index 0000000000..f3609824d9 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpi @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <Units Count="1"> + <Unit0> + <Filename Value="thashset_exceptwith.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="thashset_exceptwith"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir);..\..\src\inc"/> + <OtherUnitFiles Value="..\..\src"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr new file mode 100644 index 0000000000..8331d95ff3 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr @@ -0,0 +1,50 @@ +program thashset_exceptwith; + +{$MODE DELPHI} +{$APPTYPE CONSOLE} + +uses + SysUtils, Generics.Collections; + +function SetToStr(ASet: THashSet<Integer>): string; +var + i: Integer; +begin + Result := '('; + for i in ASet do + Result := Result + ' ' + IntToStr(i); + Result := Result + ' )'; +end; + +procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<Integer>); +begin + WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)])); +end; + +var + LowNumbers: THashSet<Integer>; + HighNumbers: THashSet<Integer>; + i: Integer; +begin + LowNumbers := THashSet<Integer>.Create; + HighNumbers := THashSet<Integer>.Create; + + for i := 0 to 5 do + LowNumbers.Add(i); + + for i := 3 to 9 do + HighNumbers.Add(i); + + WriteLnHashSet('LowNumbers', LowNumbers); + WriteLnHashSet('HighNumbers', HighNumbers); + + WriteLn('< HighNumbers ExceptWith LowNumbers >'); + HighNumbers.ExceptWith(LowNumbers); + WriteLnHashSet('HighNumbers', HighNumbers); + + HighNumbers.Free; + LowNumbers.Free; + + ReadLn; +end. + diff --git a/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi new file mode 100644 index 0000000000..aa007f2c8a --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpi @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="10"/> + <PathDelim Value="\"/> + <General> + <Flags> + <MainUnitHasCreateFormStatements Value="False"/> + <MainUnitHasTitleStatement Value="False"/> + <MainUnitHasScaledStatement Value="False"/> + </Flags> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="thashset_intersectwith"/> + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <Units Count="1"> + <Unit0> + <Filename Value="thashset_intersectwith.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="thashset_intersectwith"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir);..\..\src\inc"/> + <OtherUnitFiles Value="..\..\src"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr new file mode 100644 index 0000000000..51771e2127 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_intersectwith.lpr @@ -0,0 +1,53 @@ +program thashset_intersectwith; + +{$MODE DELPHI} +{$APPTYPE CONSOLE} + +uses + SysUtils, Generics.Collections; + +function SetToStr(ASet: THashSet<string>): string; +var + i: string; +begin + Result := '('; + for i in ASet do + Result := Result + ' ' + i; + Result := Result + ' )'; +end; + +procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<string>); +begin + WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)])); +end; + +var + Group1: THashSet<string>; + Group2: THashSet<string>; + Group3: THashSet<string>; +begin + Group1 := THashSet<string>.Create; + Group2 := THashSet<string>.Create; + + Group1.Add('User1'); + Group1.Add('User2'); + Group1.Add('User3'); + Group2.Add('User3'); + Group2.Add('User4'); + Group2.Add('User5'); + + WriteLnHashSet('Group1', Group1); + WriteLnHashSet('Group2', Group2); + + WriteLn('< Group3 IntersectWith Group2 >'); + Group3 := THashSet<string>.Create(Group1); + Group3.IntersectWith(Group2); + WriteLnHashSet('Group3', Group3); + + Group3.Free; + Group2.Free; + Group1.Free; + + ReadLn; +end. + diff --git a/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi new file mode 100644 index 0000000000..46083943c9 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpi @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="10"/> + <PathDelim Value="\"/> + <General> + <Flags> + <MainUnitHasCreateFormStatements Value="False"/> + <MainUnitHasTitleStatement Value="False"/> + <MainUnitHasScaledStatement Value="False"/> + </Flags> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="thashset_symmetricexceptwith"/> + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <Units Count="1"> + <Unit0> + <Filename Value="thashset_symmetricexceptwith.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="thashset_symmetricexceptwith"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir);..\..\src\inc"/> + <OtherUnitFiles Value="..\..\src"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr new file mode 100644 index 0000000000..5b29e13511 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_symmetricexceptwith.lpr @@ -0,0 +1,50 @@ +program thashset_symmetricexceptwith; + +{$MODE DELPHI} +{$APPTYPE CONSOLE} + +uses + SysUtils, Generics.Collections; + +function SetToStr(ASet: THashSet<Integer>): string; +var + i: Integer; +begin + Result := '('; + for i in ASet do + Result := Result + ' ' + IntToStr(i); + Result := Result + ' )'; +end; + +procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<Integer>); +begin + WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)])); +end; + +var + LowNumbers: THashSet<Integer>; + HighNumbers: THashSet<Integer>; + i: Integer; +begin + LowNumbers := THashSet<Integer>.Create; + HighNumbers := THashSet<Integer>.Create; + + for i := 0 to 5 do + LowNumbers.Add(i); + + for i := 3 to 9 do + HighNumbers.Add(i); + + WriteLnHashSet('LowNumbers', LowNumbers); + WriteLnHashSet('HighNumbers', HighNumbers); + + WriteLn('< HighNumbers SymmetricExceptWith LowNumbers >'); + HighNumbers.SymmetricExceptWith(LowNumbers); + WriteLnHashSet('HighNumbers', HighNumbers); + + HighNumbers.Free; + LowNumbers.Free; + + ReadLn; +end. + diff --git a/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi new file mode 100644 index 0000000000..c53f6dcf28 --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpi @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="10"/> + <PathDelim Value="\"/> + <General> + <Flags> + <MainUnitHasCreateFormStatements Value="False"/> + <MainUnitHasTitleStatement Value="False"/> + <MainUnitHasScaledStatement Value="False"/> + </Flags> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="thashset_unionwith"/> + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <Units Count="1"> + <Unit0> + <Filename Value="thashset_unionwith.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="thashset_unionwith"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir);..\..\src\inc"/> + <OtherUnitFiles Value="..\..\src"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr new file mode 100644 index 0000000000..90b7e6868a --- /dev/null +++ b/packages/rtl-generics/examples/thashset/thashset_unionwith.lpr @@ -0,0 +1,53 @@ +program thashset_unionwith; + +{$MODE DELPHI} +{$APPTYPE CONSOLE} + +uses + SysUtils, Generics.Collections; + +function SetToStr(ASet: THashSet<Integer>): string; +var + i: Integer; +begin + Result := '('; + for i in ASet do + Result := Result + ' ' + IntToStr(i); + Result := Result + ' )'; +end; + +procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<Integer>); +begin + WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)])); +end; + +var + EvenNumbers: THashSet<Integer>; + OddNumbers: THashSet<Integer>; + Numbers: THashSet<Integer>; + i: Integer; +begin + EvenNumbers := THashSet<Integer>.Create; + OddNumbers := THashSet<Integer>.Create; + + for i := 0 to 4 do + begin + EvenNumbers.Add(i * 2); + OddNumbers.Add((i * 2) + 1); + end; + + WriteLnHashSet('EvenNumbers', EvenNumbers); + WriteLnHashSet('OddNumbers', OddNumbers); + + WriteLn('< Numbers UnionWith OddNumbers >'); + Numbers := THashSet<Integer>.Create(EvenNumbers); + Numbers.UnionWith(OddNumbers); + WriteLnHashSet('Numbers', Numbers); + + Numbers.Free; + OddNumbers.Free; + EvenNumbers.Free; + + ReadLn; +end. +