From 7d13f3aa3f4ccf7c9c1c72ef182fd311663c6cd6 Mon Sep 17 00:00:00 2001 From: Nick Holland Date: Wed, 12 Oct 2016 15:50:15 +0100 Subject: [PATCH 1/1] C# property script modified to support View control remame Now how a look up table to support renaming of C++ classes in to C#. E.g. Control -> View Change-Id: I6cc071792909e3e1cd12e13f15268faf0deb859b --- plugins/dali-swig/property-wrapper.rb | 39 ++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/plugins/dali-swig/property-wrapper.rb b/plugins/dali-swig/property-wrapper.rb index 1f3fc62..e548f61 100755 --- a/plugins/dali-swig/property-wrapper.rb +++ b/plugins/dali-swig/property-wrapper.rb @@ -26,13 +26,28 @@ $typeTable = [ ["ARRAY", "Dali.Property.Array", "", "Dali.Property.Array temp = new Dali.Property.Array();"], ["MAP", "Dali.Property.Map", "", "Dali.Property.Map temp = new Dali.Property.Map();"], ] + +# Some csharp classes are renamed ( e.g. C++ Control is called View in C#) +$renameMap = [ + ["Control", "View"] + ] + $daliSwigPath = String.new; +def getCSharpName( cppClassName ) + + entry = $renameMap.select{ |a| a.first == cppClassName } + if( entry.empty?) + return cppClassName + end + return entry[0][1] +end + # use the table above to get information for a specific type def getCSharpType( type ) entry = $typeTable.select{ |a| a.first == type } - if( entry == nil ) + if( entry.empty? ) return nil end return entry[0] @@ -182,7 +197,11 @@ def writePropertiesToCSharpFile( daliClass ) # open the CSharp file autogenerated by SWIG swigFiles = $daliSwigPath + "/automatic/csharp/" - fileName =(swigFiles+daliClass.name) + ".cs" + # some C++ classes are renamed for C# + className = getCSharpName( daliClass.name ) + + fileName =(swigFiles + className ) + ".cs" + # it's possible some classes in dali-core aren't being wrapped by swig, so if the swig generated file # doesn't exist just return @@ -212,7 +231,7 @@ def writePropertiesToCSharpFile( daliClass ) file.write("\n}\n\n}"); # re-insert the closing brackets we over-wrote end - puts("Injected #{daliClass.properties.length} C# Properties into #{daliClass.name}.cs".blueBackground) + puts("Injected #{daliClass.properties.length} C# Properties from #{daliClass.name} into #{className}.cs".blueBackground) end @@ -222,7 +241,7 @@ def writeChildPropertiesToCSharpFile( daliClass ) swigFiles = $daliSwigPath + "/automatic/csharp/" # Add all the child properties to Control - fileName = (swigFiles+"Control") + ".cs" + fileName = (swigFiles+"View") + ".cs" if( ! File.exist?(fileName) ) return @@ -252,7 +271,7 @@ def writeChildPropertiesToCSharpFile( daliClass ) file.write("\n}\n\n}"); # re-insert the closing brackets we over-wrote end - puts("Injected #{$childPropertyCount} C# Child Properties into #{"Control"}.cs".blueBackground) + puts("Injected #{$childPropertyCount} C# Child Properties into #{"View"}.cs".blueBackground) end @@ -263,6 +282,7 @@ def writeCSharpData #puts ( daliClass.name ) + hasChildProperties = false for property in daliClass.properties @@ -279,10 +299,13 @@ def writeCSharpData propertyArg = propertyInfo[2] # e.g. ref or out tempDeclaration = propertyInfo[3] # e.g. bool temp; - propertyName = "#{daliClass.name}.Property.#{property.enum}" + csharpClassName = getCSharpName(daliClass.name); + + + propertyName = "#{csharpClassName}.Property.#{property.enum}" if property.childProperty - propertyName = "#{daliClass.name}.ChildProperty.#{property.enum}" + propertyName = "#{csharpClassName}.ChildProperty.#{property.enum}" hasChildProperties = true end @@ -308,7 +331,7 @@ def writeCSharpData end # write normal properties to the class's own csharp file writePropertiesToCSharpFile( daliClass ) - # write child properties to Control.cs + # write child properties to View.cs ( on Control has child properties) if (hasChildProperties) writeChildPropertiesToCSharpFile( daliClass ) end -- 2.7.4