From 9d1687dbc45cd5f0e16e8da99b251907915274ba Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sun, 10 Nov 2013 18:22:40 +0200 Subject: [PATCH] Improved the property generation by matching with an "is" prefix for read-write properties. Signed-off-by: Dimitar Dobrev --- .../Passes/GetterSetterToPropertyAdvancedPass.cs | 16 +++++++++++----- tests/CSharpTemp/CSharpTemp.cpp | 10 ++++++++++ tests/CSharpTemp/CSharpTemp.h | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs index 80586b00..d2efaf2f 100644 --- a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs +++ b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs @@ -93,11 +93,7 @@ namespace CppSharp.Passes string afterSet = nameBuilder.ToString(); foreach (var getter in nonSetters.Where(m => m.Namespace == type)) { - string name = GetPropertyName(getter.Name); - if (name.StartsWith("is")) - { - name = char.ToLowerInvariant(name[2]) + name.Substring(3); - } + var name = GetReadWritePropertyName(getter, afterSet); if (name == afterSet && GetUnderlyingType(getter.OriginalReturnType).Equals( GetUnderlyingType(setter.Parameters[0].QualifiedType)) && @@ -136,6 +132,16 @@ namespace CppSharp.Passes } } + private static string GetReadWritePropertyName(INamedDecl getter, string afterSet) + { + string name = GetPropertyName(getter.Name); + if (name != afterSet && name.StartsWith("is")) + { + name = char.ToLowerInvariant(name[2]) + name.Substring(3); + } + return name; + } + private static Type GetUnderlyingType(QualifiedType type) { TagType tagType = type.Type as TagType; diff --git a/tests/CSharpTemp/CSharpTemp.cpp b/tests/CSharpTemp/CSharpTemp.cpp index ec5840ac..08de6da0 100644 --- a/tests/CSharpTemp/CSharpTemp.cpp +++ b/tests/CSharpTemp/CSharpTemp.cpp @@ -164,3 +164,13 @@ void P::setTest(bool value) { } + +bool P::isBool() +{ + return false; +} + +void P::setIsBool(bool value) +{ + +} diff --git a/tests/CSharpTemp/CSharpTemp.h b/tests/CSharpTemp/CSharpTemp.h index 00bac024..e2537353 100644 --- a/tests/CSharpTemp/CSharpTemp.h +++ b/tests/CSharpTemp/CSharpTemp.h @@ -115,6 +115,9 @@ public: bool isTest(); void setTest(bool value); + bool isBool(); + void setIsBool(bool value); + private: ComplexType m_complexType; };