Browse Source

Revert "Shortened the generated C# code for patching v-tables."

This reverts commit 2486d1d419.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1133/head
Dimitar Dobrev 9 years ago
parent
commit
22bd02c849
  1. 15
      src/Generator/Generators/CSharp/CSharpSources.cs

15
src/Generator/Generators/CSharp/CSharpSources.cs

@ -1448,14 +1448,18 @@ namespace CppSharp.Generators.CSharp
WriteStartBraceIndent(); WriteStartBraceIndent();
WriteLine("_Thunks = new void*[{0}];", wrappedEntries.Count); WriteLine("_Thunks = new void*[{0}];", wrappedEntries.Count);
var uniqueEntries = new HashSet<VTableComponent>();
for (int i = 0; i < wrappedEntries.Count; i++) for (int i = 0; i < wrappedEntries.Count; i++)
{ {
var entry = wrappedEntries[i]; var entry = wrappedEntries[i];
var method = entry.Method; var method = entry.Method;
var name = GetVTableMethodDelegateName(method); var name = GetVTableMethodDelegateName(method);
WriteLine($@"_Thunks[{i}] = Marshal.GetFunctionPointerForDelegate(new { var instance = name + "Instance";
GetDelegateName(method, @class.TranslationUnit.Module.OutputNamespace) if (uniqueEntries.Add(entry))
}({name}Hook)).ToPointer();"); WriteLine("{0} += {1}Hook;", instance, name);
WriteLine("_Thunks[{0}] = Marshal.GetFunctionPointerForDelegate({1}).ToPointer();",
i, instance);
} }
WriteCloseBraceIndent(); WriteCloseBraceIndent();
@ -1723,6 +1727,11 @@ namespace CppSharp.Generators.CSharp
var vTableMethodDelegateName = GetVTableMethodDelegateName(method); var vTableMethodDelegateName = GetVTableMethodDelegateName(method);
WriteLine("private static {0} {1}Instance;",
GetDelegateName(method, @class.TranslationUnit.Module.OutputNamespace),
vTableMethodDelegateName);
NewLine();
WriteLine("private static {0} {1}Hook({2})", retType, vTableMethodDelegateName, WriteLine("private static {0} {1}Hook({2})", retType, vTableMethodDelegateName,
string.Join(", ", @params)); string.Join(", ", @params));
WriteStartBraceIndent(); WriteStartBraceIndent();

Loading…
Cancel
Save