Skip to content

Commit be48356

Browse files
committed
Version 0.2.5. Better support for translation of comparers.
1 parent 5b87205 commit be48356

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,31 @@ public class CSharpToCppTransformer : TextTransformer
2323
// Platform.Collections.Methods.Lists
2424
// Platform::Collections::Methods::Lists
2525
(new Regex(@"(namespace[^\r\n]+?)\.([^\r\n]+?)"), "$1::$2", 20),
26+
// Insert markers
27+
// EqualityComparer<T> _equalityComparer = EqualityComparer<T>.Default;
28+
// EqualityComparer<T> _equalityComparer = EqualityComparer<T>.Default;/*~_comparer~*/
29+
(new Regex(@"(?<declaration>EqualityComparer<(?<type>[^>\n]+)> (?<comparer>[a-zA-Z0-9_]+) = EqualityComparer<\k<type>>\.Default;)"), "${declaration}/*~${comparer}~*/", 0),
30+
// /*~_equalityComparer~*/..._equalityComparer.Equals(Minimum, value)
31+
// /*~_equalityComparer~*/...Minimum == value
32+
(new Regex(@"(?<before>/\*~(?<comparer>[a-zA-Z0-9_]+)~\*/(.|\n)+\W)\k<comparer>\.Equals\((?<left>[^,\n]+), (?<right>[^)\n]+)\)"), "${before}${left} == ${right}", 50),
33+
// Remove markers
34+
// /*~_equalityComparer~*/
35+
//
36+
(new Regex(@"\r?\n[^\n]+/\*~[a-zA-Z0-9_]+~\*/\r\n([ \t]*\r\n)?"), Environment.NewLine, 10),
37+
// Insert markers
38+
// Comparer<T> _comparer = Comparer<T>.Default;
39+
// Comparer<T> _comparer = Comparer<T>.Default;/*~_comparer~*/
40+
(new Regex(@"(?<declaration>Comparer<(?<type>[^>\n]+)> (?<comparer>[a-zA-Z0-9_]+) = Comparer<\k<type>>\.Default;)"), "${declaration}/*~${comparer}~*/", 0),
41+
// /*~_comparer~*/..._comparer.Compare(Minimum, value) <= 0
42+
// /*~_comparer~*/...Minimum <= value
43+
(new Regex(@"(?<before>/\*~(?<comparer>[a-zA-Z0-9_]+)~\*/(.|\n)+\W)\k<comparer>\.Compare\((?<left>[^,\n]+), (?<right>[^)\n]+)\)\s*(?<comparison>[<>=]=?)\s*0(?<after>\D)"), "${before}${left} ${comparison} ${right}${after}", 50),
44+
// Remove markers
45+
// private static readonly Comparer<T> _comparer = Comparer<T>.Default;/*~_comparer~*/
46+
//
47+
(new Regex(@"\r?\n[^\n]+/\*~[a-zA-Z0-9_]+~\*/\r\n([ \t]*\r\n)?"), Environment.NewLine, 10),
2648
// Comparer<TArgument>.Default.Compare(maximumArgument, minimumArgument) < 0
2749
// maximumArgument < minimumArgument
28-
(new Regex(@"Comparer<[^>\n]+>\.Default\.Compare\(\s*(?<first>[^,)\n]+),\s*(?<second>[^\)\n]+)\s*\)\s*(?<comparison>[<>=]=?)\s*0"), "${first} ${comparison} ${second}", 0),
50+
(new Regex(@"Comparer<[^>\n]+>\.Default\.Compare\(\s*(?<first>[^,)\n]+),\s*(?<second>[^\)\n]+)\s*\)\s*(?<comparison>[<>=]=?)\s*0(?<after>\D)"), "${first} ${comparison} ${second}${after}", 0),
2951
// out TProduct
3052
// TProduct
3153
(new Regex(@"(?<before>(<|, ))(in|out) (?<typeParameter>[a-zA-Z0-9]+)(?<after>(>|,))"), "${before}${typeParameter}${after}", 10),

csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/Platform.RegularExpressions.Transformer.CSharpToCpp.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<Description>LinksPlatform's Platform.RegularExpressions.Transformer.CSharpToCpp Class Library</Description>
55
<Copyright>Konstantin Diachenko</Copyright>
66
<AssemblyTitle>Platform.RegularExpressions.Transformer.CSharpToCpp</AssemblyTitle>
7-
<VersionPrefix>0.2.4</VersionPrefix>
7+
<VersionPrefix>0.2.5</VersionPrefix>
88
<Authors>Konstantin Diachenko</Authors>
99
<TargetFrameworks>net472;netstandard2.0;netstandard2.1</TargetFrameworks>
1010
<AssemblyName>Platform.RegularExpressions.Transformer.CSharpToCpp</AssemblyName>
@@ -24,7 +24,7 @@
2424
<IncludeSymbols>true</IncludeSymbols>
2525
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
2626
<LangVersion>latest</LangVersion>
27-
<PackageReleaseNotes>Using two universal rules for translation of limits of primitive types.</PackageReleaseNotes>
27+
<PackageReleaseNotes>Better support for translation of comparers.</PackageReleaseNotes>
2828
</PropertyGroup>
2929

3030
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">

0 commit comments

Comments
 (0)