Skip to content

Commit 011827a

Browse files
committed
More integer types supported. Added support for translation of MinValue and MaxValue constants.
1 parent 17bb46b commit 011827a

File tree

2 files changed

+70
-4
lines changed

2 files changed

+70
-4
lines changed

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

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,76 @@ public class CSharpToCppTransformer : Transformer
143143
(new Regex(@"(\W)string(\W)"), "$1const char*$2", null, 0),
144144
// sbyte
145145
// std::int8_t
146-
(new Regex(@"(\W)sbyte(\W)"), "$1std::int8_t$2", null, 0),
146+
(new Regex(@"(?<before>\W)((System\.)?SB|sb)yte(?!\s*=)(?<after>\W)"), "${before}std::int8_t${after}", null, 0),
147+
// sbyte.MinValue
148+
// INT8_MIN
149+
(new Regex(@"(?<before>\W)std::int8_t\.MinValue(?<after>\W)"), "${before}INT8_MIN${after}", null, 0),
150+
// sbyte.MaxValue
151+
// INT8_MAX
152+
(new Regex(@"(?<before>\W)std::int8_t\.MaxValue(?<after>\W)"), "${before}INT8_MAX${after}", null, 0),
153+
// short
154+
// std::int16_t
155+
(new Regex(@"(?<before>\W)((System\.)?Int16|short)(?!\s*=)(?<after>\W)"), "${before}std::int16_t${after}", null, 0),
156+
// short.MinValue
157+
// INT16_MIN
158+
(new Regex(@"(?<before>\W)std::int16_t\.MinValue(?<after>\W)"), "${before}INT16_MIN${after}", null, 0),
159+
// short.MaxValue
160+
// INT16_MAX
161+
(new Regex(@"(?<before>\W)std::int16_t\.MaxValue(?<after>\W)"), "${before}INT16_MAX${after}", null, 0),
162+
// int
163+
// std::int32_t
164+
(new Regex(@"(?<before>\W)((System\.)?I|i)nt(32)?(?!\s*=)(?<after>\W)"), "${before}std::int32_t${after}", null, 0),
165+
// int.MinValue
166+
// INT32_MIN
167+
(new Regex(@"(?<before>\W)std::int32_t\.MinValue(?<after>\W)"), "${before}INT32_MIN${after}", null, 0),
168+
// int.MaxValue
169+
// INT32_MAX
170+
(new Regex(@"(?<before>\W)std::int32_t\.MaxValue(?<after>\W)"), "${before}INT32_MAX${after}", null, 0),
171+
// long
172+
// std::int64_t
173+
(new Regex(@"(?<before>\W)((System\.)?Int64|long)(?!\s*=)(?<after>\W)"), "${before}std::int64_t${after}", null, 0),
174+
// long.MinValue
175+
// INT64_MIN
176+
(new Regex(@"(?<before>\W)std::int64_t\.MinValue(?<after>\W)"), "${before}INT64_MIN${after}", null, 0),
177+
// long.MaxValue
178+
// INT64_MAX
179+
(new Regex(@"(?<before>\W)std::int64_t\.MaxValue(?<after>\W)"), "${before}INT64_MAX${after}", null, 0),
180+
// byte
181+
// std::uint8_t
182+
(new Regex(@"(?<before>\W)((System\.)?Byte|byte)(?!\s*=)(?<after>\W)"), "${before}std::uint8_t${after}", null, 0),
183+
// byte.MinValue
184+
// (std::uint8_t)0
185+
(new Regex(@"(?<before>\W)std::uint8_t\.MinValue(?<after>\W)"), "${before}(std::uint8_t)0${after}", null, 0),
186+
// byte.MaxValue
187+
// UINT8_MAX
188+
(new Regex(@"(?<before>\W)std::uint8_t\.MaxValue(?<after>\W)"), "${before}UINT8_MAX${after}", null, 0),
189+
// ushort
190+
// std::uint16_t
191+
(new Regex(@"(?<before>\W)((System\.)?UInt16|ushort)(?!\s*=)(?<after>\W)"), "${before}std::uint16_t${after}", null, 0),
192+
// ushort.MinValue
193+
// (std::uint16_t)0
194+
(new Regex(@"(?<before>\W)std::uint16_t\.MinValue(?<after>\W)"), "${before}(std::uint16_t)0${after}", null, 0),
195+
// ushort.MaxValue
196+
// UINT16_MAX
197+
(new Regex(@"(?<before>\W)std::uint16_t\.MaxValue(?<after>\W)"), "${before}UINT16_MAX${after}", null, 0),
147198
// uint
148199
// std::uint32_t
149-
(new Regex(@"(\W)uint(\W)"), "$1std::uint32_t$2", null, 0),
200+
(new Regex(@"(?<before>\W)((System\.)?UI|ui)nt(32)?(?!\s*=)(?<after>\W)"), "${before}std::uint32_t${after}", null, 0),
201+
// uint.MinValue
202+
// (std::uint32_t)0
203+
(new Regex(@"(?<before>\W)std::uint32_t\.MinValue(?<after>\W)"), "${before}(std::uint32_t)0${after}", null, 0),
204+
// uint.MaxValue
205+
// UINT32_MAX
206+
(new Regex(@"(?<before>\W)std::uint32_t\.MaxValue(?<after>\W)"), "${before}UINT32_MAX${after}", null, 0),
207+
// ulong
208+
// std::uint64_t
209+
(new Regex(@"(?<before>\W)((System\.)?UInt64|ulong)(?!\s*=)(?<after>\W)"), "${before}std::uint64_t${after}", null, 0),
210+
// ulong.MinValue
211+
// (std::uint64_t)0
212+
(new Regex(@"(?<before>\W)std::uint64_t\.MinValue(?<after>\W)"), "${before}(std::uint64_t)0${after}", null, 0),
213+
// ulong.MaxValue
214+
// UINT64_MAX
215+
(new Regex(@"(?<before>\W)std::uint64_t\.MaxValue(?<after>\W)"), "${before}UINT64_MAX${after}", null, 0),
150216
// char*[] args
151217
// char* args[]
152218
(new Regex(@"([_a-zA-Z0-9:\*]?)\[\] ([a-zA-Z0-9]+)"), "$1 $2[]", null, 0),

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.1.20</VersionPrefix>
7+
<VersionPrefix>0.1.21</VersionPrefix>
88
<Authors>Konstantin Diachenko</Authors>
99
<TargetFrameworks>net471;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>Rule fix.</PackageReleaseNotes>
27+
<PackageReleaseNotes>More integer types supported. Added support for translation of MinValue and MaxValue constants.</PackageReleaseNotes>
2828
</PropertyGroup>
2929

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

0 commit comments

Comments
 (0)