/// <summary> /// Allows the interface name to be specified explicitly. /// </summary> public InterfaceNativeType(NativeTypeDesc desc, TypeName typeName) : base(desc) { this.typeName = typeName; this.isVariant = false; this.indirections++; }
protected internal static void PrintNameTo(TypeName typeName, int indirections, ICodePrinter printer, PrintFlags flags) { if (printer == null) throw new ArgumentNullException(nameof(printer)); string output; if ((flags & PrintFlags.UsePlainC) == PrintFlags.UsePlainC) { output = typeName.PlainC; } else { output = typeName.WinApi; if (indirections > 0) { switch (typeName.PointerPrefix) { case TypeName.PtrPrefix.P_Prefix: { output = "P" + output; indirections--; break; } case TypeName.PtrPrefix.LP_Prefix: { output = "LP" + output; indirections--; break; } } } } TypeName.PrintTo(printer, output); if (indirections > 0) { if (!output.EndsWith("*")) printer.Print(OutputType.Other, " "); while (indirections-- > 0) { printer.Print(OutputType.Operator, "*"); } } }
public PrimitiveNativeType(TypeName typeName, bool platform64bit) : this(typeName, 0, platform64bit) { }
public PrimitiveNativeType(NativeTypeDesc desc, UnmanagedType[] allowedUnmanagedTypes) : this(desc) { if (desc == null) throw new ArgumentNullException(nameof(desc)); UnmanagedType unmng_type = ValidateUnmanagedType(desc, allowedUnmanagedTypes); if (desc.Type == typeof(bool)) { // Boolean as I1 and I2 should print 'bool' as the plain C++ type if (unmng_type == UnmanagedType.I1) typeName = TypeName.I1_Bool; if (unmng_type == UnmanagedType.U1) typeName = TypeName.U1_Bool; } if (typeName.IsEmpty) { typeName = TypeName.GetTypeNameForUnmanagedType(unmng_type); Debug.Assert(!typeName.IsEmpty); } if (unmng_type == UnmanagedType.SysInt || unmng_type == UnmanagedType.SysUInt) { // IntPtr and UIntPtr translate into "void *" indirections++; } }
public PrimitiveNativeType(TypeName typeName, int indirections, bool platform64bit) { this.typeName = typeName; this.platform64bit = platform64bit; this.indirections = indirections; }