diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 75ecb78db..05e98a972 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "9"; public const string Build = "0"; - public const string Revision = "3454"; + public const string Revision = "3456"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 5d0522ed2..9173e33c4 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %COREVERSION%=0 -%REVISION%=3454 +%REVISION%=3456 %MINOR%=9 %MAJOR%=3 diff --git a/PABCNetHelp/LangGuide/Operations_Expressions/bitop.html b/PABCNetHelp/LangGuide/Operations_Expressions/bitop.html index fc97a5198..938c076d3 100644 --- a/PABCNetHelp/LangGuide/Operations_Expressions/bitop.html +++ b/PABCNetHelp/LangGuide/Operations_Expressions/bitop.html @@ -42,6 +42,10 @@
( ).
+ not, and, or xor . + , + .
+shl shr :
@@ -70,6 +74,8 @@ a shr n 3=112, 2 112 11002=12, 12=11002 2 112=3.+ shl shr .
+
diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 0b7bec0c7..76bc8c026 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.9.0.3454 +3.9.0.3456 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 334a394ca..d3aee5090 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.9.0.3454' +!define VERSION '3.9.0.3456' diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index 9706bd11f..bc55cffb7 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -10866,7 +10866,37 @@ begin raise new System.ArgumentNullException('b'); if c = nil then raise new System.ArgumentNullException('c'); - Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z)).Zip(c, (p, z)-> (p[0], p[1], p[2], z)); + Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z)); +end; + +/// Объединяет две последовательности в последовательность двухэлементных кортежей +function Zip
(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + Result := Self.Zip(a, (x, y) -> (x, y)); +end; + +/// Объединяет три последовательности в последовательность трехэлементных кортежей +function Zip (Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + if b = nil then + raise new System.ArgumentNullException('b'); + Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)); +end; + +/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей +function Zip (Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + if b = nil then + raise new System.ArgumentNullException('b'); + if c = nil then + raise new System.ArgumentNullException('c'); + Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z)); end; /// Разъединяет последовательность двухэлементных кортежей на две последовательности. Реализуется двухпроходным алгоритмом diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 9706bd11f..bc55cffb7 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -10866,7 +10866,37 @@ begin raise new System.ArgumentNullException('b'); if c = nil then raise new System.ArgumentNullException('c'); - Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z)).Zip(c, (p, z)-> (p[0], p[1], p[2], z)); + Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z)); +end; + +/// Объединяет две последовательности в последовательность двухэлементных кортежей +function Zip (Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + Result := Self.Zip(a, (x, y) -> (x, y)); +end; + +/// Объединяет три последовательности в последовательность трехэлементных кортежей +function Zip (Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + if b = nil then + raise new System.ArgumentNullException('b'); + Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)); +end; + +/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей +function Zip (Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; +begin + if a = nil then + raise new System.ArgumentNullException('a'); + if b = nil then + raise new System.ArgumentNullException('b'); + if c = nil then + raise new System.ArgumentNullException('c'); + Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z)); end; /// Разъединяет последовательность двухэлементных кортежей на две последовательности. Реализуется двухпроходным алгоритмом diff --git a/bin/Lib/PABCSystem.xml b/bin/Lib/PABCSystem.xml index 39d14ae31..59cf9c273 100644 --- a/bin/Lib/PABCSystem.xml +++ b/bin/Lib/PABCSystem.xml @@ -3219,6 +3219,15 @@ + Объединяет четыре последовательности в последовательность четырехэлементных кортежей + +Объединяет две последовательности в последовательность двухэлементных кортежей ++ +Объединяет три последовательности в последовательность трехэлементных кортежей ++ Объединяет четыре последовательности в последовательность четырехэлементных кортежей +Разъединяет последовательность двухэлементных кортежей на две последовательности. Реализуется двухпроходным алгоритмом