Browse Source

Simplified GetFunctionIdentifier and GetFunctionNativeIdentifier.

pull/45/merge
triton 12 years ago
parent
commit
9dfb30265e
  1. 44
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

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

@ -2020,48 +2020,38 @@ namespace CppSharp.Generators.CSharp
throw new NotSupportedException(); throw new NotSupportedException();
} }
public string GetFunctionIdentifier(Function function) public static string GetFunctionIdentifier(Function function)
{ {
var printer = TypePrinter as CSharpTypePrinter; var identifier = SafeIdentifier(function.Name);
var isNativeContext = printer.ContextKind == CSharpTypePrinterContextKind.Native;
var method = function as Method;
if (method == null || !method.IsOperator)
return identifier;
string identifier;
bool isBuiltin; bool isBuiltin;
identifier = GetOperatorIdentifier(method.OperatorKind, out isBuiltin);
return identifier;
}
public static string GetFunctionNativeIdentifier(Function function)
{
var identifier = SafeIdentifier(function.Name);;
var method = function as Method; var method = function as Method;
if (method != null && method.IsOperator) if (method != null && method.IsOperator)
{
if (isNativeContext)
identifier = "Operator" + method.OperatorKind.ToString(); identifier = "Operator" + method.OperatorKind.ToString();
else
identifier = GetOperatorIdentifier(method.OperatorKind, out isBuiltin);
}
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 (index >= 0)
identifier += index.ToString(CultureInfo.InvariantCulture); identifier += index.ToString(CultureInfo.InvariantCulture);
return identifier; return identifier;
} }
public string GetFunctionNativeIdentifier(Function function)
{
var typePrinter = TypePrinter as CSharpTypePrinter;
typePrinter.PushContext(CSharpTypePrinterContextKind.Native);
var name = GetFunctionIdentifier(function);
typePrinter.PopContext();
return name;
}
public void GenerateInternalFunction(Function function) public void GenerateInternalFunction(Function function)
{ {
if (!function.IsProcessed || function.ExplicityIgnored) if (!function.IsProcessed || function.ExplicityIgnored)

Loading…
Cancel
Save