/// <inheritdoc /> public override string ToString() { return(nativeType.ToString()); }
private void WriteNativeType(NativeType nativeType, MarshalInfo?marshalInfo = null) { switch (nativeType) { case NativeType.None: break; case NativeType.Boolean: _output.Write("bool"); break; case NativeType.I1: _output.Write("int8"); break; case NativeType.U1: _output.Write("unsigned int8"); break; case NativeType.I2: _output.Write("int16"); break; case NativeType.U2: _output.Write("unsigned int16"); break; case NativeType.I4: _output.Write("int32"); break; case NativeType.U4: _output.Write("unsigned int32"); break; case NativeType.I8: _output.Write("int64"); break; case NativeType.U8: _output.Write("unsigned int64"); break; case NativeType.R4: _output.Write("float32"); break; case NativeType.R8: _output.Write("float64"); break; case NativeType.LPStr: _output.Write("lpstr"); break; case NativeType.Int: _output.Write("int"); break; case NativeType.UInt: _output.Write("unsigned int"); break; case NativeType.Func: goto default; // ?? case NativeType.Array: var ami = marshalInfo as ArrayMarshalInfo; if (ami == null) { goto default; } if (ami.ElementType != NativeType.Max) { WriteNativeType(ami.ElementType); } _output.Write('['); if (ami.SizeParameterMultiplier == 0) { _output.Write(ami.Size.ToString()); } else { if (ami.Size >= 0) { _output.Write(ami.Size.ToString()); } _output.Write(" + "); _output.Write(ami.SizeParameterIndex.ToString()); } _output.Write(']'); break; case NativeType.Currency: _output.Write("currency"); break; case NativeType.BStr: _output.Write("bstr"); break; case NativeType.LPWStr: _output.Write("lpwstr"); break; case NativeType.LPTStr: _output.Write("lptstr"); break; case NativeType.FixedSysString: _output.Write("fixed sysstring[{0}]", (marshalInfo as FixedSysStringMarshalInfo)?.Size ?? 0); break; case NativeType.IUnknown: _output.Write("iunknown"); break; case NativeType.IDispatch: _output.Write("idispatch"); break; case NativeType.Struct: _output.Write("struct"); break; case NativeType.IntF: _output.Write("interface"); break; case NativeType.SafeArray: _output.Write("safearray "); var sami = marshalInfo as SafeArrayMarshalInfo; if (sami != null) { switch (sami.ElementType) { case VariantType.None: break; case VariantType.I2: _output.Write("int16"); break; case VariantType.I4: _output.Write("int32"); break; case VariantType.R4: _output.Write("float32"); break; case VariantType.R8: _output.Write("float64"); break; case VariantType.CY: _output.Write("currency"); break; case VariantType.Date: _output.Write("date"); break; case VariantType.BStr: _output.Write("bstr"); break; case VariantType.Dispatch: _output.Write("idispatch"); break; case VariantType.Error: _output.Write("error"); break; case VariantType.Bool: _output.Write("bool"); break; case VariantType.Variant: _output.Write("variant"); break; case VariantType.Unknown: _output.Write("iunknown"); break; case VariantType.Decimal: _output.Write("decimal"); break; case VariantType.I1: _output.Write("int8"); break; case VariantType.UI1: _output.Write("unsigned int8"); break; case VariantType.UI2: _output.Write("unsigned int16"); break; case VariantType.UI4: _output.Write("unsigned int32"); break; case VariantType.Int: _output.Write("int"); break; case VariantType.UInt: _output.Write("unsigned int"); break; default: _output.Write(sami.ElementType.ToString()); break; } } break; case NativeType.FixedArray: _output.Write("fixed array"); var fami = marshalInfo as FixedArrayMarshalInfo; if (fami != null) { _output.Write("[{0}]", fami.Size); if (fami.ElementType != NativeType.None) { _output.Write(' '); WriteNativeType(fami.ElementType); } } break; case NativeType.ByValStr: _output.Write("byvalstr"); break; case NativeType.ANSIBStr: _output.Write("ansi bstr"); break; case NativeType.TBStr: _output.Write("tbstr"); break; case NativeType.VariantBool: _output.Write("variant bool"); break; case NativeType.ASAny: _output.Write("as any"); break; case NativeType.LPStruct: _output.Write("lpstruct"); break; case NativeType.CustomMarshaler: var cmi = marshalInfo as CustomMarshalInfo; if (cmi == null) { goto default; } _output.Write("custom(\"{0}\", \"{1}\"", TextWriterTokenWriter.ConvertString(cmi.ManagedType.FullName), TextWriterTokenWriter.ConvertString(cmi.Cookie)); if (cmi.Guid != Guid.Empty || !string.IsNullOrEmpty(cmi.UnmanagedType)) { _output.Write(", \"{0}\", \"{1}\"", cmi.Guid.ToString(), TextWriterTokenWriter.ConvertString(cmi.UnmanagedType)); } _output.Write(')'); break; case NativeType.Error: _output.Write("error"); break; default: _output.Write(nativeType.ToString()); break; } }
private void WriteNativeType(NativeType nativeType, MarshalInfo marshalInfo = null) { switch (nativeType) { case NativeType.None: break; case NativeType.Boolean: WriteKeyword("bool"); break; case NativeType.I1: WriteKeyword("int8"); break; case NativeType.U1: WriteKeyword("unsigned int8"); break; case NativeType.I2: WriteKeyword("int16"); break; case NativeType.U2: WriteKeyword("unsigned int16"); break; case NativeType.I4: WriteKeyword("int32"); break; case NativeType.U4: WriteKeyword("unsigned int32"); break; case NativeType.I8: WriteKeyword("int64"); break; case NativeType.U8: WriteKeyword("unsigned int64"); break; case NativeType.R4: WriteKeyword("float32"); break; case NativeType.R8: WriteKeyword("float64"); break; case NativeType.LPStr: WriteKeyword("lpstr"); break; case NativeType.Int: WriteKeyword("int"); break; case NativeType.UInt: WriteKeyword("unsigned int"); break; case NativeType.Func: goto default; case NativeType.Array: ArrayMarshalInfo ami = (ArrayMarshalInfo)marshalInfo; if (ami == null) goto default; if (ami.ElementType != NativeType.Max) WriteNativeType(ami.ElementType); WriteToken("["); if (ami.SizeParameterMultiplier == 0) { WriteLiteral(ami.Size.ToString()); } else { if (ami.Size >= 0) WriteLiteral(ami.Size.ToString()); WriteSpace(); WriteToken("+"); WriteSpace(); WriteLiteral(ami.SizeParameterIndex.ToString()); } WriteToken("]"); break; case NativeType.Currency: WriteKeyword("currency"); break; case NativeType.BStr: WriteKeyword("bstr"); break; case NativeType.LPWStr: WriteKeyword("lpwstr"); break; case NativeType.LPTStr: WriteKeyword("lptstr"); break; case NativeType.FixedSysString: WriteKeyword(string.Format("fixed sysstring[{0}]", ((FixedSysStringMarshalInfo)marshalInfo).Size)); break; case NativeType.IUnknown: WriteKeyword("iunknown"); break; case NativeType.IDispatch: WriteKeyword("idispatch"); break; case NativeType.Struct: WriteKeyword("struct"); break; case NativeType.IntF: WriteKeyword("interface"); break; case NativeType.SafeArray: WriteKeyWordPostSpace("safearray"); SafeArrayMarshalInfo sami = marshalInfo as SafeArrayMarshalInfo; if (sami != null) { switch (sami.ElementType) { case VariantType.None: break; case VariantType.I2: WriteKeyword("int16"); break; case VariantType.I4: WriteKeyword("int32"); break; case VariantType.R4: WriteKeyword("float32"); break; case VariantType.R8: WriteKeyword("float64"); break; case VariantType.CY: WriteKeyword("currency"); break; case VariantType.Date: WriteKeyword("date"); break; case VariantType.BStr: WriteKeyword("bstr"); break; case VariantType.Dispatch: WriteKeyword("idispatch"); break; case VariantType.Error: WriteKeyword("error"); break; case VariantType.Bool: WriteKeyword("bool"); break; case VariantType.Variant: WriteKeyword("variant"); break; case VariantType.Unknown: WriteKeyword("iunknown"); break; case VariantType.Decimal: WriteKeyword("decimal"); break; case VariantType.I1: WriteKeyword("int8"); break; case VariantType.UI1: WriteKeyword("unsigned int8"); break; case VariantType.UI2: WriteKeyword("unsigned int16"); break; case VariantType.UI4: WriteKeyword("unsigned int32"); break; case VariantType.Int: WriteKeyword("int"); break; case VariantType.UInt: WriteKeyword("unsigned int"); break; default: WriteKeyword(sami.ElementType.ToString()); break; } } break; case NativeType.FixedArray: WriteKeyword("fixed array"); FixedArrayMarshalInfo fami = marshalInfo as FixedArrayMarshalInfo; if (fami != null) { WriteToken("["); WriteLiteral(fami.Size.ToString()); WriteToken("]"); if (fami.ElementType != NativeType.None) { WriteSpace(); WriteNativeType(fami.ElementType); } } break; case NativeType.ByValStr: WriteKeyword("byvalstr"); break; case NativeType.ANSIBStr: WriteKeyword("ansi bstr"); break; case NativeType.TBStr: WriteKeyword("tbstr"); break; case NativeType.VariantBool: WriteKeyword("variant bool"); break; case NativeType.ASAny: WriteKeyword("as any"); break; case NativeType.LPStruct: WriteKeyword("lpstruct"); break; case NativeType.CustomMarshaler: CustomMarshalInfo cmi = marshalInfo as CustomMarshalInfo; if (cmi == null) goto default; WriteKeyword("custom"); WriteToken("("); WriteLiteralInQuotes(ConvertString(cmi.ManagedType.FullName)); WriteTokenPostSpace(","); WriteLiteralInQuotes(ConvertString(cmi.Cookie)); if (cmi.Guid != Guid.Empty || !string.IsNullOrEmpty(cmi.UnmanagedType)) { WriteTokenPostSpace(","); WriteLiteralInQuotes(cmi.Guid.ToString()); WriteTokenPostSpace(","); WriteLiteralInQuotes(ConvertString(cmi.UnmanagedType)); } WriteToken(")"); break; case NativeType.Error: WriteKeyword("error"); break; default: WriteKeyword(nativeType.ToString()); break; } }