Browse Source

Merge pull request #455 from ddobrev/master

Sped up the generator by using a constant instead of constructing strings
pull/456/head
João Matos 10 years ago
parent
commit
a0c90492c0
  1. 2
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  2. 27
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

2
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -928,7 +928,7 @@ namespace CppSharp.Generators.CLI @@ -928,7 +928,7 @@ namespace CppSharp.Generators.CLI
var @params = GenerateFunctionParamsMarshal(function.Parameters, function);
var returnIdentifier = Generator.GeneratedIdentifier("ret");
var returnIdentifier = Helpers.ReturnIdentifier;
if (needsReturn)
if (retType.Type.IsReference())
Write("auto &{0} = ", returnIdentifier);

27
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -41,12 +41,13 @@ namespace CppSharp.Generators.CSharp @@ -41,12 +41,13 @@ namespace CppSharp.Generators.CSharp
return new string(id.Select(c => char.IsLetterOrDigit(c) ? c : '_').ToArray());
}
public const string InstanceField = "__instance";
public const string InstanceIdentifier = "__Instance";
public static readonly string InstanceField = Generator.GeneratedIdentifier("instance");
public static readonly string InstanceIdentifier = Generator.GeneratedIdentifier("Instance");
public static readonly string ReturnIdentifier = Generator.GeneratedIdentifier("ret");
public const string OwnsNativeInstanceIdentifier = "__ownsNativeInstance";
public static readonly string OwnsNativeInstanceIdentifier = Generator.GeneratedIdentifier("ownsNativeInstance");
public const string CreateInstanceIdentifier = "__CreateInstance";
public static readonly string CreateInstanceIdentifier = Generator.GeneratedIdentifier("CreateInstance");
public static string GetAccess(AccessSpecifier accessSpecifier)
{
@ -1437,7 +1438,7 @@ namespace CppSharp.Generators.CSharp @@ -1437,7 +1438,7 @@ namespace CppSharp.Generators.CSharp
var hasReturn = !method.OriginalReturnType.Type.IsPrimitiveType(PrimitiveType.Void);
if (hasReturn)
Write("var _ret = ");
Write("var {0} = ", Helpers.ReturnIdentifier);
// HACK: because of the non-shared v-table entries bug we must look for the real method by name
Method m = ((Class) method.Namespace).GetMethodByName(method.Name);
@ -1454,14 +1455,14 @@ namespace CppSharp.Generators.CSharp @@ -1454,14 +1455,14 @@ namespace CppSharp.Generators.CSharp
{
var param = new Parameter
{
Name = "_ret",
Name = Helpers.ReturnIdentifier,
QualifiedType = method.ReturnType
};
// Marshal the managed result to native
var ctx = new CSharpMarshalContext(Driver)
{
ArgName = "_ret",
ArgName = Helpers.ReturnIdentifier,
Parameter = param,
Function = method
};
@ -2290,7 +2291,7 @@ namespace CppSharp.Generators.CSharp @@ -2290,7 +2291,7 @@ namespace CppSharp.Generators.CSharp
if (construct == null)
{
WriteLine("var {0} = new {1}.Internal();", GeneratedIdentifier("ret"),
WriteLine("var {0} = new {1}.Internal();", Helpers.ReturnIdentifier,
QualifiedIdentifierIfNeeded(function, retClass.OriginalClass ?? retClass));
}
else
@ -2301,7 +2302,7 @@ namespace CppSharp.Generators.CSharp @@ -2301,7 +2302,7 @@ namespace CppSharp.Generators.CSharp
{
Type = indirectRetType.Type.Desugar()
}),
GeneratedIdentifier("ret"));
Helpers.ReturnIdentifier);
else
WriteLine("var {0} = {1};", construct);
}
@ -2326,7 +2327,7 @@ namespace CppSharp.Generators.CSharp @@ -2326,7 +2327,7 @@ namespace CppSharp.Generators.CSharp
if (originalFunction.HasIndirectReturnTypeParameter)
{
var name = string.Format("new IntPtr(&{0})", GeneratedIdentifier("ret"));
var name = string.Format("new IntPtr(&{0})", Helpers.ReturnIdentifier);
names.Insert(0, name);
}
@ -2367,7 +2368,7 @@ namespace CppSharp.Generators.CSharp @@ -2367,7 +2368,7 @@ namespace CppSharp.Generators.CSharp
}
if (needsReturn && !originalFunction.HasIndirectReturnTypeParameter)
Write("var {0} = ", GeneratedIdentifier("ret"));
Write("var {0} = ", Helpers.ReturnIdentifier);
WriteLine("{0}({1});", functionName, string.Join(", ", names));
@ -2417,8 +2418,8 @@ namespace CppSharp.Generators.CSharp @@ -2417,8 +2418,8 @@ namespace CppSharp.Generators.CSharp
var ctx = new CSharpMarshalContext(Driver)
{
ArgName = GeneratedIdentifier("ret"),
ReturnVarName = GeneratedIdentifier("ret"),
ArgName = Helpers.ReturnIdentifier,
ReturnVarName = Helpers.ReturnIdentifier,
ReturnType = retType
};

Loading…
Cancel
Save