From 275b4a16960698c318a99271588c02230f742134 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sat, 28 Sep 2013 14:49:32 +0300 Subject: [PATCH] Filled in the setting of a fixed array. Signed-off-by: Dimitar Dobrev --- .../Generators/CSharp/CSharpMarshal.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Generator/Generators/CSharp/CSharpMarshal.cs b/src/Generator/Generators/CSharp/CSharpMarshal.cs index a1ada4db..cdffc117 100644 --- a/src/Generator/Generators/CSharp/CSharpMarshal.cs +++ b/src/Generator/Generators/CSharp/CSharpMarshal.cs @@ -374,7 +374,26 @@ namespace CppSharp.Generators.CSharp if (!VisitType(array, quals)) return false; - Context.Return.Write("null"); + switch (array.SizeType) + { + case ArrayType.ArraySize.Constant: + StringBuilder arrayBuilder = new StringBuilder(); + arrayBuilder.AppendFormat("if (value.Length != {0})", array.Size); + arrayBuilder.AppendLine(); + arrayBuilder.AppendFormat( + " throw new ArgumentException(\"The value must be an array of size {0}.\");", + array.Size); + arrayBuilder.AppendLine(); + arrayBuilder.AppendFormat("fixed ({0}* v = value)", array.Type); + arrayBuilder.AppendLine(); + arrayBuilder.Append(" *"); + Context.SupportBefore.Write(arrayBuilder.ToString()); + Context.Return.Write("*v"); + break; + default: + Context.Return.Write("null"); + break; + } return true; }