Browse Source

Simplify GetFunctionNativeIdentifier.

pull/1/head
triton 12 years ago
parent
commit
bf35ce0f04
  1. 28
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

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

@ -873,7 +873,7 @@ namespace CppSharp.Generators.CSharp
method.Kind == CXXMethodKind.Operator) method.Kind == CXXMethodKind.Operator)
Write("static "); Write("static ");
var functionName = GetFunctionIdentifier(method, @class); var functionName = GetFunctionIdentifier(method);
if (method.IsConstructor || method.IsDestructor) if (method.IsConstructor || method.IsDestructor)
Write("{0}(", functionName); Write("{0}(", functionName);
@ -967,7 +967,7 @@ namespace CppSharp.Generators.CSharp
WriteLine("{0} = Marshal.AllocHGlobal({1});", Helpers.InstanceIdentifier, WriteLine("{0} = Marshal.AllocHGlobal({1});", Helpers.InstanceIdentifier,
@class.Layout.Size); @class.Layout.Size);
Write("Internal.{0}({1}", GetFunctionNativeIdentifier(method, @class), Write("Internal.{0}({1}", GetFunctionNativeIdentifier(method),
Helpers.InstanceIdentifier); Helpers.InstanceIdentifier);
if (@params.Any()) if (@params.Any())
Write(", "); Write(", ");
@ -1045,7 +1045,7 @@ namespace CppSharp.Generators.CSharp
parameters = function.Parameters; parameters = function.Parameters;
var functionName = string.Format("Internal.{0}", var functionName = string.Format("Internal.{0}",
GetFunctionNativeIdentifier(function, @class)); GetFunctionNativeIdentifier(function));
GenerateFunctionCall(functionName, parameters, function, @class); GenerateFunctionCall(functionName, parameters, function, @class);
} }
@ -1432,37 +1432,41 @@ namespace CppSharp.Generators.CSharp
} }
} }
public string GetFunctionIdentifier(Function function, Class @class) public string GetFunctionIdentifier(Function function)
{ {
var identifier = SafeIdentifier(function.Name);
var printer = TypePrinter as CSharpTypePrinter; var printer = TypePrinter as CSharpTypePrinter;
var isNativeContext = printer.ContextKind == CSharpTypePrinterContextKind.Native; var isNativeContext = printer.ContextKind == CSharpTypePrinterContextKind.Native;
string identifier;
var method = function as Method; var method = function as Method;
if (method != null && method.Kind == CXXMethodKind.Operator) if (method != null && method.IsOperator)
{ {
if (isNativeContext) if (isNativeContext)
identifier = "Operator" + method.OperatorKind.ToString(); identifier = "Operator" + method.OperatorKind.ToString();
else else
identifier = GetOperatorIdentifier(method.OperatorKind); identifier = GetOperatorIdentifier(method.OperatorKind);
} }
else
{
identifier = SafeIdentifier(function.Name);
}
var overloads = function.Namespace.GetFunctionOverloads(function).ToList(); var overloads = function.Namespace.GetFunctionOverloads(function).ToList();
var index = overloads.IndexOf(function); var index = overloads.IndexOf(function);
if (isNativeContext && index >= 0) if (isNativeContext && index >= 0)
identifier += index.ToString(); identifier += index.ToString(CultureInfo.InvariantCulture);
return identifier; return identifier;
} }
public string GetFunctionNativeIdentifier(Function function, Class @class = null) public string GetFunctionNativeIdentifier(Function function)
{ {
var typePrinter = TypePrinter as CSharpTypePrinter; var typePrinter = TypePrinter as CSharpTypePrinter;
typePrinter.PushContext(CSharpTypePrinterContextKind.Native); typePrinter.PushContext(CSharpTypePrinterContextKind.Native);
var name = GetFunctionIdentifier(function, @class); var name = GetFunctionIdentifier(function);
typePrinter.PopContext(); typePrinter.PopContext();
@ -1554,7 +1558,7 @@ namespace CppSharp.Generators.CSharp
@params.Add("int " + GeneratedIdentifier("forBases")); @params.Add("int " + GeneratedIdentifier("forBases"));
WriteLine("public unsafe static extern {0} {1}({2});", retType, WriteLine("public unsafe static extern {0} {1}({2});", retType,
GetFunctionIdentifier(function, @class), GetFunctionIdentifier(function),
string.Join(", ", @params)); string.Join(", ", @params));
NeedNewLine(); NeedNewLine();
} }

Loading…
Cancel
Save