Browse Source

Merge pull request #544 from genuinelucifer/fixedArrayValueType

Fixed getter code for static Ref Type arrays.
pull/546/head
Dimitar Dobrev 10 years ago
parent
commit
98986cc8d6
  1. 10
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  2. 6
      tests/CSharpTemp/CSharpTemp.h

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

@ -1018,15 +1018,19 @@ namespace CppSharp.Generators.CSharp @@ -1018,15 +1018,19 @@ namespace CppSharp.Generators.CSharp
var location = string.Format("CppSharp.SymbolResolver.ResolveSymbol(\"{0}\", \"{1}\")",
libSymbol.Item1, libSymbol.Item2);
WriteLine("var {0} = ({1}*){2};", Generator.GeneratedIdentifier("ptr"),
@var.Type, location);
var isRefTypeArray = decl.Type is ArrayType && @class != null && @class.IsRefType;
if (isRefTypeArray)
WriteLine("var {0} = (byte*){1};", Generator.GeneratedIdentifier("ptr"), location);
else
WriteLine("var {0} = ({1}*){2};", Generator.GeneratedIdentifier("ptr"),
@var.Type, location);
TypePrinter.PopContext();
var ctx = new CSharpMarshalContext(Driver)
{
ArgName = decl.Name,
ReturnVarName = "*" + Generator.GeneratedIdentifier("ptr"),
ReturnVarName = (isRefTypeArray ? string.Empty : "*") + Generator.GeneratedIdentifier("ptr"),
ReturnType = new QualifiedType(var.Type)
};

6
tests/CSharpTemp/CSharpTemp.h

@ -694,3 +694,9 @@ public: @@ -694,3 +694,9 @@ public:
OverrideFromIndirectSecondaryBase();
int property();
};
class DLL_API TestVariableWithFixedArrayType
{
public:
static Foo variableWithFixedArrayType[2];
};

Loading…
Cancel
Save