示例#1
0
 public virtual TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement) =>
 implementation.GetMarshalTypeSyntax(csElement);
 public bool CanMarshal(CsMarshalBase csElement)
 {
     return(csElement.IsArray && csElement.IsInterface);
 }
 public bool CanMarshal(CsMarshalBase csElement) => csElement.IsValueType && csElement.IsArray &&
 !csElement.MappedToDifferentPublicType &&
 csElement is CsField;
示例#4
0
 public StatementSyntax GenerateNativeToManaged(CsMarshalBase csElement, bool singleStackFrame) => null;
 public bool CanMarshal(CsMarshalBase csElement) => csElement.HasNativeValueType && !csElement.IsArray;
 public bool CanMarshal(CsMarshalBase csElement)
 {
     return(csElement is CsField field && field.IsBitField);
 }
示例#7
0
 public SyntaxToken GetMarshalStorageLocationIdentifier(CsMarshalBase csElement)
 {
     return(MarshallerBase.GetMarshalStorageLocationIdentifier(csElement));
 }
 public StatementSyntax GenerateNativeToManaged(CsMarshalBase csElement, bool singleStackFrame)
 {
     return(ExpressionStatement(AssignmentExpression(SyntaxKind.SimpleAssignmentExpression,
                                                     IdentifierName(csElement.Name),
                                                     GetMarshalStorageLocation(csElement))));
 }
示例#9
0
 public bool CanMarshal(CsMarshalBase csElement) => csElement.IsInterfaceArray;
示例#10
0
 public StatementSyntax GenerateNativeCleanup(CsMarshalBase csElement, bool singleStackFrame)
 {
     return(GenerateGCKeepAlive(csElement));
 }
 public bool CanMarshal(CsMarshalBase csElement)
 {
     return(csElement is CsField);
 }
示例#12
0
 public override bool CanMarshal(CsMarshalBase csElement) => csElement.IsBoolToInt && csElement.IsArray;
 public StatementSyntax GenerateNativeToManaged(CsMarshalBase csElement, bool singleStackFrame) =>
 LoopThroughArrayParameter(
     csElement,
     (publicElement, marshalElement) =>
     CreateMarshalStructStatement(csElement, StructMarshalMethod.From, publicElement, marshalElement)
     );
 public TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement) =>
 PointerType(ParseTypeName($"{csElement.PublicType.QualifiedName}.__Native"));
示例#15
0
 public override bool CanMarshal(CsMarshalBase csElement) => csElement.IsArray && csElement.IsInterface;
示例#16
0
 public TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement) => IntPtrType;
示例#17
0
 public static bool IsApplicable(CsMarshalBase csElement) => csElement is CsParameter
 {
 public abstract StatementSyntax GenerateNativeCleanup(CsMarshalBase csElement, bool singleStackFrame);
示例#19
0
 public bool CanMarshal(CsMarshalBase csElement) =>
 csElement is CsParameter
 {
示例#20
0
 public StatementSyntax GenerateManagedToNative(CsMarshalBase csElement, bool singleStackFrame)
 {
     return(null);
 }
示例#21
0
 public bool CanMarshal(CsMarshalBase csElement) =>
 csElement.PublicType is CsEnum && !csElement.IsArray && csElement is CsParameter;
示例#22
0
 public TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement)
 {
     return(PointerType(ParseTypeName(csElement.PublicType.QualifiedName)));
 }
示例#23
0
 public TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement) =>
 ParseTypeName(csElement.PublicType.QualifiedName);
示例#24
0
 public override StatementSyntax GenerateManagedToNative(CsMarshalBase csElement, bool singleStackFrame) =>
 LoopThroughArrayParameter(
     csElement,
     (publicElement, marshalElement) =>
     MarshalInterfaceInstanceToNative(csElement, publicElement, marshalElement)
     );
 public TypeSyntax GetMarshalTypeSyntax(CsMarshalBase csElement)
 {
     return(PointerType(IntPtrType));
 }
示例#26
0
 public override StatementSyntax GenerateNativeCleanup(CsMarshalBase csElement, bool singleStackFrame) =>
 GenerateGCKeepAlive(csElement);
 public StatementSyntax GenerateNativeCleanup(CsMarshalBase csElement, bool singleStackFrame)
 {
     return(null);
 }
示例#28
0
 public override StatementSyntax GenerateNativeToManaged(CsMarshalBase csElement, bool singleStackFrame) =>
 csElement switch
 {
 public StatementSyntax GenerateManagedToNative(CsMarshalBase csElement, bool singleStackFrame) =>
 GenerateCopyMemory(csElement, false);
示例#30
0
 public virtual bool CanMarshal(CsMarshalBase csElement) => implementation.CanMarshal(csElement);