Browse Source

Fixed the generation of v-table calls to property setters. Ignored methods that are only named "get" and similar, as properties.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/77/head
Dimitar Dobrev 12 years ago
parent
commit
27f8e28036
  1. 15
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  2. 5
      src/Generator/Passes/GetterSetterToPropertyPass.cs

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

@ -1264,9 +1264,18 @@ namespace CppSharp.Generators.CSharp @@ -1264,9 +1264,18 @@ namespace CppSharp.Generators.CSharp
}
else
{
var name = ((Class) method.Namespace).Properties.First(
p => p.GetMethod == method || p.SetMethod == method).Name;
WriteLine("target.{0};", name);
var property = ((Class) method.Namespace).Properties.FirstOrDefault(
p => p.GetMethod == method);
if (property == null)
{
property = ((Class) method.Namespace).Properties.First(
p => p.SetMethod == method);
WriteLine("target.{0} = {1};", property.Name, string.Join(", ", marshals));
}
else
{
WriteLine("target.{0};", property.Name);
}
}
// TODO: Handle hidden structure return types.

5
src/Generator/Passes/GetterSetterToPropertyPass.cs

@ -182,7 +182,7 @@ namespace CppSharp.Passes @@ -182,7 +182,7 @@ namespace CppSharp.Passes
private void DistributeMethod(Method method)
{
if (GetFirstWord(method.Name) == "set" &&
if (GetFirstWord(method.Name) == "set" && method.Name.Length > 3 &&
method.ReturnType.Type.IsPrimitiveType(PrimitiveType.Void))
{
if (method.Parameters.Count == 1)
@ -205,7 +205,8 @@ namespace CppSharp.Passes @@ -205,7 +205,8 @@ namespace CppSharp.Passes
method.Parameters.Count > 0 || method.IsDestructor)
return false;
var result = GetFirstWord(method.Name);
return result == "get" || result == "is" || result == "has" ||
return (result.Length < method.Name.Length &&
(result == "get" || result == "is" || result == "has")) ||
(result != "to" && result != "new" && !verbs.Contains(result));
}

Loading…
Cancel
Save