Example #1
0
 public void WriteGenericConstraint(TrampolineContext context, CSharpCodeWriter writer)
 {
     writer.Write("where ");
     writer.WriteIdentifier(GenericParameterName);
     writer.Write(" : unmanaged, ");
     writer.Using(ConstraintInterfaceNamespace);
     writer.WriteIdentifier(ConstraintInterfaceTypeName);
     writer.WriteLine();
 }
Example #2
0
    public override void WriteOutputArgument(TrampolineContext context, CSharpCodeWriter writer)
    {
        writer.Write('(');
        context.WriteType(OutputType);
        writer.Write(')');

        if (ByRefKind is not null)
        {
            writer.WriteIdentifier(TemporaryName);
        }
        else
        {
            writer.WriteIdentifier(Name);
        }
    }
Example #3
0
    public override bool WriteBlockBeforeCall(TrampolineContext context, CSharpCodeWriter writer)
    {
        if (ByRefKind is not ByRefKind byRefKind)
        {
            return(false);
        }

        writer.Write("fixed (");
        context.WriteType(TemporaryType);
        writer.Write(' ');
        writer.WriteIdentifier(TemporaryName);
        writer.Write(" = ");
        writer.Write('&');
        writer.WriteIdentifier(Name);
        writer.WriteLine(')');
        return(true);
    }
Example #4
0
 public void WriteGenericParameter(TrampolineContext context, CSharpCodeWriter writer)
 => writer.WriteIdentifier(GenericParameterName);
Example #5
0
 public override void WritePrologue(TrampolineContext context, CSharpCodeWriter writer)
 {
 }