public override StatementSyntax GenerateNativeToManaged()

in SharpGen/Generator/Marshallers/BoolToIntArrayMarshaller.cs [60:108]


        public override StatementSyntax GenerateNativeToManaged(CsMarshalBase csElement, bool singleStackFrame)
        {
            var marshalStorage = GetMarshalStorageLocation(csElement);

            StatementSyntax value;
            if (singleStackFrame)
            {
                value = EmitConvertToBoolArray(marshalStorage);
            }
            else if (csElement is CsField)
            {
                marshalStorage = PrefixUnaryExpression(SyntaxKind.AddressOfExpression, marshalStorage);

                value = FixedStatement(
                    VariableDeclaration(
                        GetMarshalTypeSyntax(csElement),
                        SingletonSeparatedList(
                            VariableDeclarator(PtrIdentifier, default, EqualsValueClause(marshalStorage))
                        )
                    ),
                    EmitConvertToBoolArray(PtrIdentifierName)
                );
            }
            else // Reverse-callbacks
            {
                value = EmitConvertToBoolArray(marshalStorage);
            }

            return GenerateNullCheckIfNeeded(csElement, value);

            ExpressionStatementSyntax EmitConvertToBoolArray(ExpressionSyntax storage) => ExpressionStatement(
                InvocationExpression(
                    MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        GlobalNamespace.GetTypeNameSyntax(WellKnownName.BooleanHelpers),
                        IdentifierName("ConvertToBoolArray")
                    ),
                    ArgumentList(
                        SeparatedList(
                            new[]
                            {
                                Argument(storage),
                                Argument(IdentifierName(csElement.Name))
                            }
                        )
                    )
                )
            );
        }