Browse Source

Simplified the generated code for v-tables.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/551/head
Dimitar Dobrev 11 years ago
parent
commit
235c556374
  1. 10
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

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

@ -1327,21 +1327,21 @@ namespace CppSharp.Generators.CSharp
private void GenerateVTableClassSetup(Class @class, string dictionary, private void GenerateVTableClassSetup(Class @class, string dictionary,
IList<VTableComponent> entries, IList<VTableComponent> wrappedEntries) IList<VTableComponent> entries, IList<VTableComponent> wrappedEntries)
{ {
WriteLine("void SetupVTables(global::System.IntPtr instance)"); WriteLine("void SetupVTables()");
WriteStartBraceIndent(); WriteStartBraceIndent();
WriteLine("var native = (Internal*)instance.ToPointer();"); WriteLine("var native = (Internal*) {0}.ToPointer();", Helpers.InstanceIdentifier);
NewLine(); NewLine();
WriteLine("if (_References == null)"); WriteLine("if (_References == null)");
WriteLineIndent("_References = new {0}<IntPtr, WeakReference>();", dictionary); WriteLineIndent("_References = new {0}<IntPtr, WeakReference>();", dictionary);
NewLine(); NewLine();
WriteLine("if (_References.ContainsKey(instance))"); WriteLine("if (_References.ContainsKey({0}))", Helpers.InstanceIdentifier);
WriteLineIndent("return;"); WriteLineIndent("return;");
NewLine(); NewLine();
WriteLine("_References[instance] = new WeakReference(this);"); WriteLine("_References[{0}] = new WeakReference(this);", Helpers.InstanceIdentifier);
NewLine(); NewLine();
// Save the original vftable pointers. // Save the original vftable pointers.
@ -1473,7 +1473,7 @@ namespace CppSharp.Generators.CSharp
PushIndent(); PushIndent();
} }
WriteLine("SetupVTables({0});", Generator.GeneratedIdentifier("Instance")); WriteLine("SetupVTables();");
if (addPointerGuard) if (addPointerGuard)
PopIndent(); PopIndent();

Loading…
Cancel
Save