diff --git a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs index 2f5dceb..0f075eb 100644 --- a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs +++ b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs @@ -230,6 +230,9 @@ public class CSharpToCppTransformer : TextTransformer // string // std::string (new Regex(@"(?\W)(?\W)"), "${before}std::string${after}", 0), + // Constructor(std::string param) { field = param; } + // Constructor(std::string param) : field(std::move(param)) { } + (new Regex(@"(?(private|protected|public): )?(?[a-zA-Z0-9_]+\((?[^)]*std::string [a-zA-Z0-9_]+[^)]*)\))\s*{\s*(?[a-zA-Z0-9_]+) = (?[a-zA-Z0-9_]+);\s*}"), "${access}${constructor} : ${field}(std::move(${param})) { }", 0), // System.ValueTuple // std::tuple (new Regex(@"(?\W)(System\.)?ValueTuple(?!\s*=|\()(?\W)"), "${before}std::tuple${after}", 0), diff --git a/examples/test_constructor.cs b/examples/test_constructor.cs new file mode 100644 index 0000000..df6dd87 --- /dev/null +++ b/examples/test_constructor.cs @@ -0,0 +1,11 @@ +using System; + +class TestClass +{ + private string field; + + public TestClass(string stringParam) + { + field = stringParam; + } +} \ No newline at end of file diff --git a/examples/test_transform.cs b/examples/test_transform.cs new file mode 100644 index 0000000..ce64bda --- /dev/null +++ b/examples/test_transform.cs @@ -0,0 +1,18 @@ +using Platform.RegularExpressions.Transformer.CSharpToCpp; + +var transformer = new CSharpToCppTransformer(); +var input = @"class TestClass +{ + private string field; + + public TestClass(string stringParam) + { + field = stringParam; + } +}"; + +Console.WriteLine("Input:"); +Console.WriteLine(input); +Console.WriteLine("\nOutput:"); +var result = transformer.Transform(input); +Console.WriteLine(result); \ No newline at end of file