package sharpen.xobotos.api.interop; import org.eclipse.jdt.core.dom.ITypeBinding; import sharpen.core.csharp.ast.CSExpression; import sharpen.core.csharp.ast.CSTypeDeclaration; import sharpen.core.csharp.ast.CSTypeReferenceExpression; import sharpen.xobotos.api.interop.Signature.Flags; import sharpen.xobotos.api.interop.Signature.Mode; import sharpen.xobotos.api.interop.glue.AbstractTypeReference; import sharpen.xobotos.api.interop.glue.CompilationUnit; import sharpen.xobotos.api.interop.glue.CompilationUnitHeader; import sharpen.xobotos.api.interop.glue.Expression; public abstract class AbstractNativeTypeBuilder implements IncludeFileProvider { private final NativeBuilder _builder; private final ITypeBinding _type; public AbstractNativeTypeBuilder(NativeBuilder builder, ITypeBinding type) { this._builder = builder; this._type = type; } public final NativeBuilder getNativeBuilder() { return _builder; } public final NativeConfiguration getConfig() { return _builder.getConfig(); } public final ITypeBinding getType() { return _type; } public abstract boolean resolve(IMarshalContext context); public abstract boolean build(); public abstract boolean createManagedType(CSTypeDeclaration parent); public abstract boolean createNativeType(CompilationUnit unit); public abstract boolean createHeader(CompilationUnitHeader header); public abstract CSTypeReferenceExpression getPInvokeType(); public abstract CSTypeReferenceExpression getManagedType(); public abstract AbstractTypeReference getNativeType(); public abstract AbstractTypeReference getRealNativeType(); public abstract AbstractTypeReference getNativePInvokeType(); public abstract void marshalManaged(IManagedMarshalContext context, CSExpression expr, Mode mode, Flags flags); public abstract CSExpression marshalRetval(IManagedReturnContext context, CSExpression expr); public abstract void marshalNative(INativeMarshalContext context, Mode mode, Flags flags); public abstract Expression marshalNativeRetval(Expression expr); }